Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6174796

JVM crash in Java2D after changes to GC configuration

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P1 P1
    • 1.4.2_04
    • 1.4.2_04
    • hotspot
    • None
    • sparc
    • solaris_9

      When the customer changes their GC configuration, they start seeing one of two "unexpected Signal" crashes, shown below. This only happens so far on their production system under load - all attempts to build a reproduction has so far failed.

      The customers initial description:

      JVM crashes / core dumps under load after tuning garbage collection parameters. Original parameters were causing frequent Full GCs (even with lots of memory available), revised parameters had the desired effect of only doing Full GCs when the heap was full, however the JVM consistently dies under load.

      Original parameters (currently running - changes rolled back):
      JAVA_OPTS="-Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFFF -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFFF -server -XX:SoftRefLRUPolicyMSPerMB=20000 -Xconcurrentio -Xms1536m -Xmx1536m -XX:PermSize=32m -XX:MaxPermSize=128m -XX:+UseParallelGC -Xverify:none -XX:NewSize=256m -XX:MaxNewSize=256m -XX:SurvivorRatio=20000 -XX:MaxTenuringThreshold=0 -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCTimeStamps -Xloggc:/opt/prod/jboss/server/bridges/log/jboss4_gclog.log"

      New parameters (that cause JVM crash):
      JAVA_OPTS="-server -Xconcurrentio -Xms1536m -Xmx1536m -XX:PermSize=32m -XX:MaxPermSize=128m -XX:+UseParallelGC -XX:-UseAdaptiveSizePolicy -Xverify:none -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/opt/prod/jboss/server/bridges/log/jboss4_gclog.log"

      Platform information:

      2 * Sun Fire 880, dual 750MHz CPUs, 4GB RAM.
      Solaris 9
      Java 2 SE 1.4.2_04 (product list above only has up to 1.4.1_02???)
      JBoss 3.2.3 / Tomcat 4.1.29
      Clustered web applications
      DESCRIPTIONEND
      TESTCASEBEGIN
      Have been unable to create a reproducible test case. Two dumps below (one from each node in the cluster). The failures occured while performing the same operation (dynamically rending a chart - code has been in product for 18mths unchanged)

      An unexpected exception has been detected in native code outside the VM.
      Unexpected Signal : 10 occurred at PC=0x8E3478C0
      Function=Java_sun_dc_pr_PathStroker_reset+0x54
      Library=/apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libdcpr.so

      Current Java thread:
              at sun.dc.pr.PathStroker.reset(Native Method)
              at sun.dc.pr.Rasterizer.reset(Rasterizer.java:711)
              at sun.java2d.pipe.DuctusRenderer.dropRasterizer(DuctusRenderer.java:55)
              - locked <0xf374e3e0> (a java.lang.Class)
              at sun.java2d.pipe.DuctusShapeRenderer.renderPath(DuctusShapeRenderer.java:109)
              at sun.java2d.pipe.DuctusShapeRenderer.fill(DuctusShapeRenderer.java:49)
              at sun.java2d.pipe.ValidatePipe.fill(ValidatePipe.java:119)
              at sun.java2d.SunGraphics2D.fill(SunGraphics2D.java:2157)
              at org.jfree.chart.renderer.BarRenderer.drawHorizontalItem(Unknown Source)
              at org.jfree.chart.renderer.BarRenderer.drawItem(Unknown Source)
              at org.jfree.chart.plot.CategoryPlot.render(Unknown Source)
              at org.jfree.chart.plot.CategoryPlot.draw(Unknown Source)
              at org.jfree.chart.JFreeChart.draw(Unknown Source)
              at org.jfree.chart.JFreeChart.createBufferedImage(Unknown Source)
              at org.jfree.chart.JFreeChart.createBufferedImage(Unknown Source)
              at bridges.cx04.presentation.action.GetChartAction.writeImage(GetChartAction.java:243)
              at bridges.cx04.presentation.action.GetChartAction.execute(GetChartAction.java:104)
              at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)

      Dynamic libraries:
      0x10000 /opt/prod/j2sdk1.4.2_04/bin/java
      0xff380000 /usr/lib/libthread.so.1
      0xff3b0000 /usr/lib/libdl.so.1
      0xff280000 /usr/lib/libc.so.1
      0xff370000 /usr/platform/SUNW,Sun-Fire-880/lib/libc_psr.so.1
      0xfec00000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/server/libjvm.so
      0xff240000 /usr/lib/libCrun.so.1
      0xff220000 /usr/lib/libsocket.so.1
      0xfeb00000 /usr/lib/libnsl.so.1
      0xfeab0000 /usr/lib/libm.so.1
      0xff200000 /usr/lib/libsched.so.1
      0xff270000 /usr/lib/libw.so.1
      0xfebe0000 /usr/lib/libmp.so.2
      0xfea80000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/native_threads/libhpi.so
      0xfea60000 /usr/lib/nss_files.so.1
      0xfea20000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libverify.so
      0xfe9e0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libjava.so
      0xfe9c0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libzip.so
      0xfc7a0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libnet.so
      0x916d0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/librmi.so
      0x8fd90000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libioser12.so
      0x8e9c0000 /usr/lib/nss_dns.so.1
      0x8e620000 /usr/lib/libresolv.so.2
      0x83800000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libawt.so
      0x89900000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libmlib_image.so
      0x8e440000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/headless/libmawt.so
      0x83700000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libfontmanager.so
      0x8e340000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libdcpr.so
      0x8e230000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libjpeg.so

      Heap at VM Abort:
      Heap
       PSYoungGen total 229376K, used 112846K [0x91800000, 0xa1800000, 0xa1800000)
        eden space 196608K, 40% used [0x91800000,0x96637098,0x9d800000)
        from space 32768K, 99% used [0x9d800000,0x9f7fc7f0,0x9f800000)
        to space 32768K, 0% used [0x9f800000,0x9f800000,0xa1800000)
       PSOldGen total 1310720K, used 1126174K [0xa1800000, 0xf1800000, 0xf1800000)
        object space 1310720K, 85% used [0xa1800000,0xe63c7ab8,0xf1800000)
       PSPermGen total 77312K, used 51200K [0xf1800000, 0xf6380000, 0xf9800000)
        object space 77312K, 66% used [0xf1800000,0xf4a00198,0xf6380000)
      Local Time = Thu Sep 30 09:47:02 2004
      Elapsed Time = 42828
      #
      # The exception above was detected in native code outside the VM
      #
      # Java VM: Java HotSpot(TM) Server VM (1.4.2_04-b05 mixed mode)
      #
      Abort - core dumped
      Thu Sep 30 09:52:58 EDT 2004
      ================================================================================

      An unexpected exception has been detected in native code outside the VM.
      Unexpected Signal : 11 occurred at PC=0x8E9AFB5C
      Function=[Unknown. Nearest: Java_sun_dc_pr_PathStroker_cInitialize+0x7B14]
      Library=/apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libdcpr.so

      Current Java thread:
              at sun.dc.pr.PathDasher.setDash(Native Method)
              at sun.dc.pr.Rasterizer.setDash(Rasterizer.java:334)
              at sun.java2d.pipe.DuctusRenderer.createShapeRasterizer(DuctusRenderer.java:269)
              at sun.java2d.pipe.DuctusShapeRenderer.renderPath(DuctusShapeRenderer.java:57)
              at sun.java2d.pipe.DuctusShapeRenderer.draw(DuctusShapeRenderer.java:45)
              at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2129)
              at org.jfree.chart.renderer.AbstractCategoryItemRenderer.drawRangeGridline(Unknown Source)
              at org.jfree.chart.plot.CategoryPlot.drawGridlines(Unknown Source)
              at org.jfree.chart.plot.CategoryPlot.draw(Unknown Source)
              at org.jfree.chart.JFreeChart.draw(Unknown Source)
              at org.jfree.chart.JFreeChart.createBufferedImage(Unknown Source)
              at org.jfree.chart.JFreeChart.createBufferedImage(Unknown Source)
              at bridges.cx04.presentation.action.GetChartAction.writeImage(GetChartAction.java:243)
              at bridges.cx04.presentation.action.GetChartAction.execute(GetChartAction.java:104)
              at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
              at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
              at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
              at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
              at bridges.authPortal.presentation.filters.AuthFilter.doFilter(AuthFilter.java:238)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
              at bridges.cx04.presentation.filter.AttackDetectFilter.doFilter(AttackDetectFilter.java:163)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
              at bridges.cx04.presentation.filter.PreviewHostFilter.doFilter(PreviewHostFilter.java:53)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
              at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
              at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
              at org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java:220)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
              at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
              at org.jboss.web.tomcat.tc4.statistics.ContainerStatsValve.invoke(ContainerStatsValve.java:76)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
              at org.jboss.web.tomcat.session.ClusteredSessionValve.invoke(ClusteredSessionValve.java:78)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
              at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
              at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
              at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
              at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
              at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
              at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
              at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:197)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
      at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
      at java.lang.Thread.run(Thread.java:534)

      Dynamic libraries:
      0x10000 /opt/prod/j2sdk1.4.2_04/bin/java
      0xff380000 /usr/lib/libthread.so.1
      0xff3b0000 /usr/lib/libdl.so.1
      0xff280000 /usr/lib/libc.so.1
      0xff370000 /usr/platform/SUNW,Sun-Fire-880/lib/libc_psr.so.1
      0xfec00000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/server/libjvm.so
      0xff230000 /usr/lib/libCrun.so.1
      0xff210000 /usr/lib/libsocket.so.1
      0xfeb00000 /usr/lib/libnsl.so.1
      0xfeab0000 /usr/lib/libm.so.1
      0xff1f0000 /usr/lib/libsched.so.1
      0xff260000 /usr/lib/libw.so.1
      0xfebd0000 /usr/lib/libmp.so.2
      0xfea80000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/native_threads/libhpi.so
      0xfea60000 /usr/lib/nss_files.so.1
      0xfea10000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libverify.so
      0xfe9d0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libjava.so
      0xfe9b0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libzip.so
      0xfc7a0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libnet.so
      0x916b0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/librmi.so
      0x8fa60000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libioser12.so
      0x8eea0000 /usr/lib/nss_dns.so.1
      0x8eca0000 /usr/lib/libresolv.so.2
      0x83c80000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libawt.so
      0x89080000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libmlib_image.so
      0x8e9e0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/headless/libmawt.so
      0x83580000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libfontmanager.so
      0x8e9a0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libdcpr.so
      0x8e7b0000 /apps/prod/j2sdk1.4.2_04/jre/lib/sparc/libjpeg.so

      Heap at VM Abort:
      Heap
      PSYoungGen total 229376K, used 175978K [0x91800000, 0xa1800000, 0xa1800000)
      eden space 196608K, 89% used [0x91800000,0x9c3daa18,0x9d800000)
      from space 32768K, 0% used [0x9d800000,0x9d800000,0x9f800000)
      to space 32768K, 0% used [0x9f800000,0x9f800000,0xa1800000)
      PSOldGen total 1310720K, used 412969K [0xa1800000, 0xf1800000, 0xf1800000)
      object space 1310720K, 31% used [0xa1800000,0xbab4a5d0,0xf1800000)
      PSPermGen total 88832K, used 52698K [0xf1800000, 0xf6ec0000, 0xf9800000)
      object space 88832K, 59% used [0xf1800000,0xf4b76b98,0xf6ec0000)

      Local Time = Thu Sep 30 08:41:59 2004
      Elapsed Time = 39438
      #
      # The exception above was detected in native code outside the VM
      #
      # Java VM: Java HotSpot(TM) Server VM (1.4.2_04-b05 mixed mode)
      #
       space 196608K, 89% used space 32768K, 0% used space 32768K, 0% used space 1310720K, 31% used space 88832K, 59% used# An error report file has been saved as
      hs_err_pid1150.log.
      # Please refer to the file for further information.
      #
      Abort - core dumped
      Thu Sep 30 09:53:55 EDT 2004
      ================================================================================

      I've got too stack traces off them, which are tarballed up and attached. Further investigation has suggested a connection to 4587651, in that this is happening in Java2D in a way similar to the Double.NaN problem seen there but as yet not fixed. But that doesn't explain why it only happens under load with these GC arguments. Even so, last night they upgraded their hardware and tonight they will change to non anti-aliased, both to see if it helps solve the problem.

      The customer Describes their product as:

      Bridges products are subscribed to primarily by high-schools throughout
      the US and Canada. Our clients use these products as a core part of
      their curriculum, and depend heavily on the products being highly
      available and performant in a classroom situation, where time is very
      prescious.
      ###@###.### 10/6/04 09:36 GMT

            collins Gary Collins (Inactive)
            mbowyer Mark Bowyer (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: