[ruby-core:70643] [Ruby trunk - Bug #11490] [Feedback] Allocation tracer sometimes attributes allocations to the wrong source file/line

From: ko1@...
Date: 2015-09-01 09:02:46 UTC
List: ruby-core #70643
Issue #11490 has been updated by Koichi Sasada.

Status changed from Open to Feedback
Assignee set to Koichi Sasada

I don't think "(VM internal):0" is useful.


----------------------------------------
Bug #11490: Allocation tracer sometimes attributes allocations to the wrong source file/line
https://bugs.ruby-lang.org/issues/11490#change-54044

* Author: Godfrey Chan
* Status: Feedback
* Priority: Normal
* Assignee: Koichi Sasada
* 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/

In This Thread

Prev Next