From: godfreykfc@... Date: 2015-08-27T07:42:15+00:00 Subject: [ruby-core:70604] [Ruby trunk - Bug #11490] Allocation tracer sometimes attributes allocations to the wrong source file/line Issue #11490 has been updated by Godfrey Chan. Related: when the allocation tracer is trying to blame the `Kernel#require` monkey patch, the line number appears to be off-by-one ("11" instead of "12") ---------------------------------------- Bug #11490: Allocation tracer sometimes attributes allocations to the wrong source file/line https://bugs.ruby-lang.org/issues/11490#change-54011 * Author: Godfrey Chan * Status: Open * Priority: Normal * Assignee: * ruby -v: * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- 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](https://github.com/ruby/ruby/blob/7cf523c7db67c22ffc09b38a9c5bea057f578db2/vm_trace.c#L752), 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-------------------------------- allocation_tracker_bug.rb (786 Bytes) -- https://bugs.ruby-lang.org/