Bug #3722 に関するご報告

e$B<G$H?=$7$^$9!#e(B

redmine e$B$KEPO?$5$l$F$$$ke(B Bug #3722 [ruby-core:31783]
e$B$K$D$$$FD4$Y$?$H$3e(B
e$B$m!e(BEXEC_EVENT_HOOK
e$B;~$NNc30>pJse(B(th->state)e$B$N07$$$KLdBj$,$$j$=$&$G$9!#e(B

e$B%P%0Js9p$KE=$jIU$1$F$"$C$?e(B fail.rb e$B$r<B9T$9$k$He(B
vm_iter_break e$B$,<B9T$5$le(B
e$B$k$s$G$9$,!"[email protected]_Dj$5$l$?e(B TAG_BREAK
e$B$r=hM}$7$F$$$k$H$-$K8F$S=P$9e(B
EXEC_EVENT_HOOK e$B$G!"e(BTAG_BREAK e$B$re(B th->state
[email protected]_Dj$7$?$^$^%$%Y%s%H%O%s%Ie(B
e$B%i$r<B9T$7$F$$$^$7$?!#e(B
e$B%3!<%k%0%i%[email protected]$H$3$s$J46$8$G$9!#e(B

vm_iter_breake$B!Je(Bth->state e$B$Ke(B TAG_BREAK [email protected]_Dje(B)
(longjmp e$B$Ge(B vm_exec e$B$X%8%c%s%We(B)
vm_exec (1)
rb_threadptr_exec_event_hooks (vm.c e$B$Ne(B1336e$B9TL\e(B)
exec_event_hooks
call_trace_func
ruby_suppress_tracing
call_trace_proc
rb_proc_call_with_block
rb_vm_invoke_proc
invoke_block_from_c
vm_exec (2)

vm_iter_break e$B$+$ie(B (2) e$B$Ne(B vm_exec e$B$^$G!"e(Bth->state
e$B$,e(B TAG_BREAK e$B$N$^$^$Ke(B
e$B$J$C$F$$$^$7$?!#$3$N$?$a!"e(B(1) e$B$Ne(B vm_exec e$B$G=hM}$9$Y$-e(B
TAG_BREAK e$B$N=hM}$,e(B
(2) e$B$Ne(B vm_exec e$B$G=hM}$5$l$F$$$F!"e(Bcfp
e$B$,$:$l$F$7$^$C$F$$$k$h$&$G$9!#e(B

e$B%$%Y%s%H%O%s%I%iFb$GNc30$,H/@8$7$?>l9g$N$3$H$r9M$($F$$$J$$$N$GA4A3;H$($^e(B
e$B$;$s$,!"2<$N%Q%C%A$Ge(B fail.rb e$B$G$Ne(B segv
e$B$O2sHr$G$-$^$7$?!#e(B

break
e$B$N=hM};~$K%$%Y%s%H%O%s%I%i$GNc30$,H/@8$7$?>l9g!"$I$&$$$&5sF0$K$9$Ye(B
e$B$-$J$N$+$,J,$+$i$J$+$C$?$?$a!"$A$c$s$H$7$?%Q%C%A$O:n$C$F$$$^$;$s$,!";29Me(B
e$B$^$G$K$4Js9p$$$?$7$^$9!#e(B

Index: thread.c

thread.c (revision 29056)
+++ thread.c (working copy)
@@ -4099,6 +4099,7 @@ ruby_suppress_tracing(VALUE (*func)(VALU
rb_thread_t *th = GET_THREAD();
int state, tracing;
volatile int raised;

  • volatile int _state;
    VALUE result = Qnil;

    if ((tracing = th->tracing) != 0 && !always) {
    @@ -4109,6 +4110,8 @@ ruby_suppress_tracing(VALUE (*func)(VALU
    }

    raised = rb_threadptr_reset_raised(th);

  • _state = th->state;

  • th->state = 0;

    PUSH_TAG();
    if ((state = EXEC_TAG()) == 0) {
    @@ -4124,6 +4127,7 @@ ruby_suppress_tracing(VALUE (*func)(VALU
    if (state) {
    JUMP_TAG(state);
    }

  • th->state = _state;

    return result;
    }

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs