You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Pavel Ozhdikhin (JIRA)" <ji...@apache.org> on 2007/06/27 18:14:26 UTC
[jira] Updated: (HARMONY-4267) [drlvm][jit][opt] Jitrino.OPT
crashes instead of throwing NoClassDefFoundError
[ https://issues.apache.org/jira/browse/HARMONY-4267?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Ozhdikhin updated HARMONY-4267:
-------------------------------------
Attachment: 4267.patch
The patch is attached. NullObjectType and use of 0xdeadbeef vmTypeHandle substituted with UnresolvedObjectType. Feel free to review and comment.
> [drlvm][jit][opt] Jitrino.OPT crashes instead of throwing NoClassDefFoundError
> ------------------------------------------------------------------------------
>
> Key: HARMONY-4267
> URL: https://issues.apache.org/jira/browse/HARMONY-4267
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Elena Sayapina
> Attachments: 4267.patch
>
>
> Jitrino.OPT crashes instead of throwing NoClassDefFoundError if call a method with array of objects of non-existing class as returning type
> Please, consider the following code:
> -------------------------------------------------------
> public class Reproduce {
>
> public static void main(String [] args) {
> new TClass().test1();
> }
> }
> class TClass {
>
> void test1() {
> RemoveMe[] arr = test();
> RemoveMe element = arr[3];
> }
> RemoveMe[] test() {
> return new RemoveMe[10];
> }
> }
> class RemoveMe {}
> ---------------------------------------------------------------
> Steps to reproduce:
> 1) compile Reproduce class
> 2) remove RemoveMe.class
> 3) run Reproduce.class
> Output on Harmony-r549703 with -Xem:opt:
> 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 = r549703, (Jun 22 2007), Windows/ia32/msvc 1310, release build
> http://harmony.apache.org
> Windows reported exception: 0xc0000005
> Registers:
> EAX: 0xdeadbeef, EBX: 0x02362208, ECX: 0xdeadbeef, EDX: 0x013ed268
> ESI: 0x0236210c, EDI: 0x020aa785, ESP: 0x0013edf0, EBP: 0x00000005
> EIP: 0x00511884
> Stack trace:
> 0: class_get_name (c:\bt\build\checkouts\drlvm\vm\vmcore\src\class_support\c_interface.cpp:553)
> 1: ?? (??:-1)
> <end of stack trace>
> The callstack is:
> > harmonyvm.dll!class_get_name(Class * cl=0xdeadbeef) Line 553 + 0x4 C++
> jitrino.dll!Jitrino::ObjectType::getName() Line 803 + 0x9 C++
> jitrino.dll!Jitrino::JavaByteCodeTranslator::genLdVar(unsigned int varIndex=1, Jitrino::JavaLabelPrepass::JavaVarType javaType=A) Line 1931 + 0x8 C++
> jitrino.dll!Jitrino::JavaByteCodeTranslator::aload(unsigned short varIndex=1) Line 694 C++
> jitrino.dll!Jitrino::JavaByteCodeParserCallback::parseByteCode(const unsigned char * byteCodes=0x020aa5a8, unsigned int off=1) Line 365 + 0x9 C++
> jitrino.dll!Jitrino::ByteCodeParser::parse(Jitrino::ByteCodeParserCallback * cb=0x0013eef0) Line 70 + 0xe C++
> jitrino.dll!Jitrino::JavaTranslator::translateMethod(Jitrino::CompilationInterface & ci={...}, Jitrino::MethodDesc & methodDesc={...}, Jitrino::IRBuilder & irBuilder={...}) Line 57 C++
> jitrino.dll!Jitrino::TranslatorSession::translate() Line 68 + 0xf C++
> jitrino.dll!Jitrino::TranslatorSession::run() Line 51 C++
> jitrino.dll!Jitrino::Inliner::createInlineNode(Jitrino::CompilationContext & inlineCC={...}, Jitrino::MethodCallInst * call=0x0231b908) Line 983 C++
> jitrino.dll!Jitrino::Inliner::getNextRegionToInline(Jitrino::CompilationContext & inlineCC={...}) Line 957 C++
> jitrino.dll!Jitrino::InlinePass::_run(Jitrino::IRManager & irm={...}) Line 1187 + 0x3b C++
> jitrino.dll!Jitrino::OptPass::run() Line 63 C++
> jitrino.dll!Jitrino::runPipeline(Jitrino::CompilationContext * c=0x0013f43c) Line 230 C++
> jitrino.dll!Jitrino::Jitrino::CompileMethod(Jitrino::CompilationContext * cc=0x0013f43c) Line 269 + 0x15 C++
> jitrino.dll!JIT_compile_method_with_params(void * jit=0x0119ee40, void * compilation=0x0013f6d8, Method * method_handle=0x020a2fec, OpenMethodExecutionParams compilation_params={...}) Line 284 + 0xa C++
> harmonyvm.dll!Dll_JIT::compile_method_with_params(void * compilation=0x0013f6d8, Method * method=0x020a2fec, OpenMethodExecutionParams flags={...}) Line 86 + 0x12 C++
> harmonyvm.dll!compile_do_compilation_jit(Method * method=0x020a2fec, JIT * jit=0x0119ee40) Line 658 + 0x16 C++
> harmonyvm.dll!vm_compile_method(void * jit=0x0119ee40, Method * method=0x020a2fec) Line 2572 + 0xf C++
> em.dll!DrlEMImpl::compileMethod(Method * mh=0x020a2fec) Line 545 + 0x12 C++
> em.dll!CompileMethod(Method * method_handle=0x020a2fec) Line 50 C++
> harmonyvm.dll!compile_do_compilation(Method * method=0xdeadbeef) Line 774 + 0x10 C++
> harmonyvm.dll!compile_me(Method * method=0x20770dfc) Line 795 C++
> harmonyvm.dll!vm_invoke_native_array_stub(unsigned int * args=0x0013f95c, int sz=1, void * f=0x031b0010) Line 77 C++
> harmonyvm.dll!JIT_execute_method_default(void * jit=0x00000000, _jmethodID * methodID=0x020a2fec, jvalue * return_value=0x00000000, jvalue * args=0x020a8218) Line 200 C++
> em.dll!DrlEMImpl::executeMethod(_jmethodID * meth=0x020a2fec, jvalue * return_value=0x00000000, jvalue * args=0x020a8218) Line 509 + 0x14 C++
> em.dll!ExecuteMethod(_jmethodID * meth=0x020a2fec, jvalue * return_value=0x00000000, jvalue * args=0x020a8218) Line 44 C++
> harmonyvm.dll!vm_execute_java_method_array(_jmethodID * method=0x020a2fec, jvalue * result=0x00000000, jvalue * args=0x020a8218) Line 60 + 0x19 C++
> harmonyvm.dll!CallStaticVoidMethodV(JNIEnv_External * jni_env=0x011a19c0, _jobject * clazz=0x0201ea10, _jmethodID * methodID=0x020a2fec, char * args=0x0013fa14) Line 1546 + 0x2c C++
> harmonyvm.dll!CallStaticVoidMethod(JNIEnv_External * jni_env=0x011a19c0, _jobject * clazz=0x0201ea10, _jmethodID * methodID=0x020a2fec, ...) Line 1537 C++
> java.exe!main_runJavaMain(const JNINativeInterface_ * * env=0x011a19c0, char * mainClassName=0x003a3fbc, int nameIsUTF=0, int java_argc=0, char * * java_argv=0x003a2bd8, HyPortLibrary * portLibrary=0x0013fbb8) Line 1321 + 0x1b C
> java.exe!invocation(HyPortLibrary * portLibrary=0x0013fbb8, int argc=4, char * * argv=0x003a2bc8, unsigned int handle=5308416, int version=65540, unsigned char ignoreUnrecognized='', char * mainClass=0x003a3fbc, unsigned int classArg=3, char * propertiesFileName=0x00155de8, int isStandaloneJar=0, char * vmdllsubdir=0x0013fb40) Line 742 + 0x2c C
> java.exe!gpProtectedMain(haCmdlineOptions * args=0x0013fb90) Line 391 + 0x33 C
> java.exe!main(int argc=4, char * * argv=0x003a2bc8, char * * envp=0x003a3080) Line 146 + 0xc C
> java.exe!mainCRTStartup() Line 398 + 0xe C
> kernel32.dll!7c816fd7()
> Output on Harmony-r549703 in default mode:
> 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 = r549703, (Jun 22 2007), Windows/ia32/msvc 1310, release build
> http://harmony.apache.org
> Uncaught exception in main:
> java.lang.NoClassDefFoundError: RemoveMe
> at TClass.test1(Reproduce.java:11)
> at Reproduce.main(Reproduce.java:4)
> Caused by: java.lang.ClassNotFoundException: RemoveMe
> at java.net.URLClassLoader.findClass(URLClassLoader.java:895)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:575)
> at java.lang.ClassLoader$SystemClassLoader.loadClass(ClassLoader.java:963)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
> at TClass.test1(Reproduce.java:11)
> ... 1 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.