Bug#275547: String.intern() has a very low capacity (<64k)
Package: gcj-3.3
Version: 1:3.3.4-13
Severity: normal
$ cat Test.java
class Test
{
public static void main(String[] argv)
{
for (char i = '\u0000'; i < '\uffff'; i++) {
char[] ca = { i };
(new String(ca)).intern();
}
}
}
$ javac Test.java && time java Test
real 0m1.478s
user 0m1.106s
sys 0m0.053s
$ gcj -o Test --main=Test Test.java
$ ./Test
<does not terminate, no CPU>
I've also in a much larger program got String.intern() to just eat CPU and not
continue. I didn't manage to get to a smaller testcase that didn't
busyloop, only to the above testcase that deadlocked.
I guess something must be going wrong in intern().
On woody, the testcase runs fine, also if I add a second character to
10-fold the number of interne'd strings.
--Jeroen
-- System Information:
Debian Release: 3.1
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.7
Locale: LANG=nl_NL.UTF-8@euro, LC_CTYPE=nl_NL.UTF-8@euro
Versions of packages gcj-3.3 depends on:
ii g++-3.3 1:3.3.4-13 The GNU C++ compiler
ii gcc-3.3-base 1:3.3.4-13 The GNU Compiler Collection (base
ii java-common 0.22 Base of all Java packages
ii libc6 2.3.2.ds1-16 GNU C Library: Shared libraries an
ii libgcc1 1:3.4.1-4sarge1 GCC support library
ii libgcj4 1:3.3.4-6sarge1.2 Java runtime library for use with
ii libgcj4-common 1:3.3.4-13 Java runtime library for use with
ii sun-j2sdk1.4 [java-com 1.4.2+05 Java(TM) 2 SDK, Standard Edition,
ii zlib1g 1:1.2.1.1-7 compression library - runtime
-- no debconf information
--
Jeroen van Wolffelaar
jeroen@wolffelaar.nl
http://jeroen.A-Eskwadraat.nl
Reply to: