Issue #10602 has been reported by Mike Perham. ---------------------------------------- Bug #10602: Support multithreaded profiling https://bugs.ruby-lang.org/issues/10602 * Author: Mike Perham * Status: Open * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: 2.1.5 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- The current `rb_profile_frames` captures the frame for whatever thread is current. This makes profiling a multithreaded system impossible. I'd like a `rb_thread_profile_frames` which captures a given thread. It seems like it would be a very simple change, something like this: ~~~ int rb_profile_frames(int start, int limit, VALUE *buff, int *lines) { rb_profile_frames(start, limit, buff, lines, GET_THREAD()) } int rb_thread_profile_frames(int start, int limit, VALUE *buff, int *lines, rb_thread_t *th) { int i; rb_control_frame_t *cfp = th->cfp, *end_cfp = RUBY_VM_END_CONTROL_FRAME(th); ... ~~~ This way profiling gems could lock to a specific thread. -- https://bugs.ruby-lang.org/