an unmotivated IllegalArgumentException

Roland.Hautz root@roland.evosys.de
Wed Jun 5 11:20:00 GMT 2002


Hello List,

please help me with the interpretation of the appended gdb session. There is a
crash in java.util.Hashtable.Hashtable(int, float), and I can't think of any
reason for that (besides of a gcj bug in general ;-)) .

Simple excerps of the sources don't show the error. The simplest testcase I could
come up with is the xalan processor together with a particular stylesheet.

In frame #1 initialCapacity should be 11 and the line number 264, but I guess
gdb can't get those right because of -O2 optimization for libgcj.

xalan is compiled without -O; I assume this implies -no-inline?

What else to look at?

This exception is thrown without reason:

Breakpoint 3, java.lang.IllegalArgumentException.IllegalArgumentException(java.lang.String) (this=@855ebd0, s=@8560740)
    at /home/roland/gcc/libjava/java/lang/IllegalArgumentException.java:77
77          }
Current language:  auto; currently java
(gdb) p s
$1 = java.lang.String "Illegal Load: 0.75"
(gdb) bt
#0  java.lang.IllegalArgumentException.IllegalArgumentException(java.lang.String) (this=@855ebd0, s=@8560740)
    at /home/roland/gcc/libjava/java/lang/IllegalArgumentException.java:77
#1  0x410e5ad8 in java.util.Hashtable.Hashtable(int, float) (this=@855ebd0, initialCapacity=139855696, loadFactor=0.75)
    at /home/roland/gcc/libjava/java/util/Hashtable.java:271
#2  0x410e58e2 in java.util.Hashtable.Hashtable() (this=@80a37a8) at /home/roland/gcc/libjava/java/util/Hashtable.java:213
#3  0x4092bb9d in org.apache.xml.dtm.ref.ExpandedNameTable.finit$() (this=@8568fa0) at ExpandedNameTable.java:108
#4  ...
...
#14 0x40183147 in org.apache.xalan.transformer.TransformerImpl.transform(javax.xml.transform.Source, javax.xml.transform.Result) (
    this=@840bed8, xmlSource=@8425ed0, outputTarget=@83fdac0) at TransformerImpl.java:1032
#15 0x0804fb98 in org.apache.xalan.xslt.Process.main(java.lang.String[]) (argv=@8082fc0) at Process.java:894
...
(gdb) down
#1  0x410e5ad8 in java.util.Hashtable.Hashtable(int, float) (this=@855ebd0, initialCapacity=139855696, loadFactor=0.75)
    at /home/roland/gcc/libjava/java/util/Hashtable.java:271
271       }

(gdb) l
258       public Hashtable(int initialCapacity, float loadFactor)
259       {
260         if (initialCapacity < 0)
261           throw new IllegalArgumentException("Illegal Capacity: "
262                                              + initialCapacity);
263         if (! (loadFactor > 0)) // check for NaN too
264           throw new IllegalArgumentException("Illegal Load: " + loadFactor);
265
266         if (initialCapacity == 0)
267           initialCapacity = 1;
268         buckets = new HashEntry[initialCapacity];
269         this.loadFactor = loadFactor;
270         threshold = (int) (initialCapacity * loadFactor);
271       }

(gdb) p ! (loadFactor > 0)
$6 = false

(gdb) frame 3
#3  0x4092bb9d in org.apache.xml.dtm.ref.ExpandedNameTable.finit$() (this=@8568fa0) at ExpandedNameTable.java:108
108       Hashtable m_hashtable = new Hashtable();

> gcj --version
gcj (GCC) 3.2 20020601 (experimental)

> uname -mrs
Linux 2.4.18-4GB i586


--===-... And it is said ...-=+=-----... Superstition bears adversity ...---===
Dipl.-Phys. Roland Hautz      |Tel.:+49=8631-163136      R.Hautz@inn-salzach.de
                              |PGP public key 1024D/F5F6E1B2; key fingerprint :
Software Engineer             |5FB26673  5DE47D25  226D0ABA  E4528AB5  F5F6E1B2



More information about the Java mailing list