=?gb2312?B?tPC4tDogtPC4tDogdmFsZ3JpbmQgcmV2ZWFsIGJ1ZyBvZiBvcGVuag==?= =?gb2312?B?ZGsgZHVyaW5nIHByZXNzdXJlIHRlc3Q=?=

Feng.Da at zxelec.com Feng.Da at zxelec.com
Fri Oct 15 01:51:50 PDT 2010

I used valgrind to debug my JNI program, and find it useful. I submit the bug just because I find openjdk crashes. Thanks for you advice.

·¢¼þÈË: Dmitriy Samersoff [mailto:Dmitriy.Samersoff at oracle.com] 
·¢ËÍʱ¼ä: 2010Äê10ÔÂ15ÈÕ 16:10
ÊÕ¼þÈË: Feng.Da at zxelec.com
³­ËÍ: David Holmes; hotspot-dev at openjdk.java.net
Ö÷Ìâ: Re: ´ð¸´: valgrind reveal bug of openjdk during pressure test


Valgrind can't be used with JVM for many of reasons (e.g. JVM heavy use 
UNIX signals for it's own purpose, maintain it's own memory, has 
dynamically generated code etc)

If you really whant to use valgrind you have to carefully insert 
VALGRIND_* macros in the JVM code and re-build hotspot,
but it's a huge work.


On 2010-10-15 06:39, Feng.Da at zxelec.com wrote:
>   Program is mainly apache mina with native jni. I find jdk5.0 under the same condition is running OK. So it should not be the problem of my program. I should be able to reproduce the problem, it just takes longer time to crash. By the way,
> Mina can produce lots of leaked socket under heavy GC, which shows invalid file handle when lsof -p displays them.
> -----ÓʼþÔ­¼þ-----
> ·¢¼þÈË: David Holmes [mailto:David.Holmes at oracle.com]
> ·¢ËÍʱ¼ä: 2010Äê10ÔÂ15ÈÕ 10:35
> ÊÕ¼þÈË: Feng.Da at zxelec.com
> ³­ËÍ: hotspot-dev at openjdk.java.net
> Ö÷Ìâ: Re: valgrind reveal bug of openjdk during pressure test
> Feng.Da at zxelec.com said the following on 10/15/10 11:08:
>> I¡¯m doing a pressure test and find openjdk thrashed suse10 and crashed.
>> The following is the valgrind report and hs_error file.
> Ok I belatedly found the 7z command to access the original rar archive.
> The hs_err log shows:
> ---------------  T H R E A D  ---------------
> Current thread (0x06ea4000):  GCTaskThread [stack:
> 0x0bf9b000,0x0c01c000] [id=31719]
> siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR),
> si_addr=0xfffff032;;
> Registers:
> EAX=0x06f5c1e8, EBX=0x16840fc0, ECX=0x06f5c1e8, EDX=0xfffff032
> ESP=0x00000000, EBP=0x0c01b088, ESI=0x0c01b0b0, EDI=0x00000001
> EIP=0x077febc1, CR2=0xfffff032, EFLAGS=0x00200000
> Top of Stack: (sp=0x00000000)
> 0x00000000:
> [error occurred during error reporting (printing registers, top of
> stack, instructions near pc), id 0xb]
> Stack: [0x0bf9b000,0x0c01c000]
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code,
> C=native code)
> V  [libjvm.so+0x576bc1];;
> _ZN10PSScavenge26copy_and_push_safe_barrierIP7oopDescEEvP18PSPromotionManagerPT_+0x11
> V  [libjvm.so+0x526bfb];;
> _ZN9OopMapSet6all_doEPK5framePK11RegisterMapP10OopClosurePFvPP7oopDescSA_ES7_+0x17b
> V  [libjvm.so+0x526a72];;
> _ZN9OopMapSet7oops_doEPK5framePK11RegisterMapP10OopClosure+0x32
> V  [libjvm.so+0x2ea3e1];;
> _ZN5frame17oops_code_blob_doEP10OopClosurePK11RegisterMap+0x31
> V  [libjvm.so+0x2eab1f];;
> _ZN5frame16oops_do_internalEP10OopClosureP11RegisterMapb+0x7f
> V  [libjvm.so+0x6131aa];;  _ZN10JavaThread7oops_doEP10OopClosure+0xea
> V  [libjvm.so+0x578d0d];;  _ZN15ThreadRootsTask5do_itEP13GCTaskManagerj+0x8d
> V  [libjvm.so+0x30e0eb];;  _ZN12GCTaskThread3runEv+0x12b
> V  [libjvm.so+0x531cce];;  _Z10java_startP6Thread+0x14e
> C  [libpthread.so.0+0x52ab]
> The valgrind log shows the original error as:
> ==31714== Thread 6:
> ==31714== Invalid read of size 4
> ==31714==    at 0x77FEBC1: void
> PSScavenge::copy_and_push_safe_barrier<oopDesc*>(PSPromotionManager*,
> oopDesc**) (in /opt/java/jdk1.6.0_17/jre/lib/i386/server/libjvm.so)
> and the secondary error during error reporting as:
> ==31714== Invalid read of size 4
> ==31714==    at 0x77B1D06: os::print_hex_dump(outputStream*, unsigned
> char*, unsigned char*, int) (in
> /opt/java/jdk1.6.0_17/jre/lib/i386/server/libjvm.so)
> ==31714==    by 0x77BBE35: os::print_context(outputStream*, void*) (in
> /opt/java/jdk1.6.0_17/jre/lib/i386/server/libjvm.so)
> ==31714==    by 0x78D72ED: VMError::report(outputStream*) (in
> /opt/java/jdk1.6.0_17/jre/lib/i386/server/libjvm.so)
> which I suspect is caused by the fact the sp = 0 (which is obviously not
> be!)
> What program were you running? can you reproduce the crash outside of
> valgrind?
> David Holmes

Dmitry Samersoff
J2SE Sustaining team, SPB04
* Give Rabbit time and he'll always get the answer ...

More information about the hotspot-dev mailing list