This is the mail archive of the
mailing list for the Mauve project.
Re: runFinalization in Classloader.initialize doesn't run on cacao
- From: Olivier Jolly <olivier dot jolly at pcedev dot com>
- To: Jeroen Frijters <jeroen at sumatra dot nl>
- Cc: mauve-discuss at sources dot redhat dot com, Mauve Patch List <mauve-patches at sources dot redhat dot com>
- Date: Sat, 11 Mar 2006 22:26:13 +0100
- Subject: Re: runFinalization in Classloader.initialize doesn't run on cacao
- References: <D92197D0A6547B44A1567814F851FA681805C9@LEMBU.sumatrasoftware.com>
Jeroen Frijters a écrit :
>Olivier Jolly wrote:
>> while wandering around with Classloaders, I found that the teslet
>>gnu.testlet.java.lang.Classloader.initialize wasn't running
>>It seems that in the beginning of the test method, it creates an
>>anonymous Classloader and then call System.gc() and
>>System.runFinalization() and expects the finalizer to be ran to set a
>>singleton like variable holder.
>> While this is ok in jamvm and sun jre 1.5.0, cacao doesn't run the
>>finalizer since runFinalization only gives a hint and not a mandatory
>>order, so it is compliant.
>> My question is whether I'm missing something and this way of doing
>>brings something in this test or it could be rewritten in a
>>simpler way, more compliant with the various jvm.
>I'm obviously not aware of an easier (or more robust) way to do this, or
>I would have used it. However, this is a very important test (from a
>security pov), so it has to be in. If Cacao can't or won't support
>System.runFinalization(), I suggest skipping this test.
Ok, I feared something like this. However, the way this test is written
seems very obscure (to me at least). Could you advise me why is the
class loader created with an exception thrown in the constructor and
then the reference to the semi-created instance is retrieved in the
finalizer. And then I wonder why it then raises SecurityException
instead of ClassFormatError. I reread about the finalizer semantic and
the ClassLoader api without finding a clue.
Thanks a lot in advance