harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xiao-Feng Li (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-4215) [drlvm][reliability] assert in JIT while unwinding stack (during enumeration)
Date Thu, 05 Jul 2007 08:25:04 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-4215?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12510313
] 

Xiao-Feng Li commented on HARMONY-4215:
---------------------------------------

Yu-Nan's finding is very important. I think this is confirmed partially by other people's
comments that this failure is more subtle than expected. It happens actually with a big group
of test cases. We probably want some threading guys to examine if this is possible for a mutator
to modify the runtime stack after stop-the-world. 

In current DRLVM design, this is possible, but, it by design should only happen in safe region.
The safe region means the mutator may modify the stack but never modifies root set entries.
I am afraid this design principle is not 100% complied by our code (specifically, the native
code). 

Do we have a good way to verify all the safe regions are well-formed? This helps not only
to this bug, but also the overall DRLVM quality. Currently in my understanding only the assertion
for suspension enable and disable helps to check safe region, but it does not help to check
if a root set entry is modified.

Btw, in my tests, both GCv4.1 and GCv5 have failures (with different symptoms). 

Thanks.
xiaofeng

> [drlvm][reliability] assert in JIT while unwinding stack (during enumeration)
> -----------------------------------------------------------------------------
>
>                 Key: HARMONY-4215
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4215
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Win 2003
>            Reporter: Aleksey Ignatenko
>         Attachments: 2rel_tests_fail.dmp, test.zip, util.Date_int.out.err
>
>
> 2 reliablity tests failed on assertion in jit:
> 1. CharsetSyncCacheTest
> 2. ZlibTest
> svn rev 548320
> Call stack:
>  	jitrino.dll!_assert(const char * expr=0x01ba9f08, const char * filename=0x01ba9eb0,
unsigned int lineno=0x000000ac)  Line 295	C
> >	jitrino.dll!Jitrino::Ia32::StackInfo::read(Jitrino::MethodDesc * pMethodDesc=0x03bef720,
unsigned int eip=0x00000000, bool isFirst=false)  Line 172 + 0x1a	C++
>  	jitrino.dll!Jitrino::Ia32::RuntimeInterface::unwindStack(Jitrino::MethodDesc * methodDesc=0x03bef720,
JitFrameContext * context=0x02de90d4, bool isFirst=false)  Line 40	C++
>  	jitrino.dll!Jitrino::Jitrino::UnwindStack(Jitrino::MethodDesc * methodDesc=0x03bef720,
JitFrameContext * context=0x02de90d4, bool isFirst=false)  Line 280 + 0x1e	C++
>  	jitrino.dll!JIT_unwind_stack_frame(void * jit=0x012a6a48, Method * method=0x02cb3668,
JitFrameContext * context=0x02de90d4)  Line 362 + 0x18	C++
>  	harmonyvm.dll!Dll_JIT::unwind_stack_frame(Method * method=0x02cb3668, JitFrameContext
* context=0x02de90d4)  Line 94 + 0x14	C++
>  	harmonyvm.dll!si_goto_previous(StackIterator * si=0x02de90d0, bool over_popped=false)
 Line 315 + 0x32	C++
>  	harmonyvm.dll!vm_enumerate_root_set_single_thread_on_stack(StackIterator * si=0x02de90d0)
 Line 339 + 0xb	C++
>  	harmonyvm.dll!vm_enumerate_thread(VM_thread * thread=0x02d7e088)  Line 224 + 0x9	C++
>  	harmonyvm.dll!stop_the_world_root_set_enumeration()  Line 110 + 0xc	C++
>  	harmonyvm.dll!vm_enumerate_root_set_all_threads()  Line 150	C++
>  	gc_gen.dll!gc_reclaim_heap(GC * gc=0x014d5de8, unsigned int gc_cause=0x00000003)  Line
295 + 0x8	C++
>  	gc_gen.dll!gc_force_gc()  Line 138 + 0xd	C++
>  	harmonyvm.dll!Java_java_lang_VMMemoryManager_runGC(JNIEnv_External * __formal=0x02d9e240,
JNIEnv_External * __formal=0x02d9e240)  Line 138 + 0x8	C++
>  	03bf33ef()	
>  	harmonyvm.dll!get_vm_thread(HyThread * thr=0x03bef9ec)  Line 193 + 0xb	C++
>  	harmonyvm.dll!get_vm_thread(HyThread * thr=0x00000001)  Line 194 + 0x7	C++
> To reproduce onee needs to run these tests with 30 min cycle (set     <property name="test.duration"
value="1800" />  parameter in build.xml of reliablity tests).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message