skiko: Runtime SIGSEGV thrown on Linux ARM64 (libskiko-linux-arm64.so)
Hi, I am trying to run a project with Compose Multiplaftorm but have a runtime failure when running it on arm64 Linux (Raspberry Pi).
It was tested on 0.7.85.0 and v0.7.89.1 with Java 17 and 18.
Stacktrace:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000000000000000, pid=5731, tid=5761
#
# JRE version: OpenJDK Runtime Environment (17.0.9+9) (build 17.0.9+9-Debian-1deb12u1)
# Java VM: OpenJDK 64-Bit Server VM (17.0.9+9-Debian-1deb12u1, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# C [libskiko-linux-arm64.so+0x5fe9c8] GrGLBuffer::onUpdateData(void const*, unsigned long, unsigned long, bool)+0xc8
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# https://bugs.debian.org/openjdk-17
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- S U M M A R Y ------------
Command Line: -Dcompose.application.configure.swing.globals=true -Dcompose.application.resources.dir=/home/kikermo/mainframer/Matrix8/composeApp/build/compose/tmp/prepareAppResources -Dfile.encoding=UTF-8 -Duser.country=GB -Duser.language=en -Duser.variant org.kikermo.matrix8.MainKt
Host: AArch64, 4 cores, 3G, Debian GNU/Linux 12 (bookworm)
Time: Sun Dec 10 12:12:04 2023 GMT elapsed time: 1.801942 seconds (0d 0h 0m 1s)
--------------- T H R E A D ---------------
Current thread (0x00007fffa4590ac0): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=5761, stack(0x00007fff40250000,0x00007fff40450000)]
Stack: [0x00007fff40250000,0x00007fff40450000], sp=0x00007fff4044ae30, free space=2027k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libskiko-linux-arm64.so+0x5fe9c8] GrGLBuffer::onUpdateData(void const*, unsigned long, unsigned long, bool)+0xc8
C [libskiko-linux-arm64.so+0x5d0768] GrBufferAllocPool::unmap()+0x164
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.jetbrains.skia.DirectContextKt.DirectContext_nFlush(J)V+0
j org.jetbrains.skia.DirectContextKt.access$DirectContext_nFlush(J)V+1
j org.jetbrains.skia.DirectContext.flush()Lorg/jetbrains/skia/DirectContext;+10
j org.jetbrains.skiko.context.ContextHandler.flush()V+8
j org.jetbrains.skiko.context.ContextHandler.draw()V+72
j org.jetbrains.skiko.redrawer.LinuxOpenGLRedrawer.redrawImmediately()V+231
j org.jetbrains.skiko.SkiaLayer.paint(Ljava/awt/Graphics;)V+102
j androidx.compose.ui.awt.WindowComposeBridge$component$1.paint(Ljava/awt/Graphics;)V+15
j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+523 java.desktop@17.0.9
j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+318 java.desktop@17.0.9
j javax.swing.JLayeredPane.paint(Ljava/awt/Graphics;)V+73 java.desktop@17.0.9
j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V+523 java.desktop@17.0.9
j javax.swing.JComponent.paint(Ljava/awt/Graphics;)V+318 java.desktop@17.0.9
j androidx.compose.ui.window.Window_desktopKt$Window$12$1.invoke(Landroidx/compose/ui/awt/ComposeWindow;)V+86
j androidx.compose.ui.window.Window_desktopKt$Window$12$1.invoke(Ljava/lang/Object;)Ljava/lang/Object;+5
j androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$3.invoke()V+13
j androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$3.invoke()Ljava/lang/Object;+1
j androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2$performUpdate$1.invoke()V+7
j androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2$performUpdate$1.invoke()Ljava/lang/Object;+1
j androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;+108
j androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V+106
j androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V+92
j androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2.invoke$performUpdate(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/compose/runtime/State;)V+38
j androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2.invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;+59
j androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2.invoke(Ljava/lang/Object;)Ljava/lang/Object;+5
j androidx.compose.runtime.DisposableEffectImpl.onRemembered()V+8
j androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers()V+365
j androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Ljava/util/List;)V+246
j androidx.compose.runtime.CompositionImpl.applyChanges()V+38
j androidx.compose.runtime.Recomposer.composeInitial$runtime(Landroidx/compose/runtime/ControlledComposition;Lkotlin/jvm/functions/Function2;)V+267
j androidx.compose.runtime.CompositionImpl.setContent(Lkotlin/jvm/functions/Function2;)V+55
j androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2.invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;+89
j kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Ljava/lang/Object;)V+44
j kotlinx.coroutines.DispatchedTask.run()V+317
j java.awt.event.InvocationEvent.dispatch()V+47 java.desktop@17.0.9
j java.awt.EventQueue.dispatchEventImpl(Ljava/awt/AWTEvent;Ljava/lang/Object;)V+21 java.desktop@17.0.9
j java.awt.EventQueue$4.run()Ljava/lang/Void;+32 java.desktop@17.0.9
j java.awt.EventQueue$4.run()Ljava/lang/Object;+1 java.desktop@17.0.9
j java.security.AccessController.executePrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/lang/Class;)Ljava/lang/Object;+29 java.base@17.0.9
j java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+13 java.base@17.0.9
j java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;+18 java.base@17.0.9
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46 java.desktop@17.0.9
j java.awt.EventDispatchThread.pumpOneEventForFilters(I)V+78 java.desktop@17.0.9
j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+35 java.desktop@17.0.9
j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11 java.desktop@17.0.9
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4 java.desktop@17.0.9
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3 java.desktop@17.0.9
j java.awt.EventDispatchThread.run()V+9 java.desktop@17.0.9
v ~StubRoutines::call_stub
siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000
About this issue
- Original URL
- State: open
- Created 7 months ago
- Reactions: 2
- Comments: 21 (9 by maintainers)
@kikermo Seems like this helped me: https://github.com/JetBrains/skiko/issues/649 (For the Compose Multiplatform at least but worth a try for your case as well!)
@Phaestion Hi, yes I mentioned it in my first post in this thread: https://github.com/JetBrains/skiko/issues/838#issuecomment-1963910253