You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Alexander D Shipilov (JIRA)" <ji...@apache.org> on 2006/10/27 11:49:18 UTC

[jira] Updated: (HARMONY-1983) Harmony crashes during loading of many classes which implements many interfaces.

     [ http://issues.apache.org/jira/browse/HARMONY-1983?page=all ]

Alexander D Shipilov updated HARMONY-1983:
------------------------------------------

    Attachment: ClassLoaderStressTest.zip

Test for this issue.

> Harmony crashes during loading of many classes which implements many interfaces.
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-1983
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1983
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows XP, P4 3000HT
>            Reporter: Alexander D Shipilov
>            Priority: Minor
>         Attachments: ClassLoaderStressTest.zip
>
>
> Test description:
>   Start a lot of threads.
>   All of them run the following:
>     - load a class which implemens interface with more than 500 superinterfaces;
>     - verify fields values of this classes;
>   This verification is repeated several times.
> Harmony crashes during test running but not always. It happens on average in 10% of runs. So it is better to run test in cycle.
> Steps for reproducing:
> Unzip attached file. It contains sources and classes of test.
> If you like to re-compile test, use command in cygwin:
> $ find dir -name "*.java"|xargs javac
> where dir - is a directory of test (org e.g.)
> To run test in cycle use command:
> $ gg=104; r=0; while (($gg == 104)); do (./java -Dorg.apache.harmony.test.share.stress.ReliabilityRunner.params="org.apache.harmony.test.stress.classloader.NotSynchThreads.SupIntf.testManySupIntf1{}" -classpath "./;./junit.jar;" org.apache.harmony.test.share.stress.ReliabilityRunner;); let "gg = $?"; let "r += 1"; echo $r; echo $gg; done
> where ./java - is a tested jvm (harmony), ./junit.jar; - is a full path to the junit.jar
> Result on RI:
> $ gg=104; r=0; while (($gg == 104)); do (java -Dorg.apache.harmony.test.share.s
> tress.ReliabilityRunner.params="org.apache.harmony.test.stress.classloader.NotS
> ynchThreads.SupIntf.testManySupIntf1{}" -classpath "./;./junit.jar;" org.apache
> .harmony.test.share.stress.ReliabilityRunner;); let "gg = $?"; let "r += 1"; ec
> ho $r; echo $gg; done
> [debug] started null(org.apache.harmony.test.share.stress.ReliabilityRunner)
> [debug] timeToWork = 100, timeToAbort = 600
> [debug] started null(org.apache.harmony.test.share.stress.generator.Thread)
> [debug] Thread.setContext { org.apache.harmony.test.stress.classloader.NotSync
> Threads.SupIntf.testManySupIntf1{} }
> [debug] Starting 1 threads
> [debug] completed null(org.apache.harmony.test.share.stress.generator.Thread)
> [debug] ThreadToRun.run()
> [debug] Generator.execute()
> [debug] class = org.apache.harmony.test.stress.classloader.NotSynchThreads.SupI
> tf.testManySupIntf1
> [debug] org.apache.harmony.test.stress.classloader.NotSynchThreads.SupIntf.test
> anySupIntf1 { }
> [debug] started test(org.apache.harmony.test.stress.classloader.NotSynchThreads
> SupIntf.testManySupIntf1)
> [debug] Start testManySupIntf
> [debug] Number of iterations: 2
> [debug] Number of created thread: 5
> [debug] completed test(org.apache.harmony.test.stress.classloader.NotSynchThrea
> s.SupIntf.testManySupIntf1)
> [debug] Tests completed greacefully
> [debug] completed null(org.apache.harmony.test.share.stress.ReliabilityRunner)
> [debug] TimeKeeper is interrupted
> [debug] Test passed, time = 6359
> Result on Harmony:
> $ gg=104; r=0; while (($gg == 104)); do (./java -Dorg.apache.harmony.test.share
> .stress.ReliabilityRunner.params="org.apache.harmony.test.stress.classloader.No
> tSynchThreads.SupIntf.testManySupIntf1{}" -classpath "./;./junit.jar;" org.apac
> he.harmony.test.share.stress.ReliabilityRunner;); let "gg = $?"; let "r += 1";
> echo $r; echo $gg; done
> [debug] started null(org.apache.harmony.test.share.stress.ReliabilityRunner)
> [debug] timeToWork = 100, timeToAbort = 600
> [debug] started null(org.apache.harmony.test.share.stress.generator.Thread)
> [debug] Thread.setContext { org.apache.harmony.test.stress.classloader.NotSync
> Threads.SupIntf.testManySupIntf1{} }
> [debug] Starting 1 threads
> [debug] completed null(org.apache.harmony.test.share.stress.generator.Thread)
> [debug] ThreadToRun.run()
> [debug] Generator.execute()
> [debug] class = org.apache.harmony.test.stress.classloader.NotSynchThreads.SupI
> tf.testManySupIntf1
> [debug] org.apache.harmony.test.stress.classloader.NotSynchThreads.SupIntf.test
> anySupIntf1 { }
> [debug] started test(org.apache.harmony.test.stress.classloader.NotSynchThreads
> SupIntf.testManySupIntf1)
> [debug] Start testManySupIntf
> [debug] Number of iterations: 2
> [debug] Number of created thread: 5
> SEH handler: shutdown error
> Call stack:
> harmonyvm.dll!call_method_no_ref_result(JNIEnv_External * env=0x02638af0, _jobject * obj=0x00000000, _jmethodID * methodID=0x02d7fa64, jvalue * args=0x02d7f9d0, jvalue * result=0x00000000, int non_virtual=0) Line 149 + 0x2 bytes C++
> harmonyvm.dll!CallNonvirtualVoidMethodA(JNIEnv_External * env=0x02638af0, _jobject * obj=0x02d7fa64, _jobject * clazz=0x0233da78, _jmethodID * methodID=0x00000000, jvalue * args=0x02d7f9d0) Line 621 + 0x1e bytes C++
> harmonyvm.dll!NewObjectA(JNIEnv_External * env=0x02638af0, _jobject * clazz=0x0233da78, _jmethodID * methodID=0x00000000, jvalue * args=0x02d7f9d0) Line 1031 C++
> harmonyvm.dll!wrap_primitive(JNIEnv_External * env=0x02638af0, jvalue value={...}, char sig='I') Line 237 C++
> harmonyvm.dll!invoke_primitive_method(JNIEnv_External * jenv=0x00000000, _jobject * obj=0x02d7fa5c, _jobject * declaring_class=0x0264ade8, Method * method=0x00000000, jvalue * jvalue_args=0x02d7fa1c) Line 193 + 0x1e bytes C++
> harmonyvm.dll!Java_java_lang_reflect_VMReflection_invokeMethod(JNIEnv_External * jenv=0x02638af0, _jobject * __formal=0x02d7fa58, __int64 member=204907306274869276, _jobject * obj=0x02d7fa5c, _jobject * args=0x00000000) Line 221 + 0xe bytes C++
> 012c46b9() 
> harmonyvm.dll!get_thread_ptr_stub() Line 134 + 0xd bytes C++
> harmonyvm.dll!m2n_pop_local_handles() Line 250 + 0x9 bytes C++
> ntdll.dll!7c82f9dd() 
> [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
> > harmonyvm.dll!free(void * pBlock=0x02663420) Line 103 C
> harmonyvm.dll!GcFrame::~GcFrame() Line 91 + 0x6 bytes C++
> harmonyvm.dll!compile_jit_a_method(Method * method=0x00000000) Line 841 + 0x11 bytes C++
> harmonyvm.dll!log4cxx::Logger::getEffectiveLevel() Line 180 + 0xd bytes C++
> Harmony version:
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r467316, (Oct 27 2006), Windows/ia32/msvc 1310, release build
> http://incubator.apache.org/harmony

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