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

AltStyle によって変換されたページ (->オリジナル) /