JDK-6996336 : JVM crash in recursive processCubic calls (libdcpr.so)
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 6u22,7,8
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: linux
  • CPU: x86
  • Submitted: 2010-10-30
  • Updated: 2024-04-12
  • Resolved: 2016-06-16
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdResolved
Related Reports
Duplicate :  
Relates :  
Description
FULL PRODUCT VERSION :
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)


ADDITIONAL OS VERSION INFORMATION :
Linux vilma 2.6.35-22-generic #35-Ubuntu SMP Sat Oct 16 20:45:36 UTC 2010 x86_64 GNU/Linux


A DESCRIPTION OF THE PROBLEM :
The following java class crashes the VM all times:

import java.awt.geom.*;
import java.awt.*;
import java.awt.image.*;

public class PathDasherSegfault {
    public static void main( String[] args ) {
        GeneralPath path = new GeneralPath(GeneralPath.WIND_NON_ZERO);
        path.moveTo(8408685.0, -1124643.0);
        path.curveTo(8408693.0, -1124638.8, 8408703.0, -1124636.8,
8408712.0, -1124637.0);

        BufferedImage image = new BufferedImage(100, 100,
BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = image.createGraphics();

        Stroke stroke = new BasicStroke(0.8503937f,
BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10f, new
float[]{10.204724f,
                5.102362f}, 0f);
        g2.setStroke(stroke);

        System.out.println("about to draw");
        g2.draw(path);
        System.out.println("OK");
    }

}

stack trace is the following:

#0  0x00007f7c9154d4a8 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#1  0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#2  0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#3  0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#4  0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5  0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#6  0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#7  0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#8  0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#9  0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#10 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#11 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#12 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#13 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#14 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#15 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#16 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#17 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#18 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#19 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#20 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#21 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#22 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#23 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#24 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#25 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#26 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#27 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#28 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#29 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#30 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#31 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#32 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#33 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#34 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#35 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#36 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#37 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#38 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#39 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#40 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#41 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#42 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#43 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
.......................
#5374 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5375 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5376 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5377 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5378 0x00007f7c9154d584 in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5379 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5380 0x00007f7c9154d56c in processCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5381 0x00007f7c9154dd95 in appendCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5382 0x00007f7c91545c60 in Java_sun_dc_pr_PathDasher_appendCubic () from /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/amd64/libdcpr.so
#5383 0x00007f7cd735ec88 in ?? ()
#5384 0x00007f7cfffffffc in ?? ()
#5385 0x00007f7cdaccc4d0 in ?? ()
#5386 0x000000004146e500 in ?? ()
#5387 0x000000004146f000 in ?? ()
#5388 0x000000004146f500 in ?? ()
#5389 0x000000004146f8d8 in ?? ()
#5390 0x000000004146f000 in ?? ()
#5391 0x0000000000000000 in ?? ()


STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Just compile and launch below java program.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No crash :-)
ACTUAL -
JVM crash

ERROR MESSAGES/STACK TRACES THAT OCCUR :
See below

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import java.awt.geom.*;
import java.awt.*;
import java.awt.image.*;

public class PathDasherSegfault {
    public static void main( String[] args ) {
        GeneralPath path = new GeneralPath(GeneralPath.WIND_NON_ZERO);
        path.moveTo(8408685.0, -1124643.0);
        path.curveTo(8408693.0, -1124638.8, 8408703.0, -1124636.8,
8408712.0, -1124637.0);

        BufferedImage image = new BufferedImage(100, 100,
BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = image.createGraphics();

        Stroke stroke = new BasicStroke(0.8503937f,
BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10f, new
float[]{10.204724f,
                5.102362f}, 0f);
        g2.setStroke(stroke);

        System.out.println("about to draw");
        g2.draw(path);
        System.out.println("OK");
    }

}

---------- END SOURCE ----------

Comments
EVALUATION Not an input method issue, but looks like 2d issue.
20-06-2011