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