diff options
author | Daniel Colson <[email protected]> | 2025-04-28 12:54:25 -0400 |
---|---|---|
committer | John Hawthorn <[email protected]> | 2025-05-01 16:58:06 -0700 |
commit | 48a360baa4570a31d760040118d005bb656c6389 (patch) | |
tree | 9a0f986aef516813a934200fa5b139f5751e14e5 /lib/bundler/source.rb | |
parent | 3176cd699359e5dc276f15452dc5ed828b58c628 (diff) |
After upgrading GitHub to Ruby 3.4 we noticed that we stopped getting
useful C level backtrace information in our crash reports. We traced it
back to https://github.com/github/ruby/commit/7dd2afbe3a14d021e5554288517709f5778c3d58.
Passing 0 instead of -1 made sense for the Mach-O version of
`fill_lines`, but there is a separate ELF version of `fill_lines` that
still has special handling for -1: https://github.com/ruby/ruby/blob/58e3aa02240a9ec1b5fe6ce60d63828c2cf0c73a/addr2line.c#L2178-L2209
Without this special handling for the main executable, we don't have the
right `base_addr` when reading debug info, and so we fail to populate
the information for that line: https://github.com/ruby/ruby/blob/58e3aa02240a9ec1b5fe6ce60d63828c2cf0c73a/addr2line.c#L1948
Then we get to https://github.com/ruby/ruby/blob/58e3aa02240a9ec1b5fe6ce60d63828c2cf0c73a/addr2line.c#L2649,
and potentially (depending on how things were run) get back `"ruby"` as
`info.dli_fname` instead of the absolute path for the executable. We set
that as the `binary_filename` and then try to open it inside the next
call to `fill_lines`, but that fails (unless you happen to be in the
directory where the ruby executable lives) and break out of filling
lines entirely: https://github.com/ruby/ruby/blob/58e3aa02240a9ec1b5fe6ce60d63828c2cf0c73a/addr2line.c#L2673-L2674
This commit treats offset 0 as the main executable, rather than having
a special meaning for -1 (which gets turned into 0 anyway).
[Bug #21289]
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/13195
Diffstat (limited to 'lib/bundler/source.rb')
0 files changed, 0 insertions, 0 deletions