Bug #11490
closedAllocation tracer sometimes attributes allocations to the wrong source file/line
Description
See the reproduction script in https://gist.github.com/chancancode/dc175e702c02cdfa5ffb
This was originally brought to my attention via https://github.com/skylightio/skylight-ruby/issues/36
As you can see in the Github ticket, we overwrote Kernel#require and was incorrectly blamed for allocating a lot of objects/memory. I checked the source and saw that the file/line info is filled by the last Ruby-land control frame, so I was almost ready to accept this as an unfortunate artifact that cannot be fixed.
However, when I made the standalone reproduction script to test my theory, I noticed that it actually gets it right sometimes (the lines that reports nokogiri.bundle:0 instead of allocation_tracker_bug.rb:11), so it seems like something else is going on here.
By the way, since RubyGems overwrites Kernel#require, even without any other third-party libraries loaded, you can already observe allocation tracer attributing a lot of allocations to RubyGem's kernel_require.rb out of the box.
Files