After getting to learn how gdb worked, I succesfully found an error
condition:

If the java::lang::String::strhash[] array at some point contains not a
single NULL value, nor the string is already interned, then the forloop
on line 66 of natString.cc fails to return, it goes in a busy loop.

This can happen because the hash is only resized if the number of
not-deleted strings if more than 2/3rd, and the number of deleted
strings can be higher than that -- so the strhash is actually full, but
is not resized. I guess that because this function, _Jv_StringFindSlot,
is synchronized on StringClass, pending deletions are blocked, hence no
other tread will resolve this busyloop.

This is probably only one of multiple bugs, as this cannot possibly
explain the deadlock that sometimes happens.

--Jeroen

-- 
Jeroen van Wolffelaar
[EMAIL PROTECTED]
http://jeroen.A-Eskwadraat.nl


Reply via email to