Feature #10602
Support multithreaded profiling
Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
Description
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.