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

Crash in code outside JVM Function name=_XmIEndUpdate

XMLWordPrintable

    • sparc
    • solaris_8



      Name: pa48320 Date: 04/23/2002


      We have a charting JSP utilizing swing ThreeD Graphics bean in Oracle Exchange.
      Exchange is a very large 24x7 High Availability application using JDK 1.3.1_02.
      We have the latest OS patches.

      We get a JDK crash in X/Motif code outside the JVM attempting to use this charting bean.
      The bean and all other code associated with it is 100% Java.
      The crash is, unfortunately, sporadic, but can definately be reproduced by
      repeated running of the program at the end of this report.

      An unexpected exception has been detected in native code outside the VM.
      Unexpected Signal : 10 occurred at PC=0xcbc794b4
      Function name=_XmIEndUpdate
      Library=/usr/dt/lib/libXm.so.4

      Current Java thread:
              at sun.awt.motif.MToolkit.run(Native Method)
              at java.lang.Thread.run(Thread.java:484)

      Dynamic libraries:
      0x10000 /usr/620_java/j2sdk1_3_1_02/bin/../bin/sparc/native_threads/java
      0xff370000 /usr/lib/lwp/libthread.so.1
      0xff3a0000 /usr/lib/libdl.so.1
      0xff280000 /usr/lib/libc.so.1
      0xff350000 /usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1
      0xfec00000 /usr/620_java/j2sdk1_3_1_02/jre/lib/sparc/server/libjvm.so
      0xff250000 /usr/lib/libCrun.so.1
      0xff230000 /usr/lib/libsocket.so.1
      0xfeb00000 /usr/lib/libnsl.so.1
      0xff200000 /usr/lib/libm.so.1
      0xff360000 /usr/lib/libw.so.1
      0xff360000 /usr/lib/libw.so.1
      0xff1c0000 /usr/lib/libmp.so.2
      0xff190000 /usr/620_java/j2sdk1_3_1_02/jre/lib/sparc/native_threads/libhpi.
      so
      0xff160000 /usr/620_java/j2sdk1_3_1_02/jre/lib/sparc/libverify.so
      0xfebc0000 /usr/620_java/j2sdk1_3_1_02/jre/lib/sparc/libjava.so
      0xff120000 /usr/620_java/j2sdk1_3_1_02/jre/lib/sparc/libzip.so
      0xfe9e0000 /usr/lib/nss_files.so.1
      0xfe9c0000 /usr/620_java/j2sdk1_3_1_02/jre/lib/sparc/libawt.so
      0xcbe80000 /usr/620_java/j2sdk1_3_1_02/jre/lib/sparc/motif21/libmawt.so
      0xfe970000 /usr/620_java/j2sdk1_3_1_02/bin/../jre/lib/sparc/libmlib_image.s
      o
      0xcbc00000 /usr/dt/lib/libXm.so.4
      0xfd890000 /usr/openwin/lib/libXt.so.4
      0xfe940000 /usr/openwin/lib/libXext.so.0
      0xfdbe0000 /usr/openwin/lib/libXtst.so.1
      0xcbb00000 /usr/openwin/lib/libX11.so.4
      0xfdbc0000 /usr/openwin/lib/libSM.so.6
      0xfd860000 /usr/openwin/lib/libICE.so.6
      0xfd830000 /usr/openwin/lib/libdga.so.1
      0xcba00000 /usr/620_java/j2sdk1_3_1_02/jre/lib/sparc/libfontmanager.so
      0xfb420000 /usr/openwin/lib/libdps.so.5
      Local Time = Tue Apr 16 13:02:27 2002
      Elapsed Time = 23
      #
      # The exception above was detected in native code outside the VM
      #
      # Java VM: Java HotSpot(TM) Server VM (1.3.1_02-b02 mixed mode)
      #

      I will provide a sample program (below) in Java which occaisionally will crash
      with the same error. Like I said, it's intermittent, but definately happens if
      you run it a few times.

      I can provide, given a location to ftp:

      1) An archive (198 Meg, compressed!) of all of the archive files needed to run the program.
      Most of the classes are not used, but extracting the required ones is too difficult.
      2) A copy of all of the environment settings and the command to run the
      sample program
      3) A core file of the JDK crash

      Just tell me where to send them and how.

      Reproduction program below:

      import oracle.apps.pom.mktint.*;
      import oracle.dss.dataView.*;
      import java.awt.*;
      import java.util.*;
      import oracle.dss.dataView.managers.*;
      import oracle.apps.pom.util.GraphicsUtil;
      import oracle.dss.graph.*;
      import javax.swing.*;
      import java.awt.Color;
      import java.io.*;
      public class ChartStress extends Thread
      {
         public ChartStress()
         {
         }

         public void run()
         {
           Graph g = new Graph();
          g.getO1TickLabel().setTickLabelStaggered(true);
          g.getO1TickLabel().setTextFittingAutomatic(false);
          g.getO1TickLabel().getGraphFont().setGraphProportionalFontSize(1300);

          g.getY1TickLabel().setTextFittingAutomatic(false);
          g.getY1TickLabel().getGraphFont().setGraphProportionalFontSize(1500);

          g.getSliceLabel().getGraphFont().setGraphProportionalFontSize(1600);
          g.getSliceLabel().setTextType(SliceLabel.LD_VALUE);
          g.getLegendArea().setLegendTextPosition(LegendArea.LTP_BELOW);
          g.getLegendText().setTextFittingAutomatic(true);
          g.getLegendText().setHorizontalAlignment(SwingConstants.CENTER);
          g.setPieDepth(10);
          g.setPieTilt(20);
          g.setDepthRadius(100);
          g.setDepthAngle(30);
          g.getPlotArea().setFillColor(Color.red);
          g.setGraphType(18);
          imagemapping(g);
          try
          {
             FileOutputStream os = new FileOutputStream("/tmp/chart.gif");
      // response.setContentType("image/gif");
             g.exportToGIF(os);
             os.flush();
             os.close();
          }
          catch (Exception e) {System.err.println(e.getMessage());}

         }


         public void imagemapping(Graph g)
         {

      // ChartDataSource datasource = g.getDataSource();

            Enumeration map = g.getImagemapEnumeration( Graph.MAP_DATA );
            while( map.hasMoreElements()) {
            ImagemapComponent comp = (ImagemapComponent)map.nextElement();
            Polygon poly = comp.getPlacement();
            ComponentHandle handle = comp.getComponentHandle();

            int series = -1, group = -1;

            if( handle instanceof DataComponentHandle ) {
              int row = ((DataComponentHandle)handle).getRow();
              int column = ((DataComponentHandle)handle).getColumn();
              if(g.isDataRowShownAsASeries()) {
                series = (int)row;
                group = (int)column;
              } else {
                series = (int)column;
                group = (int)row;
              }
            } else if( handle instanceof SeriesComponentHandle ) {
              series = ((SeriesComponentHandle)handle).getSeries();
            } else if( handle instanceof GroupComponentHandle ) {
              group = ((GroupComponentHandle)handle).getGroup();
            }

            String entry = "<AREA SHAPE=POLYGON COORDS=\"";
            for( int i=0; i<poly.npoints; i++) {
              if( i!=0 )
                entry += ", ";
              entry += (poly.xpoints[i] + ", " + poly.ypoints[i]);
            }

            entry += "\">";
            System.out.println( entry );
          }
         }

         public static void main( String[] args )
         {
            ChartStress s = null;
            int tests = 20;
            for (int i = 0; i< tests; i++)
            {
               for (int j = 0; j<40; j++)
               {
                 System.out.println( "--------------------------------");
                 System.out.println( "Chart #"+((i+1)*(j+1))+" -------------------");
                 s = new ChartStress();
                 s.start();
               }
               try { s.join(); } catch (Exception e) {}
            }
            try { s.join(); } catch (Exception e) {}
            System.exit(0);
         }
      }
      (Review ID: 145494)
      ======================================================================

            mbronsonsunw Mike Bronson (Inactive)
            pallenba Peter Allenbach (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: