You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Ilya Berezhniuk (JIRA)" <ji...@apache.org> on 2007/05/25 16:22:16 UTC

[jira] Commented: (HARMONY-2798) [drlvm][thread] VM cunit test test_native_basic sometimes crashes on win32 SMP

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

Ilya Berezhniuk commented on HARMONY-2798:
------------------------------------------

I tried to repsoduce issue with single subtests of test_native_basic. Bug appears for test_hythread_iterator and test_hythread_iterator_default subtests.

Looks like bug involved by special running method of cunit tests - there is no Main Java thread which waits until all non-daemon threads are terminated.
When subtest returns after releasing all 100 threads started in this subtest, main() function exits also and some cleanup actions are started (at least on Windows). At the same time some of 100 threads are still running and accessing TM data. On Windows such behaviour causes an error.
Thus we should wait until all started threads are terminated.

I've added Sleep(100) after releasing thread iterator, and test passed for me 150 times. But this is not good solution, because test will depend on processor speed.

I'm now trying to implement proper waiting to ensure all started threads are terminated.

> [drlvm][thread] VM cunit test test_native_basic sometimes crashes on win32 SMP
> ------------------------------------------------------------------------------
>
>                 Key: HARMONY-2798
>                 URL: https://issues.apache.org/jira/browse/HARMONY-2798
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows 2003 server on P4 with HT enabled
>            Reporter: Gregory Shimansky
>
> The test test_native_basic fails on windows from time to time in 3 different ways. The most common way is to exit silently on shutdown while function main has returned 0, and all tests passed. Two other ways are access to non-writable memory and MS debug CRT heap validation on shutdown.
> In all 3 cases I cannot debug the program because it fails after function main has finished. Looks like some race condition causes memory corruption. Probably running the program from under VS.NET could help to debug it.
> To run the test many times I've written the following script in cygwin bash:
> i=0; while true; do ./test_native_basic.exe -Dorg.apache.harmony.vm.vmdir=d:/work/harmony/enhanced/trunk/working_vm/build/win_ia32_msvc_debug/deploy/jdk/jre/bin/default -Djava.home=d:/work/harmony/enhanced/trunk/working_vm/build/win_ia32_msvc_debug/deploy/jdk/jre; ec=$?; echo $i $ec; test $ec != 0 && break; i=$[i+1]; done
> Note, to run test_native_basic in console you need to set PATH to DRLVM bin and bin/default directories.
> Note2, it looks like this bug requires SMP or at least HT enabled system, and is not reproducible on single processor computers like laptops.

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