Small example of livelock regression in garbage collector for GCJ 3.3 under Win32

Andrew Haley aph@redhat.com
Tue May 20 16:15:00 GMT 2003


Øyvind Harboe writes:
 > Ah!
 > 
 > Finally I got to the bottom of this. I've managed to 
 > put together a small example that reproduces the 
 > problems I've been seeing. Hopefully this testcase
 > is useful under Linux as well.
 > 
 > Short version: GCJ 3.3 will eventually livelock if an 
 > exception is caused in a finalize method.
 > 
 > Compile the program below. It will livelock under 3.3,
 > with 3.2 it does not livelock.
I can not reproduce this with i686-linux-gnu. How long does it take?
What _exactly_ are the symptoms of this "livelock"?
There was a deadlock between exception handling and the garbage
collector, but Hans fixed that; AFAICR the fix went into gcc 3.3.
 > 	Foobar xxx;
 > 
 > 	class Foobar
 > 	{
 > 		public void urk()
 > 		{
 > 		};
 > 
 > 		protected void finalize() throws Throwable
 > 		{
 > 			/* cause an exception */
 > 			xxx.urk();
I take it that this is a null pointer exception. Presumably throwing
any exception here would do the same thing. Did you tyr?
Andrew.


More information about the Java mailing list

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