Possible bug: JVM crash due to GC when using indy

shanka.mns at gmail.com shanka.mns at gmail.com
Mon Mar 28 13:20:40 PDT 2011


On Mon, Mar 28, 2011 at 11:44 AM, Christian Thalinger <
christian.thalinger at oracle.com> wrote:

> -XX:+UseSerialGC.  It seems my previous email didn't make it to the list.
>

This worked. Well sort of. The JVM doesn't crash because of a GC issue now.
However, this uncovered another issue. The JVM crashes when doing an indy
dispatch I think.

The crash log:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fd2186de2a7, pid=15004, tid=140540348679936
#
# JRE version: 7.0
# Java VM: OpenJDK 64-Bit Server VM (21.0-b01 mixed mode linux-amd64
compressed oops)
# Problematic frame:
# V  [libjvm.so+0x5ad2a7]  Klass::external_name() const+0x47
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x0000000001a73000):  JavaThread "MainThread"
[_thread_in_vm, id=15005,
stack(0x00007fd2197f4000,0x00007fd2198f5000)]

siginfo:si_signo=SIGSEGV: si_errno=0, si_code=128 (), si_addr=0x0000000000000000

Registers:
RAX=0x000000005f0a105f, RBX=0x00000000fc44dbd0,
RCX=0x0000000000000000, RDX=0x00007fd2198efee0
RSP=0x00000000dc6ae130, RBP=0x00000000dc6ae180,
RSI=0x00007fd218953015, RDI=0xbf8101c00700997f
R8 =0x0000000000000002, R9 =0x0000000000000002,
R10=0x00007fd218d15ac0, R11=0x00007fd213f24df0
R12=0x00007fd218953015, R13=0x00000000fc44dbc0,
R14=0x00007fd2198eff50, R15=0x0000000001a73000
RIP=0x00007fd2186de2a7, EFLAGS=0x0000000000010206,
CSGSFS=0x0000000000000033, ERR=0x0000000000000000
  TRAPNO=0x000000000000000d

Top of Stack: (sp=0x00000000dc6ae130)
0x00000000dc6ae130:   dc6ad9b000000000 0000000000000005
0x00000000dc6ae140:   dc6ae118fb233430 0000000000000005
0x00000000dc6ae150:   e595de68fb208800 6c010035fd182600
0x00000000dc6ae160:   0000000001a73000 00007fd218953015
0x00000000dc6ae170:   00000000fc44dbc0 00007fd2198eff50
0x00000000dc6ae180:   00000000dc6ae1f0 00007fd2185f5724
0x00000000dc6ae190:   0000000001a70530 0000000001a735d0
0x00000000dc6ae1a0:   0000000001a735e0 0000000001a739b8
0x00000000dc6ae1b0:   0000000001a73000 0000000000000005
0x00000000dc6ae1c0:   0000000001a73000 0000001a00000000
0x00000000dc6ae1d0:   0000000000000000 00000000fc44dbb8
0x00000000dc6ae1e0:   0000000000000000 00000000fc44dbc0
0x00000000dc6ae1f0:   00007fd2198eff20 00007fd213e23a1c
0x00000000dc6ae200:   00007fd213e239da 0000000000000001
0x00000000dc6ae210:   00000006faea3dd8 0000000000000000
0x00000000dc6ae220:   0000000000000000 0000000000000000
0x00000000dc6ae230:   0000000000000005 0000000ffb98f9e0
0x00000000dc6ae240:   e5dedb40e5dedb18 e5dedb90e5dedb68
0x00000000dc6ae250:   e5dedbe0e5dedbb8 dc6adfa0e5dedd08
0x00000000dc6ae260:   00000000dc6adfa0 0000000000000005
0x00000000dc6ae270:   0000002bfb990948 e5dedd90e5dedd70
0x00000000dc6ae280:   e5deddd0e5deddb0 e5dede10e5deddf0
0x00000000dc6ae290:   dc6adfa0e5dedf28 00000000dc6adfa0
0x00000000dc6ae2a0:   0000000000000005 0000002cfb991f90
0x00000000dc6ae2b0:   e5dee568e5dee358 e5dee988e5dee778
0x00000000dc6ae2c0:   e5deeda8e5deeb98 dc6adfa0e5def0b0
0x00000000dc6ae2d0:   00000000dc6adfa0 0000000000000005
0x00000000dc6ae2e0:   00000000fb995a90 0000000800000000
0x00000000dc6ae2f0:   dc6adfa000000000 00000000dc6ae308
0x00000000dc6ae300:   0000000000000000 0000000000000005
0x00000000dc6ae310:   00000008faed3040 dc6ae8d000000008
0x00000000dc6ae320:   0000000000000001 00000168fae011a0

Instructions: (pc=0x00007fd2186de2a7)
0x00007fd2186de287:   d8 31 c0 8b 47 08 85 c0 0f 8e cb 00 00 00 48 83
0x00007fd2186de297:   bf f8 00 00 00 00 0f 84 bd 00 00 00 48 8b 7f 68
0x00007fd2186de2a7:   48 8b 17 48 89 d0 83 e0 07 48 83 f8 01 0f 84 fe
0x00007fd2186de2b7:   00 00 00 48 89 d0 83 e0 03 48 83 f8 03 0f 84 d6

Register to memory mapping:

RAX=0x000000005f0a105f is an unknown value
RBX=0x00000000fc44dbd0 is an oop
{constMethod}
 - klass: {other class}
 - method:       0x00000000fc44ded8 {method} '_qformat$25'
'(Lorg/python/core/PyFrame;Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;'
in 'difflib$py'
 - exceptions:   0x00000000fae01d30
bci_from(0xfc44dbd0) = 264; print_codes():
RCX=0x0000000000000000 is an unknown value
RDX=0x00007fd2198efee0 is pointing into the stack for thread: 0x0000000001a73000
RSP=
[error occurred during error reporting (printing register info), id 0xb]

Stack: [0x00007fd2197f4000,0x00007fd2198f5000],
sp=0x00000000dc6ae130,  free space=18014261266660072k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x5ad2a7]  Klass::external_name() const+0x47
V  [libjvm.so+0x4c4724]
InterpreterRuntime::create_klass_exception(JavaThread*, char*,
oopDesc*)+0x74

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  difflib$py._qformat$25(Lorg/python/core/PyFrame;Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+248
j  difflib$py.call_function(ILorg/python/core/PyFrame;Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+320
J  org.python.core.PyTableCode.call(Lorg/python/core/ThreadState;Lorg/python/core/PyFrame;Lorg/python/core/PyObject;)Lorg/python/core/PyObject;
j  org.python.core.PyGenerator.__iternext__(Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+63
j  org.python.core.PyGenerator.__iternext__()Lorg/python/core/PyObject;+4
j  difflib$py._fancy_replace$23(Lorg/python/core/PyFrame;Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+2658
j  difflib$py.call_function(ILorg/python/core/PyFrame;Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+312
J  org.python.core.PyTableCode.call(Lorg/python/core/ThreadState;Lorg/python/core/PyFrame;Lorg/python/core/PyObject;)Lorg/python/core/PyObject;
j  org.python.core.PyGenerator.__iternext__(Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+63
j  org.python.core.PyGenerator.__iternext__()Lorg/python/core/PyObject;+4
j  difflib$py.compare$20(Lorg/python/core/PyFrame;Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+815
j  difflib$py.call_function(ILorg/python/core/PyFrame;Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+300
J  org.python.core.PyTableCode.call(Lorg/python/core/ThreadState;Lorg/python/core/PyFrame;Lorg/python/core/PyObject;)Lorg/python/core/PyObject;
j  org.python.core.PyGenerator.__iternext__(Lorg/python/core/ThreadState;)Lorg/python/core/PyObject;+63
j  org.python.core.PyGenerator.__iternext__()Lorg/python/core/PyObject;+4
J  org.python.core.WrappedIterIterator.hasNext()Z

The complete log is pasted here:
http://pylonshq.com/pasties/b8c342db8d9a342d058584a958d434a4

The point where it crashes: (at the function _qformat) is where the JVM
should actually invoke via invokedynamic.
I have tested this functionality to work with simple tests, but when it
comes to this class, it fails.

What is more weird is that in my machine (using a 32bit JVM) this test cases
causes the cpu to run at 100% and does not return.
In my other machine, using a 64-bit JVM, it crashes and produces a log
atleast.


Any pointers on how to debug this?

Thanks!
Shashank

-- Christian
>
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/mlvm-dev/attachments/20110328/e24d8221/attachment.html 


More information about the mlvm-dev mailing list