This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GCJ 3.3 LEAKS Throwable & Derived Classes


Hello:

We have just uncovered a really horrible problem with GCJ 3.3, on multiple platforms (x86 linux, arm-wince-pe, ARM/linux).

Instances of Throwable, and classes derived from it are leaked by garbage collection, in the following way. The GC heap size is unaffected, but the process virtual size/RSS reflects the leakage. Here is a sample program that demonstrates the problem:

class Catcher {
 public static void main(String [] args) {
   System.out.println("now in main");

   while (true) {
     Exception foo = new Exception();
   }
 }
}

The output from Boehm GC (GC_STDOUT/GC_PRINT_STATS turned on) appears "normal", and the heap size reported seems reasonable. But the PROCESS SIZE grows without bound, until the test machine is brought to a standstill.

All you have to do to make this work is NOT allocate Throwable or a class derived from Throwable.

Questions:
1. Why would GC be so discriminating? GC is being invoked in the above test, but it simply does not deallocate Throwable or classes derived from it. It's as if GC just completely ignores these objects.


2. I have been reading boehm.cc and related code looking for anything that might treat Throwable specially. I cannot find anything. Does GCJ 3.3 consider Throwable to be a "normal object", and should GC be able to deallocate it?

We are being massively killed by this problem. Please, GCJ experts, throw us a bone if you possibly can.

NOTE: GCJ 4.0.2 DOES NOT exhibit this problem. Unfortunately, GCJ 4 is so "embedded system unfriendly" that we are unable to use it. So this issue/discussion pertains to GCJ 3.3 only.

Thanks in advance,
craig vanderborgh
voxware incorporated


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]