#
# 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.   

    我们服务器的jdk是 1.6.0.29
    我开发环境上的是 1.6.0.17 (也就是用1.6.0.17 编译的jar)但是一般这样是没问题的吧, 都向下兼容啊
      

  2.   

    JVM崩溃,常规人分析这种崩溃信息没啥太大意义。只能建议尝试换JDK版本,最好是操作系统自带版本。
      

  3.   

    当时是这么个情况:1, 我们程序前段时间已经自行经过压力测试 无问题
    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的线程明显是我们程序业务逻辑里的 . 就是我们的某个线程池里的一根线.
      

  4.   

    下次碰到“然后就发现2个核心吃满到 100%”,立即执行:kill -3 PID如果能有幸得到 CoreDump 的话,指导意义会大很多很多。
    另一个是开启GC日志(专门文件记录),有时候是因为内存溢出导致FullGC持续发生,我碰到过的例子是:
    2秒1次FullGC,一次FullGC耗时2秒;你应该知道FullGC期间,JVM处于“Stop the World”状态。
      

  5.   

     我为什么就不能遇到JVM崩溃
      

  6.   

    问题又不能再现了....  之前出的那次是一启动就出了.真怀疑是JDK问题.哎.  2000多个socket连接压力上去还是不出. 反而稳定跑几天了.算了.    谢谢回帖.