JRE 7.0_71-b14崩溃: - SIGSEGV有问题的框架HandleMarkCleaner :: ~HandlerMarkCleaner()

时间:2015-01-01 14:37:31

标签: java linux jvm ibm-mq

当JVM处于负载状态时,我们正在观察JVM崩溃。它崩溃了

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

当执行Object.notify()方法时,HandleMarkCleaner :: ~HandlerMarkCleaner()总是失败。

Stack: [0x00007fc178052000,0x00007fc178153000],  sp=0x00007fc178151560,  free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x34a10f]  HandleMarkCleaner::~HandleMarkCleaner()+0x1f
V  [libjvm.so+0x58f3ce]  JVM_MonitorNotify+0xba
J  java.lang.Object.notify()V

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J  java.lang.Object.notify()V
J  com.ibm.mq.jmqi.local.LocalHconn.leaveCall()V
j  com.ibm.mq.jmqi.local.LocalMQ$4.run()V+230
J  com.ibm.mq.jmqi.JmqiWorkerThread.run()V
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub
  

环境

  • Java Vm:Java HotSpot(TM)64位服务器VM(24.71-b01混合模式 linux-amd64压缩oops)
  • 操作系统:Red Hat Enterprise Linux Server 6.4版

了解OpenJDK HandleMarkCleaner源代码

class HandleMarkCleaner: public StackObj {
 private:
  Thread* _thread;
 public:
  HandleMarkCleaner(Thread* thread) {
    _thread = thread;
    _thread->last_handle_mark()->push();
  }
  ~HandleMarkCleaner() {
    _thread->last_handle_mark()->pop_and_restore();
  }

 private:
  inline void* operator new(size_t size, void* ptr) {
    return ptr;
  }
};

它出现,不知何故

  

_Thread

HandleMarkCleaner对象中的

指针变得无效。有没有人遇到过这样的JVM崩溃?如果您知道如何解决此问题,请建议。

谢谢, Vaibhav的

0 个答案:

没有答案