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:47:17 UTC
[jira] Created: (HARMONY-1983) Harmony crashes during loading of
many classes which implements many interfaces.
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
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
[jira] Updated: (HARMONY-1983) Harmony crashes during loading of
many classes which implements many interfaces.
Posted by "Alexander D Shipilov (JIRA)" <ji...@apache.org>.
[ 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