harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gregory Shimansky (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-4790) [drlvm][jvmti] EventTest014 JDWP stress test intermittently fails with assertion violations
Date Tue, 02 Oct 2007 11:41:51 GMT

     [ https://issues.apache.org/jira/browse/HARMONY-4790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Gregory Shimansky updated HARMONY-4790:
---------------------------------------

    Attachment: HARMONY-4790.patch

I think I've fixed all race conditions in the code. The problem is that breakpoint has some
separate data associated with it, it is disassembler pointer, and it is data pointer. When
breakpoint is deleted, both disassembler and data are freed.

When breakpoint is processed, it is copied into a local variable in process_native_breakpoint
function. But disassembler and data weren't copied, so if breakpoint was deleted while it
is being processed, memory pointed to by disassembler and data pointers became invalid.

I fixed it by storing a pointer to a local disassembler copy that is already created in process_native_breakpoint
in the local breakpoint copy. The data pointer was converted to POINTER_SIZE_INT integer for
general purpose usage. Currently it is only used to store booleans, not as a pointer.

This test passed for me for 50 times and still continues to work.

> [drlvm][jvmti] EventTest014 JDWP stress test intermittently fails with assertion violations
> -------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-4790
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4790
>             Project: Harmony
>          Issue Type: Bug
>          Components: VM
>         Environment: Windows/x86
>            Reporter: Ilya Berezhniuk
>            Priority: Minor
>         Attachments: HARMONY-4790.patch
>
>
> While investigating HARMONY-4388 I've observed several kinds of assertions on debug build.
> All these assertions have occurred in JET code, and all call stacks contain root set
enumeration.
> To reproduce this bug:
> - checkout stress suite;
> - start stress tests on debug build.
> The whole stress suite executes too long, so I started this test separately. Command
line (to start from stress/qa directory) is about:
>  ..../win_ia32_msvc_debug/deploy/jdk/jre/bin/java -classpath "bin/classes;../../tools/th.dest/bin/th.jar"
org.apache.harmony.test.stress.jpda.jdwp.scenario.EVENT014.EventTest014
> Note: to run correctly on Windows these tests require SystemRoot environment variable
to be set to Windows folder.
> I observed 3 different assertions, but the following is most often:
> assert (method_get_num_handlers(method) == 0)
> Stack trace:
> ------------------------------- 
> 	jitrino.dll!_assert(const char * expr=0x0167c26c, const char * filename=0x0167c234,
unsigned int lineno=273)  Line 295	C
>  	jitrino.dll!Jitrino::Jet::rt_enum(void * jit=0x012187d8, Method * method=0x0230b0b8,
void * henum=0x00000000, JitFrameContext * context=0x02b692ec)  Line 273 + 0x2e bytes	C++
>  	jitrino.dll!JIT_get_root_set_from_stack_frame(void * jit=0x012187d8, Method * method=0x0230b0b8,
void * enum_handle=0x00000000, JitFrameContext * context=0x02b692ec)  Line 380 + 0x15 bytes
C++
>  	harmonyvm.dll!Dll_JIT::get_root_set_from_stack_frame(Method * method=0x0230b0b8, void
* enum_handle=0x00000000, const JitFrameContext * context=0x02b692ec)  Line 104 + 0x18 bytes
C++
>  	harmonyvm.dll!vm_enumerate_root_set_single_thread_on_stack(StackIterator * si=0x02b692e8)
 Line 302 + 0x39 bytes	C++
>  	harmonyvm.dll!vm_enumerate_thread(VM_thread * thread=0x0287b1b0)  Line 213 + 0x9 bytes
C++
>  	harmonyvm.dll!stop_the_world_root_set_enumeration()  Line 110 + 0xc bytes	C++
>  	harmonyvm.dll!vm_enumerate_root_set_all_threads()  Line 142	C++
>  	gc_gen.dll!gc_reclaim_heap(GC * gc=0x019d68b0, unsigned int gc_cause=2)  Line 330 +
0x8 bytes	C++
>  	gc_gen.dll!lspace_alloc(unsigned int size=8000016, Allocator * allocator=0x01af6c70)
 Line 228 + 0xe bytes	C++
>  	gc_gen.dll!gc_alloc(unsigned int size=8000016, unsigned int ah=19661968, void * unused_gc_tls=0x011fa304)
 Line 82 + 0x10 bytes	C++
>  	harmonyvm.dll!vm_new_vector_using_vtable_and_thread_pointer(int length=1000000, unsigned
int vector_handle=19661968, void * tp=0x011fa304)  Line 219 + 0x14 bytes	C++
>  	harmonyvm.dll!vm_rt_new_vector_using_vtable_and_thread_pointer(int length=1000000,
unsigned int vector_handle=19661968, void * tp=0x011fa304)  Line 113 + 0x11 bytes	C++

-- 
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