3

我们的生产服务器在我们的一个类中因有问题的框架而崩溃了两次。我们无法重现此问题,也没有在任何其他环境中看到它。什么会导致这种情况?

    #
    # Java 运行时环境检测到一个致命错误:
    #
    # SIGSEGV (0xb) at pc=0xfbfe2e0a, pid=21857, tid=53
    #
    # JRE 版本:6.0_26-b03
    # Java 虚拟机:Java HotSpot(TM) 服务器虚拟机(20.1-b02 混合模式 solaris-x86 )
    # 有问题的框架:
    # J com.xxx.insurance.domain.account.Address.setPostcode(Ljava/lang/String;)V
    #
    # 如果您想提交错误报告,请访问:
    # http://java.sun.com/webapps/bugreport/crash.jsp
    #

    -  -  -  -  -  -  - - 线  -  -  -  -  -  -  - -

    当前线程 (0x08c7b000): JavaThread "[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'" 守护进程 [_thread_in_Java, id=53, stack(0xa83ee000,0xa843e000)]

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

    寄存器:
    EAX=0x00000000,EBX=0xd5c88a20,ECX=0xe5c66910,EDX=0x08c7b000
    ESP=0xa843b1b0,EBP=0x00000000,ESI=0xaaaaf910,EDI=0xe5c66938
    EIP=0xfbfe2e0a,EFLAGS=0x00010282

    栈顶:(sp=0xa843b1b0)
    0xa843b1b0: 00000000 aaaaf910 e5c66938 d5c88a20
    0xa843b1c0: e5c66910 b0b33f98 e5c66938 aab7a360
    0xa843b1d0: 00000000 a843b1e4 a843b20c fae0310d
    0xa843b1e0: fae0310d 00000000 e5c66910 a843b1ec
    0xa843b1f0: b47d8dc8 a843b21c b47d9000 b47e7e48
    0xa843b200: b47d8de8 a843b1e4 a843b220 e5c66a68
    0xa843b210: fb59c440 e5c66a68 e5c66910 d5b39ac0
    0xa843b220: e5c66a68 fddaaf00 00000000 e5c66910

    说明:(pc=0xfbfe2e0a)
    0xfbfe2dea:7c b4 8b 4f 14 3b f5 0f 84 41 02 00 00 89 4c 24
    0xfbfe2dfa:10 89 5c 24 0c 89 7c 24 08 89 74 24 04 89 2c 24
    0xfbfe2e0a:8b 6d 10 85 f6 0f 84 cd 00 00 00 8b 0c 24 85 c9
    0xfbfe2e1a:0f 84 c2 00 00 00 8b 4e 10 3b cd 0f 85 b7 00 00

    注册到内存映射:

    EAX=0x00000000 是一个未知值
    EBX=0xd5c88a20 是一个循环
    com.xxx.insurance.domain.account.Address$Property
     - 类:'com/xxx/insurance/domain/account/Address$Property'
    ECX=0xe5c66910 是一个oop
    com.xxx.insurance.domain.account.Address
     - 类:'com/xxx/insurance/domain/account/Address'
    EDX=0x08c7b000 是一个线程
    ESP=0xa843b1b0 指向线程堆栈:0x08c7b000
    EBP=0x00000000 是未知值
    ESI=0xaaaaf910 是一个 oop
    java.lang.String
     - 类:'java/lang/String'
    EDI=0xe5c66938 是一个oop
    com.xxx.insurance.beans.InsurancePropertyChangeSupport
     - 类:'com/xxx/insurance/beans/InsurancePropertyChangeSupport'


    堆栈:[0xa83ee000,0xa843e000],sp=0xa843b1b0,可用空间=308k
    本机帧:(J=编译的 Java 代码,j=解释的,Vv=VM 代码,C=本机代码)
    J com.xxx.insurance.domain.account.Address.setPostcode(Ljava/lang/String;)V

    [报错时发生错误(打印本机堆栈),id 0xb]


    -  -  -  -  -  -  - - 过程  -  -  -  -  -  -  - -

    Java 线程:(=> 当前线程)
      0x0bbb8c00 JavaThread "Keep-Alive-Timer" 守护进程 [_thread_blocked, id=371, stack(0xa7bff000,0xa7c4f000)]
      0x0c65f800 JavaThread“RHTTP 下载器(通用)”守护进程 [_thread_in_native, id=360, stack(0xa6b84000,0xa6bd4000)]
      0x0d431400 JavaThread "RangeSocketListener-1" 守护进程 [_thread_blocked, id=353, stack(0xa6c26000,0xa6c76000)]
      0x0b397000 JavaThread“RHTTP 下载器(通用)”守护进程 [_thread_blocked, id=333, stack(0xa6c77000,0xa6cc7000)]
      0x0a7df800 JavaThread "Java2D Disposer" 守护进程 [_thread_blocked, id=275, stack(0xa771d000,0xa776d000)]
      0x0d198400 JavaThread "Store defaultMethodCache Spool Thread" 守护进程 [_thread_blocked, id=218, stack(0xa7662000,0xa76b2000)]
      0x0c562800 JavaThread "[STANDBY] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'" 守护进程 [_thread_blocked, id=78, stack(0xa76b3000,0xa7703000)]
      0x09b57800 JavaThread "DynamicSSLListenThread[DefaultSecure]" 守护进程 [_thread_in_native, id=76, stack(0xa779c000,0xa77ec000)]
      0x0824ac00 JavaThread "weblogic.GCMonitor" 守护进程 [_thread_blocked, id=75, stack(0xa77ed000,0xa783d000)]
      0x0acdd400 JavaThread "[STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'" 守护进程 [_thread_blocked, id=74, stack(0xa783e000,0xa788e000)]
      0x08248c00 JavaThread "[STANDBY] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" 守护进程 [_thread_blocked, id=73, stack(0xa788f000,0xa78df000)]
      0x0ca4c400 JavaThread "weblogic.cluster.MessageReceiver" 守护进程 [_thread_in_native, id=71, stack(0xa790e000,0xa795e000)]
      0x08249400 JavaThread "Thread-19" [_thread_blocked, id=70, stack(0xa795f000,0xa79af000)]
      0x0bc1cc00 JavaThread "Store defaultMethodCache Spool Thread" 守护进程 [_thread_blocked, id=69, stack(0xa7abb000,0xa7b0b000)]
      0x0b7b8000 JavaThread“jboss EL 参考队列清理线程”守护进程 [_thread_blocked, id=68, stack(0xa7b0c000,0xa7b5c000)]
      0x0855f000 JavaThread "[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'" 守护进程 [_thread_blocked, id=64, stack(0xa80e7000,0xa8137000)]
      0x0a659400 JavaThread "Timer-3" 守护进程 [_thread_blocked, id=63, stack(0xa8c47000,0xa8c97000)]
      0x0aa22800 JavaThread "Thread-16" [_thread_blocked, id=62, stack(0xa8189000,0xa81d9000)]
      0x0a776c00 JavaThread "DoSManager" 守护进程 [_thread_blocked, id=61, stack(0xa8138000,0xa8188000)]
      0x0acd6000 JavaThread “VDE 事务处理器线程”守护进程 [_thread_blocked, id=59, stack(0xa81da000,0xa822a000)]
      0x0ad9ec00 JavaThread "Timer-2" 守护进程 [_thread_blocked, id=58, stack(0xa822b000,0xa827b000)]
      0x0a40ec00 JavaThread "ExecuteThread: '3' for queue: 'weblogic.socket.Muxer'" 守护进程 [_thread_blocked, id=57, stack(0xa827c000,0xa82cc000)]
      0x086b3400 JavaThread "ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" 守护进程 [_thread_blocked, id=56, stack(0xa82cd000,0xa831d000)]
      0x09598000 JavaThread "ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" 守护进程 [_thread_blocked, id=55, stack(0xa831e000,0xa836e000)]
      0x0d53b800 JavaThread "ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" 守护进程 [_thread_in_native, id=54, stack(0xa836f000,0xa83bf000)]
    => 0x08c7b000 JavaThread "[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'" 守护进程 [_thread_in_Java, id=53, stack(0xa83ee000,0xa843e000)]
      0x0a31c000 JavaThread "NM Reaper" 守护进程 [_thread_blocked, id=52, stack(0xa843f000,0xa848f000)]
      0x0a5d4400 JavaThread "Timer-1" 守护进程 [_thread_blocked, id=51, stack(0xa84ac000,0xa84fc000)]
      0x0a319800 JavaThread "weblogic.timers.TimerThread" 守护进程 [_thread_blocked, id=50, stack(0xa84fd000,0xa854d000)]
      0x0a763400 JavaThread "weblogic.time.TimeEventGenerator" 守护进程 [_thread_blocked, id=49, stack(0xa854e000,0xa859e000)]
      0x0a3b2000 JavaThread "[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'" 守护进程 [_thread_blocked, id=48, stack(0xa859f000,0xa85ef000)]
      0x0a703c00 JavaThread "Timer-0" 守护进程 [_thread_blocked, id=47, stack(0xa8bbf000,0xa8c0f000)]
      0x08a73400 JavaThread "RHTTP Client for 'insurRhodesServer3:35006'" 守护进程 [_thread_blocked, id=40, stack(0xa9a8f000,0xa9adf000)]
      0x08f44000 JavaThread "Acceptor ServerSocket[addr=/0.0.0.0,port=0,localport=35006]" 守护进程 [_thread_in_native, id=38, stack(0xa8ed3000,0xa8f23000)]
      0x08e2b000 JavaThread "SessionScavenger" 守护进程 [_thread_blocked, id=37, stack(0xa8f4e000,0xa8f9e000)]
      0x08ccd800 JavaThread "SessionScavenger" 守护进程 [_thread_blocked, id=36, stack(0xa9aff000,0xa9b4f000)]
      0x08a70000 JavaThread "SessionScavenger" 守护进程 [_thread_blocked, id=35, stack(0xa9d06000,0xa9d56000)]
      0x08437c00 JavaThread“低内存检测器”守护进程 [_thread_blocked, id=32, stack(0xa97fd000,0xa984d000)]
      0x08438400 JavaThread "C2 CompilerThread1" 守护进程 [_thread_in_native, id=31, stack(0xa984e000,0xa98ce000)]
      0x08436000 JavaThread "C2 CompilerThread0" 守护进程 [_thread_in_native, id=30, stack(0xa98cf000,0xa994f000)]
      0x0842ac00 JavaThread "Metrics Collection" 守护进程 [_thread_blocked, id=29, stack(0xa997e000,0xa99ce000)]
      0x08425000 JavaThread“堆栈跟踪采样器”守护进程 [_thread_blocked, id=28, stack(0xa99cf000,0xa9a1f000)]
      0x0841d800 JavaThread "ServerCommunication" 守护进程 [_thread_blocked, id=27, stack(0xa9a3e000,0xa9a8e000)]
      0x083b6400 JavaThread“缓冲区刷新线程”守护进程 [_thread_blocked, id=23, stack(0xa9c13000,0xa9c63000)]
      0x083d3400 JavaThread "metric-sampler" 守护进程 [_thread_blocked, id=22, stack(0xa9c64000,0xa9cb4000)]
      0x0838f800 JavaThread "shared InfrequentEventScheduler" 守护进程 [_thread_blocked, id=21, stack(0xa9cb5000,0xa9d05000)]
      0x081f9c00 JavaThread“信号调度程序”守护进程 [_thread_blocked, id=19, stack(0xa9e0a000,0xa9e5a000)]
      0x081e8c00 JavaThread“终结器”守护进程 [_thread_blocked, id=18, stack(0xaa8ad000,0xaa8fd000)]
      0x081e4000 JavaThread“引用处理程序”守护进程 [_thread_blocked, id=17, stack(0xfde2e000,0xfde7e000)]
      0x08072c00 JavaThread "main" [_thread_blocked, id=2, stack(0xfe08f000,0xfe0df000)]

    其他主题:
      0x081e0800 VMThread [堆栈:0xa9e5b000,0xa9edb000] [id=16]
      0x08432800 WatcherThread [堆栈:0xa977c000,0xa97fc000] [id=33]

    VM 状态:不在安全点(正常执行)

    VM Mutex/Monitor 当前由一个线程拥有:无

    堆
     PSYoungGen 总计 332096K,使用了 16671K [0xe5600000, 0xfac00000, 0xfac00000)
      伊甸园空间 314304K,已使用 2% [0xe5600000,0xe5d77580,0xf88f0000)
      从空间 17792K,使用 50% [0xf88f0000,0xf91c0988,0xf9a50000)
      到空间 17216K,使用 0% [0xf9b30000,0xf9b30000,0xfac00000)
     PSOldGen 总计 700416K,已使用 523951K [0xbaa00000, 0xe5600000, 0xe5600000)
      对象空间 700416K,已使用 74% [0xbaa00000,0xda9abd00,0xe5600000)
     PSPermGen 总计 262144K,使用了 187475K [0xaaa00000, 0xbaa00000, 0xbaa00000)
      对象空间 262144K,已使用 71% [0xaaa00000,0xb6114fd8,0xbaa00000)

    代码缓存 [0xfae00000, 0xfbfe8000, 0xfde00000)
     total_blobs=5279 nmethods=4926 适配器=305 free_code_cache=31627328 maximum_free_block=6016

4

2 回答 2

2

什么会导致这种情况?

原因可能是您的应用程序正在使用的某些本机代码库中的错误,或者是 JVM 错误。

在前一种情况下,您需要重新掌握本机代码调试技能。(你知道,使用gdb和它的同类。)

在后一种情况下,升级到更新的 JVM 补丁级别可能会有所帮助。或者,您可以尝试扫描发行说明的“已修复错误”部分以获取以后的 JVM 版本。或者,您可以浏览 Oracle 的 Java Bug 数据库(尽管没有有希望的搜索词突然出现在我身上……)

于 2012-03-26T03:19:57.217 回答
0

如果涉及本机库,则值得根据推荐的补丁级别检查生产系统的 DLL/共享库。

于 2012-03-26T04:47:26.687 回答