Gregory Shimansky wrote:
> On Monday 09 October 2006 21:01 Pavel Pervov wrote:
>> Geir, all,
>> I did reserched this failure some time ago. The same failure was observed
>> on gc.Finalizers.
>> Here is what I've found.
>>
>> Now what is happening:
>> 1)       FinalizerThread is being run
>> 2)       java/lang/Object.notify()V is being compiled
>> 3)       java/lang/InternalError is being resolved (and loaded) for
>> java/lang/Object
>> 4)       GC happens while creating instance of java/lang/Class for
>> java/lang/InternalError
>> 5)       vm_hint_finalize happens
>> 6)       java/lang/ref/ReferenceQueue.enqueue is being called
>> 7)       java/lang/Object.notify()V is being compiled
>> 8)       java/lang/InternalError is being resolved (and loaded) for
>> java/lang/Object
>> 9)       ClassCircularityError occurs for java/lang/InternalError
>> 10)   VM returns to step (3)
>> 11)   Assertion happens in SuccessLoadingClass for java/lang/InternalError
>> as LoadingClass instance for this class was removed on step (9)
>>
>> It can be tried to fix it in class loading, but I can imagine only one
>> generic solution for this problem: do not run Java while compiling.

I believe the real root cause is running java code from vm_hint_finalize().
A possible solution would be:

- rewrite vm_hint_finalize() to just run 'notify' operation, without calling 
any real java code
- handle reference queue in the finalizer thread instead of enqueuing it 
directly from vm_hint_finalize() thread


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to