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/