You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Salikh Zakirov (JIRA)" <ji...@apache.org> on 2006/10/31 19:18:17 UTC

[jira] Commented: (HARMONY-1556) [DRLVM][finalizers] Race condition between classloader and finalizers subsystem

    [ http://issues.apache.org/jira/browse/HARMONY-1556?page=comments#action_12445983 ] 
            
Salikh Zakirov commented on HARMONY-1556:
-----------------------------------------

HARMONY-1952 provides an idea on how to fix this issue

> [DRLVM][finalizers] Race condition between classloader and finalizers subsystem
> -------------------------------------------------------------------------------
>
>                 Key: HARMONY-1556
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1556
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: reproduced on Linux
>            Reporter: Ivan Volosyuk
>
> Race condition sometimes reproducible on gc.PhantomReferenceQueueTest smoke test.
> Leads to crash with following message:
>   classloader.cpp:549: void ClassLoader::SuccessLoadingClass(const String*): Assertion `lc' failed.
> Classloader detects collisions and CircularityError before crash.
> The problem is:
>    During resolution of some class 'java/lang/InternalError' referenced in 'java/lang/Object' from gc_alloc() function is called vm_hint_finalize() which executes java code. The code also does resolution of the same class and reports 'CircularityError' removing the class from m_loadingClasses. The assertion fails in the first place of resolution.
> ===================
> 0x8636f70 0x807d6d8 R java/lang/Thread
> 0x80b1b88 0x807d6d8 I java/lang/InternalError
> 0x80b1b88 0x807d6d8 DC java/lang/InternalError
> 0x80b1b88 0x807d6d8 CDAI 0x807d6d8 java/lang/InternalError
> Breakpoint 3, ClassLoader::StartLoadingClass (this=0x80b1b88, env=0xb6fdca80,
>     className=0x8074f8c)
>     at /home/ivan/svn/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp:782
> 782                     FailedLoadingClass(className);
> (gdb) p cur_thread
> $1 = (VM_thread *) 0x807d6d8
> (gdb) p st_print()
> Stack Trace (0x807d6d8):
>   [0x807d6d8] (nil)(n): *null*
>   [0x807d6d8] 0xb6827ff7(m): java/lang/ref/ReferenceQueue.enqueue(Ljava/lang/ref/Reference;)Z
>   [0x807d6d8] 0xb6827ebe(m): java/lang/ref/Reference.enqueue()Z
>   [0x807d6d8] 0xb6d68fd8(n): *null*
>   [0x807d6d8] 0xb68277e8(m): java/lang/FinalizerThread.run()V
>   [0x807d6d8] 0xb68271fa(m): java/lang/Thread.runImpl()V
>   [0x807d6d8] 0xb6d68fd8(n): *null*
> End Stack Trace (0x807d6d8, depth=7)
> ==================

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira