在 ECLIPSE 中运行并发 Java NIO Server(Netty) 时,Java 运行时环境检测到一个致命错误

Posted

技术标签:

【中文标题】在 ECLIPSE 中运行并发 Java NIO Server(Netty) 时,Java 运行时环境检测到一个致命错误【英文标题】:A fatal error has been detected by the Java Runtime Environment while running concurrent Java NIO Server(Netty) in ECLIPSE 【发布时间】:2013-07-18 15:12:23 【问题描述】:

我们有一个 netty 服务器,它在 ECLIPSE 中以调试模式运行,在运行服务器大约一周后,负载大约 5k 客户端。 JVM 发出以下错误。 A fatal error has been detected by the Java Runtime Environment。请指教

hs_err_pid29200.mdmp 如下

    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000716462c7, pid=29200, tid=13272
    #
    # JRE version: 7.0_21-b11
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (23.21-b01 mixed mode windows-amd64 compressed oops)
    # Problematic frame:
    # V  [jvm.dll+0x362c7]
    #
    # Core dump written. Default location: C:\eclipse\Netty\hs_err_pid29200.mdmp
    #
    # If you would like to submit a bug report, please visit:
    #   http://bugreport.sun.com/bugreport/crash.jsp
    #

---------------  T H R E A D  ---------------

Current thread (0x000000000dac5000):  JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_in_vm, id=13272, stack(0x000000000e9a0000,0x000000000eaa0000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x0000000000000010

Registers:
RAX=0x0000000000000010, RBX=0x000000000dac5000, RCX=0x0000000000000000, RDX=0x0000000071b3fff8
RSP=0x000000000ea9f1f8, RBP=0x0000000780497130, RSI=0x0000000000000000, RDI=0x000000000dac6d00
R8 =0x0000000000000000, R9 =0x000000000ea9f380, R10=0x0000000000000000, R11=0x000000007343f590
R12=0x0000000780496f98, R13=0x0000000001db4c50, R14=0x0000000000000001, R15=0x0000000000000000
RIP=0x00000000716462c7, EFLAGS=0x0000000000010246

Top of Stack: (sp=0x000000000ea9f1f8)
0x000000000ea9f1f8:   0000000071762e66 0000000001f1c210
0x000000000ea9f208:   0000000072a38b57 000000000dac5000
0x000000000ea9f218:   0000000000000000 0000000000000000
0x000000000ea9f228:   000000000dac6cd0 0000000001db4930
0x000000000ea9f238:   0000000001db4920 0000000001db4d08
0x000000000ea9f248:   0000000001db4d20 0000000001db4930
0x000000000ea9f258:   000000000dac5000 0000000000000000
0x000000000ea9f268:   0000000001f1c210 000000000dac5000
0x000000000ea9f278:   000000000dac6d00 0000000001db4d10
0x000000000ea9f288:   0000000001db4d20 0000000001db50f8
0x000000000ea9f298:   000000000ea9f6b0 0000000000000000
0x000000000ea9f2a8:   0000000000000000 0000000000000000
0x000000000ea9f2b8:   0000000000000000 000000000daccc48
0x000000000ea9f2c8:   000000000ea9f3d0 0000000001f19780
0x000000000ea9f2d8:   000000000ea9f380 000000000dac5000
0x000000000ea9f2e8:   00000000718b9547 0000000001f19780 

Instructions: (pc=0x00000000716462c7)
0x00000000716462a7:   05 64 38 62 00 83 f8 ff 74 03 89 14 08 f3 c3 cc
0x00000000716462b7:   cc cc cc cc cc cc cc cc cc 48 63 05 7d fc 65 00
0x00000000716462c7:   48 8b 04 08 c3 cc cc cc cc 48 63 05 6d fc 65 00
0x00000000716462d7:   48 89 14 08 c3 cc cc cc cc 48 63 05 59 fc 65 00 


Register to memory mapping:

RAX=0x0000000000000010 is an unknown value
RBX=0x000000000dac5000 is a thread
RCX=0x0000000000000000 is an unknown value
RDX=0x0000000071b3fff8 is an unknown value
RSP=0x000000000ea9f1f8 is pointing into the stack for thread: 0x000000000dac5000
RBP=0x0000000780497130 is an oop
[C 
 - klass: type array char
 - length: 3
RSI=0x0000000000000000 is an unknown value
RDI=0x000000000dac6d00 is an unknown value
R8 =0x0000000000000000 is an unknown value
R9 =0x000000000ea9f380 is pointing into the stack for thread: 0x000000000dac5000
R10=0x0000000000000000 is an unknown value
R11=0x000000007343f590 is an unknown value
R12=0x0000000780496f98 is an oop
[Ljava.lang.Thread; 
 - klass: 'java/lang/Thread'[]
 - length: 128
R13=0x0000000001db4c50 is an unknown value
R14=0x0000000000000001 is an unknown value
R15=0x0000000000000000 is an unknown value


Stack: [0x000000000e9a0000,0x000000000eaa0000],  sp=0x000000000ea9f1f8,  free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [jvm.dll+0x362c7]



---------------  S Y S T E M  ---------------

OS: Windows NT 6.1 , 64 bit Build 7601 Service Pack 1

CPU:total 8 (4 cores per cpu, 1 threads per core) family 6 model 26 stepping 5, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, tsc, tscinvbit, tscinv

Memory: 4k page, physical 8375388k(3128568k free), swap 16748916k(11387960k free)

vm_info: Java HotSpot(TM) 64-Bit Server VM (23.21-b01) for windows-amd64 JRE (1.7.0_21-b11), built on Apr  4 2013 08:11:28 by "java_re" with unknown MS VC++:1600

time: Fri Jul 19 09:29:19 2013
elapsed time: 195988 seconds

感谢您的宝贵时间

GK

【问题讨论】:

你是在调试模式下运行的吗? @user1516873 是的,伙计 我不会在调试中运行 JVM 一周甚至 2.5 天,正如流逝时间所暗示的那样。如果您怀疑 JVM 中存在错误,我会将其升级到最新更新 25 @Peter Lawrey 谢谢 【参考方案1】:

这听起来像是 JVM 中的错误。请升级到最新版

【讨论】:

我们目前使用的是 java 1.7.21 和 netty 3.6.6。想知道是否有人遇到过类似的错误

以上是关于在 ECLIPSE 中运行并发 Java NIO Server(Netty) 时,Java 运行时环境检测到一个致命错误的主要内容,如果未能解决你的问题,请参考以下文章

高吞吐高并发Java NIO服务的架构(NIO架构及应用之一)

Java高并发网络编程NIO

java并发之bio nio aio

Jython 在 Eclipse 控制台报错 console: Failed to install '': java.nio.charset.UnsupportedCharsetExc

Java IO NIO 并发 锁 详解

Java IO NIO 并发 锁 详解