SIGSEGV in GraalVM 0.31
Arthur Peters
amp at cs.utexas.edu
Sun Feb 18 20:21:41 UTC 2018
I have run into a Graal VM crash (SIGSEGV) when executing compiled Scala
code. The problem occurs before Truffle initializes and only seems to
happen when UseJVMCICompiler is turned on. Currently reproducing this
crash requires running the entire Orc compiler
(https://github.com/orc-lang/orc) and the crash is non-deterministic
(occasionally the program runs much longer before crashing). Adding
-XX:JVMCIThreads=1 works around the crash. I'm pretty sure it's a
concurrency race somewhere in Graal that our Scala parser code can trigger.
I have a couple of questions:
1. How can I determine what part of the Orc code is causing the crash?
I want to be able to create a minimal test case for you all.
2. For future issues like this, is it possible to disable the JVMCI
last-tier compiler for some packages (or jars) but not others? That
would make it easy to enable Graal on the packages that need it and
disable it for others.
Below is a trimmed version of one of the core dumps (well information I
extracted from it). A number of compete dumps are at:
https://gist.github.com/arthurp/9e725864d1c211e4238677cc787f6ba4
Thanks!!
-Arthur
GDB bt output:
Program terminated with signal SIGSEGV, Segmentation fault.
Thread 1 (Thread 0x7f67d232d700 (LWP 29881)):
#0 0x00007f67d106f8ca in SharedRuntime::get_poll_stub(unsigned char*)
() from /home/amp/shared/graalvm/graalvm-0.31/jre/lib/amd64/server/libjvm.so
#1 0x00007f67d0fcd8d9 in JVM_handle_linux_signal () from
/home/amp/shared/graalvm/graalvm-0.31/jre/lib/amd64/server/libjvm.so
#2 0x00007f67d0fc1b48 in signalHandler(int, siginfo*, void*) () from
/home/amp/shared/graalvm/graalvm-0.31/jre/lib/amd64/server/libjvm.so
#3 <signal handler called>
#4 0x00007f67b8087a1b in ?? ()
[...]
jstack output:
Thread 29881: (state = IN_JAVA)
(this is not cut, the crashed thread always shows IN_JAVA and no stack.)
More information about the graal-dev
mailing list