libgcj/222: GC: failure upon allocation inside a finalizer

bryce@albatross.co.nz bryce@albatross.co.nz
Sun May 7 03:16:00 GMT 2000


>Number:         222
>Category:       libgcj
>Synopsis:       GC: failure upon allocation inside a finalizer
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    tromey
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun May 07 03:16:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Bryce McKinlay
>Release:        Current cvs libgcj, using boehm-gc 5.0alpha7
>Organization:
>Environment:
linux
>Description:
A java finalizer that tries to perform an allocation can 
throw the collector into an infinate loop:

[...]
#43488 0x402355f6 in GC_invoke_finalizers ()
    at ../../../boehm-gc/finalize.c:728
#43489 0x402372bc in GC_generic_malloc (lb=20, k=4)
    at ../../../boehm-gc/malloc.c:130
#43490 0x4015b7a2 in _Jv_AllocObj (size=20) at ../../../libjava/boehm.cc:305
#43491 0x400acf15 in _Jv_AllocObject (c=0x804cdd0, size=20)
    at ../../../libjava/prims.cc:330
#43492 0x804b598 in Finalizer.finalize (this=0x80bdfd0) at Finalizer.java:13
#43493 0x40147a6d in _Jv_FinalizeObject (obj=0x80bdfd0)
    at ../../../libjava/java/lang/natObject.cc:255
#43494 0x4015b84b in call_finalizer (obj=0x80bdfd0, client_data=0x40147a50)
    at ../../../libjava/boehm.cc:336
#43495 0x402355f6 in GC_invoke_finalizers ()
    at ../../../boehm-gc/finalize.c:728
[...]
>How-To-Repeat:
public class Finalizer
{
  public static void main(String args[])
  {
    for (int i=0; i < 500000; i++)
      {
	new Finalizer();
      }
  }
  
  public void finalize()
  {
    new java.util.Vector ();
  }
}
>Fix:
Asynchronous finalization?
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the Java-prs mailing list