问题描述
在linux下运行pkill-7ID时提示#AfatalerrorhasbeendetectedbytheJavaRuntimeEnvironment:##SIGBUS(0x7)atpc=0xb7f3f402,pid=6008,tid=3086108352##JREversion:6.0_21-b06#JavaVM:JavaHotSpot(TM)ClientVM(17.0-b16mixedmode,sharinglinux-x86)#Problematicframe:#C[+0x402]__kernel_vsyscall+0x2##Anerrorreportfilewithmoreinformationissavedas:#/DevEvrionment/Projects/APMS1.01/hs_err_pid6008.log详细内容如下##AfatalerrorhasbeendetectedbytheJavaRuntimeEnvironment:##SIGBUS(0x7)atpc=0xb7f3f402,pid=6008,tid=3086108352##JREversion:6.0_21-b06#JavaVM:JavaHotSpot(TM)ClientVM(17.0-b16mixedmode,sharinglinux-x86)#Problematicframe:#C[+0x402]__kernel_vsyscall+0x2##Ifyouwouldliketosubmitabugreport,pleasevisit:#http://java.sun.com/webapps/bugreport/crash.jsp#---------------THREAD---------------Currentthreadisnativethreadsiginfo:si_signo=SIGBUS:si_errno=0,si_code=0(BUS0),si_addr=0x000017f7Registers:EAX=0xfffffffc,EBX=0xb7645bd8,ECX=0x00000000,EDX=0x00001779ESP=0xbfbf28dc,EBP=0xbfbf2918,ESI=0x00000000,EDI=0x00cacff4EIP=0xb7f3f402,CR2=0x00000000,EFLAGS=0x00000286TopofStack:(sp=0xbfbf28dc)0xbfbf28dc:00c9cac7bfbf28fc00c9c980b7645d900xbfbf28ec:00000000bfbf28fc00000000000000010xbfbf28fc:00c9c980b7645d9000afa450000000000xbfbf290c:0805270c0005000000000000bfbf29880xbfbf291c:0804dd78b7645b90bfbf2938080498d00xbfbf292c:bfbf29d000b31805bfbf2940080510f90xbfbf293c:b7645b900000000000000000000000000xbfbf294c:00001000000000000005000000000000Instructions:(pc=0xb7f3f402)0xb7f3f3f2:0000000000000000000000000000cd800xb7f3f402:c3909090909090909090909090909090Stack:[0xbfba7000,0xbfbf7000],sp=0xbfbf28dc,freespace=12ebfbf2260kNativeframes:(J=compiledJavacode,j=interpreted,Vv=VMcode,C=nativecode)C[+0x402]__kernel_vsyscall+0x2C[java+0x5d78]C[java+0x17f6]C[libc.so.6+0x15e9c]__libc_start_main+0xdc求高手指点啊!!!!
解决方案
解决方案二:
无奈啊,高手人来???
解决方案三:
一般KILL时,应该发送SIGKILL信号,并生成一些dump文件等。发生SIGBUS(总线错误),原因有许多可能有可能是系统目录空间不足,你用df命令确认一下。如果还不能解决就要分析dump文件确认问题具体原因了。
解决方案四:
分析日志文件发现如下几点(建议):#Problematicframe:#C[+0x402]__kernel_vsyscall+0x2
这里的C指的是:nativecode即调用本地方法时产生的jvm崩溃Nativeframes:(J=compiledJavacode,j=interpreted,Vv=VMcode,C=nativecode)
现在jdk1.6版本好像是无法显示具体调用哪个本地方法,在jdk1.5下的日志文件则可以显示具体在调用哪个natviemethod时发生内存溢出。我之前就遇到过一次由于本地方法调用产生jvm崩溃,后来通过更换jdk1.5发现了调用的本地方法,最后在java代码中屏蔽了导致jvm崩溃时的调用。你可以尝试下jdk1.5找到哪个本地方法,再看看在运行到什么情况下会发生jvm崩溃总结下,然后屏蔽掉。