зеркало из https://github.com/github/ruby.git
Add thread and ractor counts to bug reports
This is useful for crash triaging. It also helps to hint extension developers about the misuse of `rb_thread_call_without_gvl()`. Example: $ ./miniruby -e 'Ractor.new{Ractor.receive}; Thread.new{sleep}; Process.kill:SEGV,Process.pid' <snip> -- Threading information --------------------------------------------------- Total ractor count: 2 Ruby thread count for this ractor: 2
This commit is contained in:
Родитель
e0cf80d666
Коммит
2f81bb793f
|
@ -754,6 +754,9 @@ class TestRubyOptions < Test::Unit::TestCase
|
|||
\n
|
||||
)?
|
||||
)x,
|
||||
%r(
|
||||
(?:--\sThreading(?:.+\n)*\n)?
|
||||
)x,
|
||||
%r(
|
||||
(?:--\sMachine(?:.+\n)*\n)?
|
||||
)x,
|
||||
|
|
|
@ -1083,6 +1083,14 @@ rb_vm_bugreport(const void *ctx)
|
|||
SDR();
|
||||
rb_backtrace_print_as_bugreport();
|
||||
fputs("\n", stderr);
|
||||
// If we get here, hopefully things are intact enough that
|
||||
// we can read these two numbers. It is an estimate because
|
||||
// we are reading without synchronization.
|
||||
fprintf(stderr, "-- Threading information "
|
||||
"---------------------------------------------------\n");
|
||||
fprintf(stderr, "Total ractor count: %u\n", vm->ractor.cnt);
|
||||
fprintf(stderr, "Ruby thread count for this ractor: %u\n", rb_ec_ractor_ptr(ec)->threads.cnt);
|
||||
fputs("\n", stderr);
|
||||
}
|
||||
|
||||
rb_dump_machine_register(ctx);
|
||||
|
|
Загрузка…
Ссылка в новой задаче