This is the mail archive of the java-prs@sourceware.cygnus.com mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

libgcj/103: libgcj crashes on string operation



>Number:         103
>Category:       libgcj
>Synopsis:       libgcj crashes on string operation
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    tromey
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Nov 16 10:00:01 PST 1999
>Closed-Date:
>Last-Modified:
>Originator:     gback@cs.utah.edu
>Release:        CVS ca. Oct 15
>Organization:
>Environment:
RH 5.2, glibc 2.0.7, Linux 2.2.12
>Description:
libgcj crashes on the following program.
Note that gcj won't compile the .java code, use
Sun's JDK or jikes to create bytecode first:


(gdb) run
Starting program: /x/gback/transvirtual/tmp/gcjpure/./a.out
1
2
3

Program received signal SIGSEGV, Segmentation fault.
0x40100a28 in java::lang::String::hashCode (this=0x0)
    at ../../../libgcj/libjava/java/lang/natString.cc:90
90        return hashChars(JvGetStringChars(this), length());
Current language:  auto; currently c++
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
java::lang::String::charAt (this=0x400a92a0, i=0)
    at ../../../libgcj/libjava/java/lang/natString.cc:444
444       return JvGetStringChars(this)[i];
(gdb) bt
#0  java::lang::String::charAt (this=0x400a92a0, i=0)
    at ../../../libgcj/libjava/java/lang/natString.cc:444
#1  0x4008fa7a in gnu.gcj.convert.Output_8859_1.write (this=0x8067f60,
    str=0x400a92a0, inpos=1, inlength=512, work=0x808af00)
    at ../../../libgcj/libjava/gnu/gcj/convert/Output_8859_1.java:48
#2  0x400a8c2f in java.io.PrintStream.writeChars (this=0x8063d40,
    str=0x400a92a0, offset=0, count=961102)
    at ../../../libgcj/libjava/java/io/PrintStream.java:130
#3  0x400a86f4 in java.io.PrintStream.print (this=0x8063d40, str=0x400a92a0,
    println=true) at ../../../libgcj/libjava/java/io/PrintStream.java:63
#4  0x400a92d7 in java.io.PrintStream.println (this=0x8063d40, str=0x400a92a0)
    at ../../../libgcj/libjava/java/io/PrintStream.java:220
#5  0x80492b5 in C.main () at C.java:14
#6  0x400ff815 in java::lang::FirstThread::run (this=0x8064f90)
    at ../../../libgcj/libjava/java/lang/natFirstThread.cc:52
#7  0x400bcb8a in java.lang.Thread.run_ (this=0x8064f90)
    at ../../../libgcj/libjava/java/lang/Thread.java:119
#8  0x40103fee in java::lang::Thread::run__ (obj=0x8064f90)
    at ../../../libgcj/libjava/java/lang/natThread.cc:288
#9  0x4011317a in _Jv_ThreadStart (thread=0x8064f90,
    meth=0x40103fd0 <java::lang::Thread::run__(java::lang::Object *)>)
    at ../../../libgcj/libjava/no-threads.cc:25
#10 0x4010406b in java::lang::Thread::start (this=0x8064f90)
    at ../../../libgcj/libjava/java/lang/natThread.cc:301
#11 0x4008d2ce in JvRunMain (klass=0x804c1a0, argc=1, argv=0xbffffad4)
    at ../../../libgcj/libjava/prims.cc:790
#12 0x804938b in main (argc=1, argv=0xbffffad4) at /tmp/ccVTmO9rmain.i:9

>How-To-Repeat:
Compile and run this program:

import java.io.*;

public class C {
        public static void main(String av[]) {
                String x = null, y = null, z = null;
                LineNumberReader r = new LineNumberReader(
                                        new InputStreamReader(System.in));
                try {
                        x = r.readLine();
                        y = r.readLine();
                        z = r.readLine();
                        ((String)null).hashCode();
                } catch (Exception e) {
                        System.out.println(x);
                        System.out.println(y);
                        System.out.println(z);
                }
        }
}

Note that if you compile C.java with jikes, gcj will
fail even if the exception is not caused by a
NullPointerException, but even by a simple "throw new
Exception".

Secondly, if you only print x and y, it works.
Third, if you only print x, it prints nothing, but
doesn't crash.


>Fix:
None
>Release-Note:
>Audit-Trail:
>Unformatted:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]