0 Replies Latest reply on Apr 12, 2010 2:34 PM by 843829

    JVM 1.6.0_02-b05 hanges in satisfy_failed_allocation

      I am having a java application which usually gets to hanged state after running for quite a long time (5 to 6 months). The process has a large number of threads (approx 143), it does huge number of processings over the time period and all of a sudden goes to hanged state. It doesn't respond at all, it doesn't even respond to jstack, pmap or kill -3 commands. We were fortunate enough that we got the pstack and the core of the JVM.

      The JVM has the following details:
      Java(TM) SE Runtime Environment
      java.vm.version = 1.6.0_02-b05
      java.vm.name = Java HotSpot(TM) Server VM
      sun.java.launcher = SUN_STANDARD
      java.runtime.version = 1.6.0_02-b05
      os.arch = sparc

      After loading the core in dbx I could get the stack trace of the process, out of which one thread shows the following

      t@33 (l@33) stopped in ___lwp_cond_wait at 0xff2c5cd0
      0xff2c5cd0: ___lwp_cond_wait+0x0004: ta %icc,0x00000008
      current thread: t@33
      =>[1] ___lwp_cond_wait(0x36168, 0x36150, 0x0, 0x0, 0xfefd6000, 0x36128), at 0xff2c5cd0
      [2] __lwp_cond_wait(0x36168, 0x36150, 0x0, 0x1406f40, 0x0, 0x3ed5c), at 0xff2b0510
      [3] Monitor::wait(0x360f8, 0x51c800, 0x0, 0x3ec00, 0xfefd6000, 0x36128), at 0xfed951f0
      [4] WorkGang::run_task(0x360f8, 0xd48ff794, 0x1, 0x3, 0xb, 0x360c0), at 0xfeea0bc0
      [5] ParNewGeneration::collect(0x4c2c0, 0x35ff8, 0xff0182e8, 0xfeffa24d, 0xfefd6000, 0x51bc50), at 0xfedb691c
      [6] GenCollectedHeap::do_collection(0x35ff8, 0x36048, 0x0, 0x14, 0xff0182e8, 0x1), at 0xfeb6e394
      [7] GenCollectorPolicy::satisfy_failed_allocation(0x35fb0, 0x14, 0x35ff8, 0x36090, 0xfeafcd6c, 0xfeffa44c), at 0xfeafbfb4
      [8] VM_GenCollectForAllocation::doit(0xce97f234, 0x35ff8, 0x35c08, 0x8, 0xfefd6000, 0x36090), at 0xfee9ba28
      [9] VM_Operation::evaluate(0xce97f234, 0x2dc10, 0xfefd6000, 0xfe5, 0x7f2f7d, 0x2e000), at 0xfe98b148
      [10] VMThread::evaluate_operation(0x2dc10, 0xce97f234, 0x4de280, 0x7f2f7d, 0x4de288, 0xfefd6000), at 0xfee9cffc
      [11] VMThread::loop(0x51c800, 0x0, 0x3b52c, 0x3b400, 0x3b530, 0xff011530), at 0xfee9d57c
      [12] VMThread::run(0x51c800, 0x2d400, 0xff003540, 0xfefd6000, 0x2d540, 0x2d400), at 0xfea1ff2c
      [13] java_start(0x51c800, 0x1f, 0x2022, 0xfefd6000, 0xfef58f16, 0x0), at 0xfeda7be8

      What I suspect is that the JVM hanged because of encountering the problem satisfy_failed_allocation()

      Did any one got this problem by any chance? I would be very thankful if any one can help me out. Is there any JVM fix already available for it?
      Thanks in advance.