Bug #11603


Count trace_running for internal event

Added by k0kubun (Takashi Kokubun) over 6 years ago. Updated about 6 years ago.

Target version:
ruby -v:
ruby 2.3.0dev (2015-10-19 trunk 52192) [x86_64-darwin14]


I want to fix a crash:

I noticed that clean_hooks can be executed inside exec_hooks_body.
The hooks of list->hooks can be xfreed during exec_hooks_body.
That's because th->vm->trace_running is not incremented for exec_hooks_unprotected.

So I fixed rb_threadptr_exec_event_hooks_orig to count exec_hooks_unprotected as th->vm->trace_running too.


ruby_2015-10-19-221406_P607.crash (18 KB) ruby_2015-10-19-221406_P607.crash crash report k0kubun (Takashi Kokubun), 10/19/2015 02:43 PM
patch.diff (549 Bytes) patch.diff git diff k0kubun (Takashi Kokubun), 10/19/2015 02:46 PM

Updated by sorah (Sorah Fukumori) over 6 years ago

  • Assignee set to ko1 (Koichi Sasada)

assigning ko1 at here too, because he has self-assigned at GitHub PR

Updated by deivid (David Rodríguez) over 6 years ago

Commenting here just to confirm that this change fixes the SEGVs that this patch introduces in byebug's test suite.

Updated by k0kubun (Takashi Kokubun) about 6 years ago

Byebug 7.0.0 including is released to the day before yesterday.
Since byebug gem is installed by Rails' default Gemfile, I guess many users may have chance to cause this SEGV.

Could you review this and point out what is a blocker to merge this patch?

Actions #4

Updated by ko1 (Koichi Sasada) about 6 years ago

  • Status changed from Open to Closed

Applied in changeset r52476.

  • vm_trace.c (rb_threadptr_exec_event_hooks_orig): maintain trace_running counter on internal events.

This patch is made by Takashi Kokubun
[Bug #11603]

Updated by deivid (David Rodríguez) about 6 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: UNKNOWN, 2.1: REQUIRED, 2.2: REQUIRED

Great! Thanks a lot, Koichi!

We need backports to 2.1 and 2.2 if possible.

Updated by nagachika (Tomoyuki Chikanaga) about 6 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: REQUIRED, 2.2: REQUIRED to 2.0.0: UNKNOWN, 2.1: REQUIRED, 2.2: DONE

Backported into ruby_2_2 branch at r52497.

Updated by usa (Usaku NAKAMURA) about 6 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: REQUIRED, 2.2: DONE to 2.0.0: UNKNOWN, 2.1: DONE, 2.2: DONE

ruby_2_1 r52641 merged revision(s) 52476,52477.


Also available in: Atom PDF