[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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.


-- 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:       compression library - runtime

-- no debconf information

Jeroen van Wolffelaar

Reply to: