-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
problems with interpreter backtraces #29695
Comments
Actually this appears to be the opposite:
Looking at the code, the reason for this is they way that |
Increase expressibility of what can be stored in backtrace buffers, while ensuring that the GC can find roots without knowing about the detail. To do this, introduce a new "extended backtrace entry" format which carries along the number of roots and other data in a bitpacked format. This allows the backtrace buffer to be traversed and the roots collected in a general way, without the GC knowing about interpreter frames. Use this to add the module to InterperterIP so that the module of interpreted top level thunks can be known. In the future the extended entry format should allow us to be a lot more flexible with what can be stored in a backtrace. For example, we could * Compress the backtrace cycles of runaway recursive functions so that stack overflows are much more likely to fit in the fixed-size bt_data array. * Integrate external or other types of interpreter frames into the backtrace machinery. Also: * Fix some problems with how jl_unw_stepn is used to collect backtraces in chunks in jl_backtrace_from_here (fixes #29695). * Improve printing of InterpreterIP's holding CodeInfo objects so they fit on one line.
Increase expressibility of what can be stored in backtrace buffers, while ensuring that the GC can find roots without knowing about the detail. To do this, introduce a new "extended backtrace entry" format which carries along the number of roots and other data in a bitpacked format. This allows the backtrace buffer to be traversed and the roots collected in a general way, without the GC knowing about interpreter frames. Use this to add the module to InterperterIP so that the module of interpreted top level thunks can be known. In the future the extended entry format should allow us to be a lot more flexible with what can be stored in a backtrace. For example, we could * Compress the backtrace cycles of runaway recursive functions so that stack overflows are much more likely to fit in the fixed-size bt_data array. * Integrate external or other types of interpreter frames into the backtrace machinery. Also: * Add interpreter frames to stack trace dumping of fatal errors. * Fix some problems with how jl_unw_stepn is used to collect backtraces in chunks in jl_backtrace_from_here (fixes #29695). * Improve printing of InterpreterIP's holding CodeInfo objects so they fit on one line.
Increase expressibility of what can be stored in backtrace buffers, while ensuring that the GC can find roots without knowing about the detail. To do this, introduce a new "extended backtrace entry" format which carries along the number of roots and other data in a bitpacked format. This allows the backtrace buffer to be traversed and the roots collected in a general way, without the GC knowing about interpreter frames. Use this to add the module to InterperterIP so that the module of interpreted top level thunks can be known. In the future the extended entry format should allow us to be a lot more flexible with what can be stored in a backtrace. For example, we could * Compress the backtrace cycles of runaway recursive functions so that stack overflows are much more likely to fit in the fixed-size bt_data array. * Integrate external or other types of interpreter frames into the backtrace machinery. Also: * Add interpreter frames to stack trace dumping of fatal errors. * Fix some problems with how jl_unw_stepn is used to collect backtraces in chunks in jl_backtrace_from_here (fixes #29695). * Improve printing of InterpreterIP's holding CodeInfo objects so they fit on one line.
* Translate return->call address internally in jl_unw_stepn so that users don't have to deal with this subtlety * Rearrange the jl_unw_stepn return code so that interpreter stack traces can always be fit in to bt_data when calling jl_unw_stepn incrementally for deep stacks. Fixes #29695
…_unw_stepn Translate return->call address internally in jl_unw_stepn so that users never have to deal with this subtlety when calling StackTraces.lookup. Also rearrange the jl_unw_stepn API a little so that interpreter stack traces can always be fit in to bt_data when calling jl_unw_stepn incrementally for deep stacks. Fixes #29695
…_unw_stepn Translate return->call address internally in jl_unw_stepn so that users never have to deal with this subtlety when calling StackTraces.lookup. Also rearrange the jl_unw_stepn API a little so that interpreter stack traces can always be fit in to bt_data when calling jl_unw_stepn incrementally for deep stacks + add test cases for that (Fixes #29695).
…_unw_stepn Translate return->call address internally in jl_unw_stepn so that users never have to deal with this subtlety when calling StackTraces.lookup. Also rearrange the jl_unw_stepn API a little so that interpreter stack traces can always be fit in to bt_data when calling jl_unw_stepn incrementally for deep stacks + add test cases for that (Fixes #29695). For the tests, clean up printing of CodeInfo objects wrapped in InterpreterIP.
Seems to be two, possibly disjoint problems observed here:
f28442
on the callstackThe text was updated successfully, but these errors were encountered: