harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Rebriy (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-4265) [drlvm][jit] Save quantity of try and catch blocks equals.
Date Fri, 25 Jan 2008 15:37:35 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-4265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12562540#action_12562540
] 

Pavel Rebriy commented on HARMONY-4265:
---------------------------------------

I've reproduced the crash and evaluated it:

=============================
#0  0x00002aaaaab14b16 in Class_Member::is_static (this=0x0)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/include/class_member.h:72
72          bool is_static()            {return (_access_flags&ACC_STATIC)?true:false;}
(gdb) bt
#0  0x00002aaaaab14b16 in Class_Member::is_static (this=0x0)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/include/class_member.h:72
#1  0x00002aaaaabf9a45 in Method::get_num_args (this=0x0)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/class_support/method.cpp:261
#2  0x00002aaaaabb099a in get_jvalue_arg_array (method=0x0, args=0x7fffd0d758d0)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/jni/jni_utils.cpp:98
#3  0x00002aaaaabae3ce in CallObjectMethodV (jni_env=0x595450, obj=0x58f160, methodID=0x0,

    args=0x7fffd0d758d0)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/jni/jni_method.cpp:248
#4  0x00002aaaaabe0e5b in JNIEnv_External::CallObjectMethod (this=0x595450, obj=0x58f160,
methodID=0x0)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/include/jni.h:731
#5  0x00002aaaaac1e8bb in sd_print_threads_info (cur_thread=0x549940)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/stack/stack_dump.cpp:394
#6  0x00002aaaaac1f410 in sd_print_stack (regs=0x7fffd0d75b00)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/stack/stack_dump.cpp:433
#7  0x00002aaaaac1d0e7 in process_crash (regs=0x7fffd0d75b00)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/util/linux/ia32_em64t/signals_common.cpp:498
#8  0x00002aaaaac1d165 in general_crash_handler (signum=11, regs=0x7fffd0d75b00, 
    message=0x2aaaaad80496 "SIGSEGV")
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/util/linux/ia32_em64t/signals_common.cpp:514
#9  0x00002aaaaac1d983 in null_java_reference_handler (signum=11, info=0x7fffd0d75d70, 
    context=0x7fffd0d75c40)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/util/linux/ia32_em64t/signals_common.cpp:439
#10 0x00002aaaaac1db03 in general_signal_handler (signum=11, info=0x7fffd0d75d70, 
    context=0x7fffd0d75c40)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/vmcore/src/util/linux/ia32_em64t/signals_common.cpp:559
#11 <signal handler called>
#12 0x00002afed96aa4a8 in hythread_thin_monitor_try_enter (lockword_ptr=0x2aaaae285a30)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/thread/src/thread_native_thin_monitor.c:297
#13 0x00002aaaac641903 in ?? ()
#14 0x00002aaaae285a28 in ?? ()
#15 0x00002aaabf0546e3 in ?? ()
#16 0x0000000000008000 in ?? ()
#17 0x0000000000000000 in ?? ()

(gdb) f 12
#12 0x00002afed96aa4a8 in hythread_thin_monitor_try_enter (lockword_ptr=0x2aaaae285a30)
    at /nfs/ims/proj/drl/mrt2/users/psrebriy/git-master/vm/thread/src/thread_native_thin_monitor.c:297
297         assert(!hythread_is_suspend_enabled());
Current language:  auto; currently c
(gdb) list
292             IDATA this_id = tm_self_tls->thread_id;
293         IDATA lock_id;
294         IDATA status;
295         hythread_monitor_t fat_monitor;
296         int UNUSED i;
297         assert(!hythread_is_suspend_enabled());
298         assert((UDATA)lockword_ptr > 4);    
299         assert(tm_self_tls);
300         
301         // By DRLVM design rules lockword (see description in thin locks paper)
===========================

As you can see from list of  hythread_thin_monitor_try_enter - it just call of hythread_is_suspend_enabled()
function. Because of lack of stack memory SIGSEGV signal happened. After it we had a crash
in signal handler because of lack of stack too.

As to my point of view, JIT OPT has not enough stack space to process StackOverflow exception
correctly.


> [drlvm][jit] Save quantity of try and  catch blocks equals.
> -----------------------------------------------------------
>
>                 Key: HARMONY-4265
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4265
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Pavel Afremov
>            Assignee: Mikhail Fursov
>         Attachments: soe2.patch
>
>
> To save quantity of try and  catch blocks equals JIT support is required. 
> If JIT compile method which contains SOE exception handler, it should include test of
avalable stack inside  method code.

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