ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:86626] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
       [not found] <redmine.issue-14702.20180420100321@ruby-lang.org>
@ 2018-04-20 10:03 ` makoto_tajitsu
  2018-04-30 16:53 ` [ruby-core:86778] " makoto_tajitsu
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: makoto_tajitsu @ 2018-04-20 10:03 UTC (permalink / raw)
  To: ruby-core

Issue #14702 has been reported by makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu).

----------------------------------------
Bug #14702: On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
https://bugs.ruby-lang.org/issues/14702

* Author: makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
On Ruby 2.5.1, when loading file with RubyVM::InstructionSequence.load_from_binary, TracePoint callback event is not working on loaded file.

## Steps to reproduce

Ruby version.
```
$ ruby -v
# => ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
```

The example with `yomikomu` gem which is simply used `load_iseq` and `load_from_binary` method to load file quickly is following.
```
$ YOMIKOMU_AUTO_COMPILE=true bundle exec irb

> TracePoint.trace(:line) { |tp| puts tp.lineno if tp.path == '/path/to/somefile.rb' }
# => #<TracePoint:enabled>

> load '/path/to/somefile.rb'
# 3
# 4
# ...

require 'yomikomu'

load './somefile.rb'
# no tracepoint callback for line event
```

On Ruby 2.4.3, this example is working correctly, so tracepoint callback is called and output lineno to stdout when loaded file after `require 'yomikomu'`.



-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:86778] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
       [not found] <redmine.issue-14702.20180420100321@ruby-lang.org>
  2018-04-20 10:03 ` [ruby-core:86626] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq makoto_tajitsu
@ 2018-04-30 16:53 ` makoto_tajitsu
  2018-08-22  2:45 ` [ruby-core:88602] " ko1
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: makoto_tajitsu @ 2018-04-30 16:53 UTC (permalink / raw)
  To: ruby-core

Issue #14702 has been updated by makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu).

Description updated

How is the issue?

In addition to above, I confirm the issue in following example that does not use 3rd party gem.
```ruby
#!/usr/bin/env ruby

# Write ruby file
File.write('./loaded_file.rb', 'puts :hello')

# load file and write iseq file
iseq = RubyVM::InstructionSequence.compile_file('./loaded_file.rb')
File.write('./loaded_file.yarb', iseq.to_binary)

# define load_iseq
class RubyVM::InstructionSequence
  def self.load_iseq(fname)
    b = File.read('./loaded_file.yarb')
    RubyVM::InstructionSequence.load_from_binary(b)
  end
end

TracePoint.trace(:line) do |tp|
  puts "file: #{tp.path}, line: #{tp.lineno}" if tp.path =~ /loaded_file/
end

load './loaded_file.rb' # => on ruby 2.5.0 and 2.5.1, no tracepoint callback is.
```

----------------------------------------
Bug #14702: On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
https://bugs.ruby-lang.org/issues/14702#change-71736

* Author: makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
On Ruby 2.5.1, when loading file with RubyVM::InstructionSequence.load_from_binary, TracePoint callback event is not working on loaded file.

## Steps to reproduce

Ruby version.
```
$ ruby -v
# => ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
```

The example with `yomikomu` gem which is simply used `load_iseq` and `load_from_binary` method to load file quickly is following.
```ruby
$ YOMIKOMU_AUTO_COMPILE=true bundle exec irb

> TracePoint.trace(:line) { |tp| puts tp.lineno if tp.path == '/path/to/somefile.rb' }
# => #<TracePoint:enabled>

> load '/path/to/somefile.rb'
# 3
# 4
# ...

> require 'yomikomu'

> load '/path/to/somefile.rb'
# no tracepoint callback for line event
```

## Result of reproduce process

tracepoint callback isn't called on loaded file by using load_iseq and load_from_binary.

## Expected result and the reason why you expect

tracepoint callback should be called for any loaded file to debug with debugguer(e.g. byebug).

On Ruby 2.4.3, this example is working correctly, so tracepoint callback is called and output lineno to stdout when loaded file after `require 'yomikomu'`.





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:88602] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
       [not found] <redmine.issue-14702.20180420100321@ruby-lang.org>
  2018-04-20 10:03 ` [ruby-core:86626] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq makoto_tajitsu
  2018-04-30 16:53 ` [ruby-core:86778] " makoto_tajitsu
@ 2018-08-22  2:45 ` ko1
  2018-10-11 14:20 ` [ruby-core:89372] " nagachika00
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: ko1 @ 2018-08-22  2:45 UTC (permalink / raw)
  To: ruby-core

Issue #14702 has been updated by ko1 (Koichi Sasada).

Assignee set to ko1 (Koichi Sasada)

----------------------------------------
Bug #14702: On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
https://bugs.ruby-lang.org/issues/14702#change-73658

* Author: makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu)
* Status: Open
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
On Ruby 2.5.1, when loading file with RubyVM::InstructionSequence.load_from_binary, TracePoint callback event is not working on loaded file.

## Steps to reproduce

Ruby version.
```
$ ruby -v
# => ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
```

The example with `yomikomu` gem which is simply used `load_iseq` and `load_from_binary` method to load file quickly is following.
```ruby
$ YOMIKOMU_AUTO_COMPILE=true bundle exec irb

> TracePoint.trace(:line) { |tp| puts tp.lineno if tp.path == '/path/to/somefile.rb' }
# => #<TracePoint:enabled>

> load '/path/to/somefile.rb'
# 3
# 4
# ...

> require 'yomikomu'

> load '/path/to/somefile.rb'
# no tracepoint callback for line event
```

## Result of reproduce process

tracepoint callback isn't called on loaded file by using load_iseq and load_from_binary.

## Expected result and the reason why you expect

tracepoint callback should be called for any loaded file to debug with debugguer(e.g. byebug).

On Ruby 2.4.3, this example is working correctly, so tracepoint callback is called and output lineno to stdout when loaded file after `require 'yomikomu'`.





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:89372] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
       [not found] <redmine.issue-14702.20180420100321@ruby-lang.org>
                   ` (2 preceding siblings ...)
  2018-08-22  2:45 ` [ruby-core:88602] " ko1
@ 2018-10-11 14:20 ` nagachika00
  2018-10-28 18:22 ` [ruby-core:89609] " alanwucanada
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 7+ messages in thread
From: nagachika00 @ 2018-10-11 14:20 UTC (permalink / raw)
  To: ruby-core

Issue #14702 has been updated by nagachika (Tomoyuki Chikanaga).

Backport changed from 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: REQUIRED to 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: DONE

ruby_2_5 r64997 merged revision(s) 64514.

----------------------------------------
Bug #14702: On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
https://bugs.ruby-lang.org/issues/14702#change-74413

* Author: makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu)
* Status: Closed
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: DONE
----------------------------------------
On Ruby 2.5.1, when loading file with RubyVM::InstructionSequence.load_from_binary, TracePoint callback event is not working on loaded file.

## Steps to reproduce

Ruby version.
```
$ ruby -v
# => ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
```

The example with `yomikomu` gem which is simply used `load_iseq` and `load_from_binary` method to load file quickly is following.
```ruby
$ YOMIKOMU_AUTO_COMPILE=true bundle exec irb

> TracePoint.trace(:line) { |tp| puts tp.lineno if tp.path == '/path/to/somefile.rb' }
# => #<TracePoint:enabled>

> load '/path/to/somefile.rb'
# 3
# 4
# ...

> require 'yomikomu'

> load '/path/to/somefile.rb'
# no tracepoint callback for line event
```

## Result of reproduce process

tracepoint callback isn't called on loaded file by using load_iseq and load_from_binary.

## Expected result and the reason why you expect

tracepoint callback should be called for any loaded file to debug with debugguer(e.g. byebug).

On Ruby 2.4.3, this example is working correctly, so tracepoint callback is called and output lineno to stdout when loaded file after `require 'yomikomu'`.





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:89609] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
       [not found] <redmine.issue-14702.20180420100321@ruby-lang.org>
                   ` (3 preceding siblings ...)
  2018-10-11 14:20 ` [ruby-core:89372] " nagachika00
@ 2018-10-28 18:22 ` alanwucanada
  2019-03-04 23:58 ` [ruby-core:91666] " fxn
  2019-03-05  8:21 ` [ruby-core:91672] " fxn
  6 siblings, 0 replies; 7+ messages in thread
From: alanwucanada @ 2018-10-28 18:22 UTC (permalink / raw)
  To: ruby-core

Issue #14702 has been updated by alanwu (Alan Wu).

File 0001-Fix-TracePoint-for-nested-iseq-loaded-from-binary.patch added

Hello. I don't think this issue is fully fixed.
I have put together a patch that has a fix and tests that fail on both trunk and ruby_2_5 for your consideration:


~~~
    Fix TracePoint for nested iseq loaded from binary [Bug #14702]
    
    When loading iseq from binary while a TracePoint is on, we need to
    recompile instructions to their "trace_" varient. Before this commit
    we only recompiled instructions in the top level iSeq, which meant
    that TracePoint was malfunctioning for code inside module/class/method
    definitions.
    
    * compile.c: Move rb_iseq_init_trace to rb_ibf_load_iseq_complete.
      It is called on all iseqs during loading.
    
    * test_iseq.rb: Test that tracepoints fire within children iseq when
      using load_from_binary.
~~~

----------------------------------------
Bug #14702: On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
https://bugs.ruby-lang.org/issues/14702#change-74646

* Author: makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu)
* Status: Closed
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: DONE
----------------------------------------
On Ruby 2.5.1, when loading file with RubyVM::InstructionSequence.load_from_binary, TracePoint callback event is not working on loaded file.

## Steps to reproduce

Ruby version.
```
$ ruby -v
# => ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
```

The example with `yomikomu` gem which is simply used `load_iseq` and `load_from_binary` method to load file quickly is following.
```ruby
$ YOMIKOMU_AUTO_COMPILE=true bundle exec irb

> TracePoint.trace(:line) { |tp| puts tp.lineno if tp.path == '/path/to/somefile.rb' }
# => #<TracePoint:enabled>

> load '/path/to/somefile.rb'
# 3
# 4
# ...

> require 'yomikomu'

> load '/path/to/somefile.rb'
# no tracepoint callback for line event
```

## Result of reproduce process

tracepoint callback isn't called on loaded file by using load_iseq and load_from_binary.

## Expected result and the reason why you expect

tracepoint callback should be called for any loaded file to debug with debugguer(e.g. byebug).

On Ruby 2.4.3, this example is working correctly, so tracepoint callback is called and output lineno to stdout when loaded file after `require 'yomikomu'`.



---Files--------------------------------
0001-Fix-TracePoint-for-nested-iseq-loaded-from-binary.patch (4.21 KB)


-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:91666] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
       [not found] <redmine.issue-14702.20180420100321@ruby-lang.org>
                   ` (4 preceding siblings ...)
  2018-10-28 18:22 ` [ruby-core:89609] " alanwucanada
@ 2019-03-04 23:58 ` fxn
  2019-03-05  8:21 ` [ruby-core:91672] " fxn
  6 siblings, 0 replies; 7+ messages in thread
From: fxn @ 2019-03-04 23:58 UTC (permalink / raw)
  To: ruby-core

Issue #14702 has been updated by fxn (Xavier Noria).


Hi!

Rails 6 applcations have bootsnap and Zeitwerk enabled by default. Right now, that needs Ruby 2.6 because Zeitwerk sets a trace point on the :class event to support what I call "explicit namespaces".

Just wanted to let you know about this situation, in case you'd like to take it into account for the timeline to ship 5.2.4.

----------------------------------------
Bug #14702: On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
https://bugs.ruby-lang.org/issues/14702#change-76926

* Author: makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu)
* Status: Closed
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: DONE
----------------------------------------
On Ruby 2.5.1, when loading file with RubyVM::InstructionSequence.load_from_binary, TracePoint callback event is not working on loaded file.

## Steps to reproduce

Ruby version.
```
$ ruby -v
# => ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
```

The example with `yomikomu` gem which is simply used `load_iseq` and `load_from_binary` method to load file quickly is following.
```ruby
$ YOMIKOMU_AUTO_COMPILE=true bundle exec irb

> TracePoint.trace(:line) { |tp| puts tp.lineno if tp.path == '/path/to/somefile.rb' }
# => #<TracePoint:enabled>

> load '/path/to/somefile.rb'
# 3
# 4
# ...

> require 'yomikomu'

> load '/path/to/somefile.rb'
# no tracepoint callback for line event
```

## Result of reproduce process

tracepoint callback isn't called on loaded file by using load_iseq and load_from_binary.

## Expected result and the reason why you expect

tracepoint callback should be called for any loaded file to debug with debugguer(e.g. byebug).

On Ruby 2.4.3, this example is working correctly, so tracepoint callback is called and output lineno to stdout when loaded file after `require 'yomikomu'`.





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [ruby-core:91672] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
       [not found] <redmine.issue-14702.20180420100321@ruby-lang.org>
                   ` (5 preceding siblings ...)
  2019-03-04 23:58 ` [ruby-core:91666] " fxn
@ 2019-03-05  8:21 ` fxn
  6 siblings, 0 replies; 7+ messages in thread
From: fxn @ 2019-03-05  8:21 UTC (permalink / raw)
  To: ruby-core

Issue #14702 has been updated by fxn (Xavier Noria).


For reference: https://github.com/rails/rails/issues/35475.

----------------------------------------
Bug #14702: On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq
https://bugs.ruby-lang.org/issues/14702#change-76934

* Author: makoto_tajitsu@hotmail.co.jp (Makoto Tajitsu)
* Status: Closed
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: DONE
----------------------------------------
On Ruby 2.5.1, when loading file with RubyVM::InstructionSequence.load_from_binary, TracePoint callback event is not working on loaded file.

## Steps to reproduce

Ruby version.
```
$ ruby -v
# => ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
```

The example with `yomikomu` gem which is simply used `load_iseq` and `load_from_binary` method to load file quickly is following.
```ruby
$ YOMIKOMU_AUTO_COMPILE=true bundle exec irb

> TracePoint.trace(:line) { |tp| puts tp.lineno if tp.path == '/path/to/somefile.rb' }
# => #<TracePoint:enabled>

> load '/path/to/somefile.rb'
# 3
# 4
# ...

> require 'yomikomu'

> load '/path/to/somefile.rb'
# no tracepoint callback for line event
```

## Result of reproduce process

tracepoint callback isn't called on loaded file by using load_iseq and load_from_binary.

## Expected result and the reason why you expect

tracepoint callback should be called for any loaded file to debug with debugguer(e.g. byebug).

On Ruby 2.4.3, this example is working correctly, so tracepoint callback is called and output lineno to stdout when loaded file after `require 'yomikomu'`.





-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-03-05  8:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <redmine.issue-14702.20180420100321@ruby-lang.org>
2018-04-20 10:03 ` [ruby-core:86626] [Ruby trunk Bug#14702] On Ruby 2.5.1, tracepoint isn't working on the file that is loaded by load_iseq makoto_tajitsu
2018-04-30 16:53 ` [ruby-core:86778] " makoto_tajitsu
2018-08-22  2:45 ` [ruby-core:88602] " ko1
2018-10-11 14:20 ` [ruby-core:89372] " nagachika00
2018-10-28 18:22 ` [ruby-core:89609] " alanwucanada
2019-03-04 23:58 ` [ruby-core:91666] " fxn
2019-03-05  8:21 ` [ruby-core:91672] " fxn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).