本人在Solaris上运行的java程序,突然间没有了,程序没有输出任何异常,但是发现了一个hs_err_pid26964.log文件,此文件虽然记录了一些异常时候的内存快照,但是如何分析问题到底出现在什么地方,以及如何解决这样的问题,还请知情着提供一些建议。
另外这个问题出现过多次了,以前在linux系统上出现过,在一个windows下的tomcat下也出现过,但是一直没有好的解决办法。如果问题得到解决分不够的话可以再加。
下面贴出具体内容
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  SIGBUS (0xa) at pc=0xdfb8151b, pid=26964, tid=14
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_12-b04 mixed mode, sharing)
# Problematic frame:
# C  [libthread.so.1+0x1151b]
#---------------  T H R E A D  ---------------Current thread (0x0827cea8):  JavaThread " TransDataMoniter " [_thread_in_vm, id=14]siginfo:si_signo=10, si_errno=12, si_code=3, si_addr=0xd9180d98Registers:
EAX=0x00000001, EBX=0xdfb9a000, ECX=0xd9270594, EDX=0xe22ba5e0
ESP=0xd9270574, EBP=0xd927058c, ESI=0xd9180d68, EDI=0x00040000
EIP=0xdfb8151b, EFLAGS=0x00010283Top of Stack: (sp=0xd9270574)
0xd9270574:   0000007f 0828a2c0 dfb9a000 d9181000
0xd9270584:   00001000 00000001 d92705b8 dfb7e61b
0xd9270594:   d9141000 00040000 d92705b0 00001000
0xd92705a4:   08478508 0828a2c0 dfb9a000 d92705c8
0xd92705b4:   dfb073c1 d92705e8 dfb7e5b6 00000000
0xd92705c4:   00040000 deecfed0 08478508 000000c1
0xd92705d4:   d9270620 0000007f 00000000 00001000
0xd92705e4:   defc6000 d9270624 deca6dbf 00000000 Instructions: (pc=0xdfb8151b)
0xdfb8150b:   03 f7 66 81 e6 fc ff 89 75 f4 81 c6 68 fd ff ff
0xdfb8151b:   89 76 30 c7 46 1c 00 00 00 00 56 e8 59 00 00 00 Stack: [0xd9231000,0xd9270d68),  sp=0xd9270574,  free space=253k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libthread.so.1+0x1151b]
C  [libthread.so.1+0xe61b]
C  [libthread.so.1+0xe5b6]  _thr_create+0x3a
V  [libjvm.so+0xa6dbf]
V  [libjvm.so+0xb5e0a]
V  [libjvm.so+0xb5a8d]
j  java.lang.Thread.start0()V+0
j  java.lang.Thread.start()V+29
j  com.aircom.ydweather.ctrl.WeatherProcessorOracle.startGetDBDataThread()V+35
J  com.aircom.ydweather.ctrl.WeatherProcessorOracle$TransDataMoniter.doCheck()V
v  ~RuntimeStub::alignment_frame_return Runtime1 stub
j  com.aircom.ydweather.ctrl.WeatherProcessorOracle$TransDataMoniter.run()V+4
v  ~StubRoutines::call_stub
V  [libjvm.so+0xa8bc7]
V  [libjvm.so+0xa8a34]
V  [libjvm.so+0xa8a18]
V  [libjvm.so+0xb647e]
V  [libjvm.so+0xb63ad]
V  [libjvm.so+0xb6320]
V  [libjvm.so+0xb6221]
V  [libjvm.so+0xb61c5]
V  [libjvm.so+0x2cffa2]Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  java.lang.Thread.start0()V+0
j  java.lang.Thread.start()V+29
j  com.aircom.ydweather.ctrl.WeatherProcessorOracle.startGetDBDataThread()V+35
J  com.aircom.ydweather.ctrl.WeatherProcessorOracle$TransDataMoniter.doCheck()V
v  ~RuntimeStub::alignment_frame_return Runtime1 stub
j  com.aircom.ydweather.ctrl.WeatherProcessorOracle$TransDataMoniter.run()V+4
v  ~StubRoutines::call_stub---------------  P R O C E S S  ---------------Java Threads: ( => current thread )
  0x08286588 JavaThread "ResponseWriterDB" [_thread_blocked, id=19]
  0x08143960 JavaThread "Timer-0" daemon [_thread_blocked, id=16]
  0x08170f18 JavaThread "DeliverWriter" [_thread_blocked, id=15]
  0x08074758 JavaThread "DestroyJavaVM" [_thread_blocked, id=1]
=>0x0827cea8 JavaThread " TransDataMoniter " [_thread_in_vm, id=14]
  0x08293768 JavaThread "ActiveTest" [_thread_blocked, id=13]
  0x08295298 JavaThread "Receiver from ISMG" [_thread_in_native, id=12]
  0x082795a0 JavaThread "Submit" [_thread_blocked, id=11]
  0x08124518 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=9]
  0x081234a8 JavaThread "CompilerThread0" daemon [_thread_blocked, id=8]
  0x08122680 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=7]
  0x0811c000 JavaThread "Finalizer" daemon [_thread_blocked, id=6]
  0x0811b428 JavaThread "Reference Handler" daemon [_thread_blocked, id=5]Other Threads:
  0x0811a398 VMThread [id=4]
  0x08125690 WatcherThread [id=10]VM state:not at safepoint (normal execution)VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
[0x08073c48/0x08073c78] Threads_lock - owner thread: 0x0827cea8Heap
 def new generation   total 576K, used 100K [0xad400000, 0xad4a0000, 0xad8e0000)
  eden space 512K,  17% used [0xad400000, 0xad416b20, 0xad480000)
  from space 64K,  15% used [0xad490000, 0xad4927b0, 0xad4a0000)
  to   space 64K,   0% used [0xad480000, 0xad480000, 0xad490000)
 tenured generation   total 4804K, used 4505K [0xad8e0000, 0xadd91000, 0xb1400000)
   the space 4804K,  93% used [0xad8e0000, 0xadd46778, 0xadd46800, 0xadd91000)
 compacting perm gen  total 8192K, used 2857K [0xb1400000, 0xb1c00000, 0xb5400000)
   the space 8192K,  34% used [0xb1400000, 0xb16ca450, 0xb16ca600, 0xb1c00000)
    ro space 8192K,  64% used [0xb5400000, 0xb5927f30, 0xb5928000, 0xb5c00000)
    rw space 12288K,  45% used [0xb5c00000, 0xb6167f48, 0xb6168000, 0xb6800000)Dynamic libraries:
0x08050000      java
0xdfb70000      /usr/lib/libthread.so.1
0xdfbb0000      /usr/lib/libdl.so.1
0xdfab0000      /usr/lib/libc.so.1
0xdec00000      /map1tools/jdk1.5.0_12/jre/lib/i386/client/libjvm.so
0xdfa50000      /usr/lib/libsocket.so.1
0xdfa30000      /usr/lib/libsched.so.1
0xdfa10000      /usr/lib/libCrun.so.1
0xdf9f0000      /usr/lib/libm.so.1
0xdf940000      /usr/lib/libnsl.so.1
0xdfa80000      /usr/lib/libw.so.1
0xdf910000      /usr/lib/libmp.so.2
0xdf8c0000      /map1tools/jdk1.5.0_12/jre/lib/i386/native_threads/libhpi.so
0xdf880000      /map1tools/jdk1.5.0_12/jre/lib/i386/libverify.so
0xdf830000      /map1tools/jdk1.5.0_12/jre/lib/i386/libjava.so
0xdebd0000      /map1tools/jdk1.5.0_12/jre/lib/i386/libzip.so
0xdc2a0000      /usr/lib/locale/en_US.ISO8859-1/en_US.ISO8859-1.so.2
0xdb4e0000      /map1tools/jdk1.5.0_12/jre/lib/i386/libnet.soVM Arguments:
java_command: com.aircom.ydweather.ctrl.RunWeather
Launcher Type: SUN_STANDARDEnvironment Variables:
CLASSPATH=/map1tools/jdk1.5.0_12/lib/dt.jar:/map1tools/jdk1.5.0_12/lib/tools.jar:.
PATH=/map1tools/jdk1.5.0_12/bin::/:/usr/local/bin:/opt/SUNWspro/bin:/ace:/usr/sbin:/usr/local/sbin:/usr/bin:/opt/nms/bin:/opt/nmstx/
bin:/opt/nms/bin
LD_LIBRARY_PATH=/map1tools/jdk1.5.0_12/jre/lib/i386/client:/map1tools/jdk1.5.0_12/jre/lib/i386:/map1tools/jdk1.5.0_12/jre/../lib/i38
6::/usr/local/lib:/opt/nms/lib:/opt/nmstx/lib:/opt/nms/lib
SHELL=/sbin/shSignal Handlers:
SIGSEGV: [libjvm.so+0x3313c0], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGBUS: [libjvm.so+0x3313c0], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGFPE: [libjvm.so+0x16e100], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGPIPE: [libjvm.so+0x16e100], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGILL: [libjvm.so+0x16e100], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGUSR1: [libjvm.so+0x2d1930], sa_mask[0]=0x00008000, sa_flags=0x00000008
SIGUSR2: [libjvm.so+0x16e100], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGHUP: SIG_IGN, sa_mask[0]=0x00000000, sa_flags=0x00000000
SIGINT: SIG_IGN, sa_mask[0]=0x00000000, sa_flags=0x00000000
SIGQUIT: [libjvm.so+0x2d0ca0], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGTERM: [libjvm.so+0x2d0ca0], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
---------------  S Y S T E M  ---------------OS:                       Solaris 8 2/02 s28x_u7wos_08a INTEL
           Copyright 2002 Sun Microsystems, Inc.  All Rights Reserved.
                           Assembled 18 December 2001uname:SunOS 5.8 Generic_108529-27 i86pc  (T1 libthread)
rlimit: STACK 8480k, CORE infinity, NOFILE 4096, AS infinity
load average:0.05 0.05 0.23CPU:total 1 (cores per cpu 1, threads per core 1) family 6 model 8 stepping 10, cmov, cx8, fxsr, mmxMemory: 4k page, physical 523900k(7764k free)vm_info: Java HotSpot(TM) Client VM (1.5.0_12-b04) for solaris-x86, built on May  2 2007 03:02:19 by unknown with unknown Workshop:0
x550

解决方案 »

  1.   

    虚拟机异常引起的错误,通常不是Java程序本身的问题,而是JVM的问题,有可能是内存操作异常引起的,就像Windows程序的非法操作一样。只能给Sun报告BUG了。
      

  2.   

    减少log的输出量(要大量减少)
    我怀疑是io过量导致的
    jdk可以的话升倒6.0
    6.0的garbage得到了一些强化据说
    最好再坐下thread dump试试
      

  3.   

    不一定是log也可能是别的什么的
    反正就是垃圾太多造成garbage处理不过来了
    rw space 12288K,  45% used [0xb5c00000, 0xb6167f48, 0xb6168000, 0xb6800000) 
    CPU:total 1 (cores per cpu 1, threads per core 1) family 6 model 8 stepping 10, cmov, cx8, fxsr, mmx Memory: 4k page, physical 523900k(7764k free) 
    我个人的看法
      

  4.   

    jvm有问题了!
    建议换个jdk,或者向sun报告!