So I am trying to get JavaCall.jl working with JDK8. It is currently
supported only on JDK7. Theoretically, everything should be backward
compatible and work out of the box, but of course, the gap between theory
and practice ... etc..
While everything works with 1.7, I get a seg fault with 1.8, but strangely
the process does not exit. The call looks like this:
res = ccall(create, Cint, (Ptr{Ptr{JavaVM}}, Ptr{Ptr{JNIEnv}},
Ptr{J.JavaVMInitArgs}), ppjvm, ppenv, &vm_args)
This call is of course deeply entertwined with the specifics of the JVM, so
I'm really looking for help with some ideas to debug this.
So when I make this call in 1.8, I see the following message printed on
screen:
signal (11): Segmentation fault: 11
unknown function (ip: 311308980)
However, strangely, the call still returns a value indicating success. And
(most) subsequent calls to the JVM also return successfully. In fact, the
entire JavaCall.jl testsuite runs successfully. The "unknown function"
message seems to come out of task.c, but I don't understand where the
segfault is trapped.
When I run julia within lldb, I don't seem to get much information:
signal (11): Segmentation fault: 11
unknown function (ip: 314786484)
Process 86657 stopped
* thread #1: tid = 0xe2de0, 0x0000000112c342b4, queue =
'com.apple.main-thread', stop reason = signal SIGSEGV
frame #0: 0x0000000112c342b4
-> 0x112c342b4: movl (%rsi), %eax
0x112c342b6: leaq 0xf8(%rbp), %rsi
0x112c342bd: vmovdqu %ymm0, (%rsi)
0x112c342c1: vmovdqu %ymm7, 0x20(%rsi)
(lldb) bt
* thread #1: tid = 0xe2de0, 0x0000000112c342b4, queue =
'com.apple.main-thread', stop reason = signal SIGSEGV
* frame #0: 0x0000000112c342b4
So what can I do to debug this further?
Thanks
-
Avik