#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (safepoint.cpp:308), pid=8709, tid=2415295344
# guarantee(PageArmed == 0) failed: invariant
#
# JRE version: 6.0_29-b11
# Java VM: Java HotSpot(TM) Server VM (20.4-b02 mixed mode linux-x86 )
# 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 (0x90152c00): VMThread [stack: 0x8fee7000,0x8ff68000] [id=8719]Stack: [0x8fee7000,0x8ff68000], sp=0x8ff670c0, free space=512k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x724780] VMError::report_and_die()+0x2b0
V [libjvm.so+0x2f680e] report_vm_error(char const*, int, char const*, char const*)+0x3e
V [libjvm.so+0x64d213] SafepointSynchronize::begin()+0x503
V [libjvm.so+0x733cf2] VMThread::loop()+0x182
V [libjvm.so+0x7337f0] VMThread::run()+0x80
V [libjvm.so+0x5e2b0e] java_start(Thread*)+0x14e
C [libpthread.so.0+0x5955] short+0xb5VM_Operation (0x8f4bad84): RevokeBias, mode: safepoint, requested by thread 0x8f64fc00
--------------- P R O C E S S ---------------Java Threads: ( => current thread )
0x08c33000 JavaThread "NioProcessor-5" [_thread_blocked, id=8851, stack(0x8e60d000,0x8e65e000)]
0x09248800 JavaThread "pool-1-thread-1" [_thread_blocked, id=8801, stack(0x8e134000,0x8e185000)]
0x08bdac00 JavaThread "pool-3-thread-5" [_thread_blocked, id=8800, stack(0x8e185000,0x8e1d6000)]
0x08e49800 JavaThread "pool-3-thread-4" [_thread_blocked, id=8799, stack(0x8e1d6000,0x8e227000)]
0x08e48800 JavaThread "pool-3-thread-3" [_thread_blocked, id=8798, stack(0x8e40d000,0x8e45e000)]
0x08e46800 JavaThread "pool-2-thread-10" [_thread_blocked, id=8793, stack(0x8e227000,0x8e278000)]
0x0923f000 JavaThread "pool-2-thread-9" [_thread_blocked, id=8792, stack(0x8e278000,0x8e2c9000)]
0x08c22c00 JavaThread "pool-2-thread-8" [_thread_blocked, id=8791, stack(0x8e2c9000,0x8e31a000)]
0x08ab2c00 JavaThread "pool-2-thread-7" [_thread_blocked, id=8790, stack(0x8e31a000,0x8e36b000)]
0x08aae400 JavaThread "pool-2-thread-6" [_thread_blocked, id=8789, stack(0x8e36b000,0x8e3bc000)]
0x08bdd800 JavaThread "pool-2-thread-5" [_thread_blocked, id=8788, stack(0x8e3bc000,0x8e40d000)]
0x08c33400 JavaThread "pool-2-thread-4" [_thread_in_Java, id=8786, stack(0x8e45e000,0x8e4af000)]
0x08c32000 JavaThread "NioProcessor-2" [_thread_blocked, id=8767, stack(0x8e4af000,0x8e500000)]
0x8f6fa400 JavaThread "DestroyJavaVM" [_thread_blocked, id=8711, stack(0xb68e2000,0xb6933000)]
0x8e79a800 JavaThread "UpdateServerStatusTimer" [_thread_blocked, id=8764, stack(0x8e65e000,0x8e6af000)]
0x8ea2ac00 JavaThread "pool-3-thread-2" [_thread_blocked, id=8762, stack(0x8e6af000,0x8e700000)]
0x8f318000 JavaThread "pool-3-thread-1" [_thread_blocked, id=8761, stack(0x8e80d000,0x8e85e000)]
0x8f6ee400 JavaThread "xxx处理线程" [_thread_blocked, id=8760, stack(0x8f41a000,0x8f46b000)]
0x0948f400 JavaThread "xxxxx处理线程" [_thread_blocked, id=8759, stack(0x8e85e000,0x8e8af000)]
0x08bf1000 JavaThread "xxxxxxx处理线程" [_thread_blocked, id=8758, stack(0x8e8af000,0x8e900000)]
0x8f64fc00 JavaThread "MySQL Statement Cancellation Timer" daemon [_thread_blocked, id=8736, stack(0x8f46b000,0x8f4bc000)]
0x08b73800 JavaThread "Prototyper" daemon [_thread_blocked, id=8735, stack(0x8f4bc000,0x8f50d000)]
0x08b3d000 JavaThread "Timer-1" [_thread_blocked, id=8734, stack(0x8f50d000,0x8f55e000)]
0x08b8f400 JavaThread "HouseKeeper" daemon [_thread_blocked, id=8733, stack(0x8f55e000,0x8f5af000)]
0x08b75800 JavaThread "NioSocketAcceptor-1" [_thread_blocked, id=8732, stack(0x8f5af000,0x8f600000)]
0x8f95c800 JavaThread "Timer-0" [_thread_blocked, id=8731, stack(0x8f73b000,0x8f78c000)]
0x8f93f000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=8729, stack(0x8f80d000,0x8f85e000)]
0x8f93d000 JavaThread "RMI TCP Accept-8999" daemon [_thread_blocked, id=8728, stack(0x8f85e000,0x8f8af000)]
0x8f933800 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=8727, stack(0x8f8af000,0x8f900000)]
0x9016cc00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=8726, stack(0x8fa50000,0x8faa1000)]
0x9016b000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=8725, stack(0x8faa1000,0x8fb22000)]
0x90169400 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=8724, stack(0x8fb22000,0x8fba3000)]
0x90167c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=8723, stack(0x8fba3000,0x8fbf4000)]
0x90166400 JavaThread "Surrogate Locker Thread (Concurrent GC)" daemon [_thread_blocked, id=8722, stack(0x8fbf4000,0x8fc45000)]
0x90158000 JavaThread "Finalizer" daemon [_thread_blocked, id=8721, stack(0x8fe45000,0x8fe96000)]
0x90156800 JavaThread "Reference Handler" daemon [_thread_blocked, id=8720, stack(0x8fe96000,0x8fee7000)]Other Threads:
=>0x90152c00 VMThread [stack: 0x8fee7000,0x8ff68000] [id=8719]
0x8f940c00 WatcherThread [stack: 0x8f78c000,0x8f80d000] [id=8730]VM state:synchronizing (normal execution)VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x08a6a3b8] Safepoint_lock - owner thread: 0x90152c00
[0x08a6a420] Threads_lock - owner thread: 0x90152c00Heap
par new generation total 157248K, used 41275K [0x91470000, 0x9bf10000, 0x9bf10000)
eden space 139776K, 26% used [0x91470000, 0x93900ef8, 0x99cf0000)
from space 17472K, 21% used [0x9ae00000, 0x9b1bdda0, 0x9bf10000)
to space 17472K, 0% used [0x99cf0000, 0x99cf0000, 0x9ae00000)
concurrent -sweep generation total 349568K, used 39063K [0x9bf10000, 0xb1470000, 0xb1470000)
concurrent--sweep perm gen total 32768K, used 13102K [0xb1470000, 0xb3470000, 0xb3470000)Code Cache [0xb385e000, 0xb3a9e000, 0xb685e000)
total_blobs=485 nmethods=338 adapters=101 free_code_cache=49355136 largest_free_block=13952--------------------------------不解1: 4核心的CPU, 为什么在部分CPU没有吃满的情况下导致本程序大部分线程处于_thread_blocked状态
不解2: "pool-2-thread-4" [_thread_in_Java 可理解为死循环了. 但是RMI TCP Accept-0" daemon [_thread_in_native是什么意思呢?我使用了线程池ThreadPoolExecutor. 并且用的是ThreadPoolExecutor.CallerRunsPolicy 不知道这个是不是导致问题的元凶.这个问题极端偶发. 平时很难再现. 甚至几个月出一次. 也和程序压力负载无关.因为当初出现这个问题的时候程序的client访问量极少.另外. 求本能够对这些崩溃日志有所分析的书籍.
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (safepoint.cpp:308), pid=8709, tid=2415295344
# guarantee(PageArmed == 0) failed: invariant
#
# JRE version: 6.0_29-b11
# Java VM: Java HotSpot(TM) Server VM (20.4-b02 mixed mode linux-x86 )
# 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 (0x90152c00): VMThread [stack: 0x8fee7000,0x8ff68000] [id=8719]Stack: [0x8fee7000,0x8ff68000], sp=0x8ff670c0, free space=512k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x724780] VMError::report_and_die()+0x2b0
V [libjvm.so+0x2f680e] report_vm_error(char const*, int, char const*, char const*)+0x3e
V [libjvm.so+0x64d213] SafepointSynchronize::begin()+0x503
V [libjvm.so+0x733cf2] VMThread::loop()+0x182
V [libjvm.so+0x7337f0] VMThread::run()+0x80
V [libjvm.so+0x5e2b0e] java_start(Thread*)+0x14e
C [libpthread.so.0+0x5955] short+0xb5VM_Operation (0x8f4bad84): RevokeBias, mode: safepoint, requested by thread 0x8f64fc00
--------------- P R O C E S S ---------------Java Threads: ( => current thread )
0x08c33000 JavaThread "NioProcessor-5" [_thread_blocked, id=8851, stack(0x8e60d000,0x8e65e000)]
0x09248800 JavaThread "pool-1-thread-1" [_thread_blocked, id=8801, stack(0x8e134000,0x8e185000)]
0x08bdac00 JavaThread "pool-3-thread-5" [_thread_blocked, id=8800, stack(0x8e185000,0x8e1d6000)]
0x08e49800 JavaThread "pool-3-thread-4" [_thread_blocked, id=8799, stack(0x8e1d6000,0x8e227000)]
0x08e48800 JavaThread "pool-3-thread-3" [_thread_blocked, id=8798, stack(0x8e40d000,0x8e45e000)]
0x08e46800 JavaThread "pool-2-thread-10" [_thread_blocked, id=8793, stack(0x8e227000,0x8e278000)]
0x0923f000 JavaThread "pool-2-thread-9" [_thread_blocked, id=8792, stack(0x8e278000,0x8e2c9000)]
0x08c22c00 JavaThread "pool-2-thread-8" [_thread_blocked, id=8791, stack(0x8e2c9000,0x8e31a000)]
0x08ab2c00 JavaThread "pool-2-thread-7" [_thread_blocked, id=8790, stack(0x8e31a000,0x8e36b000)]
0x08aae400 JavaThread "pool-2-thread-6" [_thread_blocked, id=8789, stack(0x8e36b000,0x8e3bc000)]
0x08bdd800 JavaThread "pool-2-thread-5" [_thread_blocked, id=8788, stack(0x8e3bc000,0x8e40d000)]
0x08c33400 JavaThread "pool-2-thread-4" [_thread_in_Java, id=8786, stack(0x8e45e000,0x8e4af000)]
0x08c32000 JavaThread "NioProcessor-2" [_thread_blocked, id=8767, stack(0x8e4af000,0x8e500000)]
0x8f6fa400 JavaThread "DestroyJavaVM" [_thread_blocked, id=8711, stack(0xb68e2000,0xb6933000)]
0x8e79a800 JavaThread "UpdateServerStatusTimer" [_thread_blocked, id=8764, stack(0x8e65e000,0x8e6af000)]
0x8ea2ac00 JavaThread "pool-3-thread-2" [_thread_blocked, id=8762, stack(0x8e6af000,0x8e700000)]
0x8f318000 JavaThread "pool-3-thread-1" [_thread_blocked, id=8761, stack(0x8e80d000,0x8e85e000)]
0x8f6ee400 JavaThread "xxx处理线程" [_thread_blocked, id=8760, stack(0x8f41a000,0x8f46b000)]
0x0948f400 JavaThread "xxxxx处理线程" [_thread_blocked, id=8759, stack(0x8e85e000,0x8e8af000)]
0x08bf1000 JavaThread "xxxxxxx处理线程" [_thread_blocked, id=8758, stack(0x8e8af000,0x8e900000)]
0x8f64fc00 JavaThread "MySQL Statement Cancellation Timer" daemon [_thread_blocked, id=8736, stack(0x8f46b000,0x8f4bc000)]
0x08b73800 JavaThread "Prototyper" daemon [_thread_blocked, id=8735, stack(0x8f4bc000,0x8f50d000)]
0x08b3d000 JavaThread "Timer-1" [_thread_blocked, id=8734, stack(0x8f50d000,0x8f55e000)]
0x08b8f400 JavaThread "HouseKeeper" daemon [_thread_blocked, id=8733, stack(0x8f55e000,0x8f5af000)]
0x08b75800 JavaThread "NioSocketAcceptor-1" [_thread_blocked, id=8732, stack(0x8f5af000,0x8f600000)]
0x8f95c800 JavaThread "Timer-0" [_thread_blocked, id=8731, stack(0x8f73b000,0x8f78c000)]
0x8f93f000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=8729, stack(0x8f80d000,0x8f85e000)]
0x8f93d000 JavaThread "RMI TCP Accept-8999" daemon [_thread_blocked, id=8728, stack(0x8f85e000,0x8f8af000)]
0x8f933800 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=8727, stack(0x8f8af000,0x8f900000)]
0x9016cc00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=8726, stack(0x8fa50000,0x8faa1000)]
0x9016b000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=8725, stack(0x8faa1000,0x8fb22000)]
0x90169400 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=8724, stack(0x8fb22000,0x8fba3000)]
0x90167c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=8723, stack(0x8fba3000,0x8fbf4000)]
0x90166400 JavaThread "Surrogate Locker Thread (Concurrent GC)" daemon [_thread_blocked, id=8722, stack(0x8fbf4000,0x8fc45000)]
0x90158000 JavaThread "Finalizer" daemon [_thread_blocked, id=8721, stack(0x8fe45000,0x8fe96000)]
0x90156800 JavaThread "Reference Handler" daemon [_thread_blocked, id=8720, stack(0x8fe96000,0x8fee7000)]Other Threads:
=>0x90152c00 VMThread [stack: 0x8fee7000,0x8ff68000] [id=8719]
0x8f940c00 WatcherThread [stack: 0x8f78c000,0x8f80d000] [id=8730]VM state:synchronizing (normal execution)VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x08a6a3b8] Safepoint_lock - owner thread: 0x90152c00
[0x08a6a420] Threads_lock - owner thread: 0x90152c00Heap
par new generation total 157248K, used 41275K [0x91470000, 0x9bf10000, 0x9bf10000)
eden space 139776K, 26% used [0x91470000, 0x93900ef8, 0x99cf0000)
from space 17472K, 21% used [0x9ae00000, 0x9b1bdda0, 0x9bf10000)
to space 17472K, 0% used [0x99cf0000, 0x99cf0000, 0x9ae00000)
concurrent -sweep generation total 349568K, used 39063K [0x9bf10000, 0xb1470000, 0xb1470000)
concurrent--sweep perm gen total 32768K, used 13102K [0xb1470000, 0xb3470000, 0xb3470000)Code Cache [0xb385e000, 0xb3a9e000, 0xb685e000)
total_blobs=485 nmethods=338 adapters=101 free_code_cache=49355136 largest_free_block=13952--------------------------------不解1: 4核心的CPU, 为什么在部分CPU没有吃满的情况下导致本程序大部分线程处于_thread_blocked状态
不解2: "pool-2-thread-4" [_thread_in_Java 可理解为死循环了. 但是RMI TCP Accept-0" daemon [_thread_in_native是什么意思呢?我使用了线程池ThreadPoolExecutor. 并且用的是ThreadPoolExecutor.CallerRunsPolicy 不知道这个是不是导致问题的元凶.这个问题极端偶发. 平时很难再现. 甚至几个月出一次. 也和程序压力负载无关.因为当初出现这个问题的时候程序的client访问量极少.另外. 求本能够对这些崩溃日志有所分析的书籍.
我开发环境上的是 1.6.0.17 (也就是用1.6.0.17 编译的jar)但是一般这样是没问题的吧, 都向下兼容啊
2, 我当时就在服务器上用top 看CPU呢 然后就发现2个核心吃满到 100%
3, 使用visualVM工具连不上去, 使用client程序也无法和server程序的端口建立socket连接 (具体是没连接上还是连接上之后没有进入业务逻辑 就不知道了,当时没抓包分析.)
4, 中午吃饭回来这破东西就挂了... 然后留下这个日志.按我理解. 4核心仅仅被吃掉2个核. linux还很正常. 为什么 jvm不申请更多cpu去执行被阻塞的 _thread_blocked线程呢?如果全部是 _thread_in_native 那么可能跟程序没关系. 但是有一个pool-2-thread-4" [_thread_in_Java的线程明显是我们程序业务逻辑里的 . 就是我们的某个线程池里的一根线.
另一个是开启GC日志(专门文件记录),有时候是因为内存溢出导致FullGC持续发生,我碰到过的例子是:
2秒1次FullGC,一次FullGC耗时2秒;你应该知道FullGC期间,JVM处于“Stop the World”状态。