[#87467] [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError — mofezilla@...
Issue #14841 has been reported by hirura (Hiroyuki URANISHI).
3 messages
2018/06/10
[#87515] [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError — hirura@...
Issue #14841 has been updated by hirura (Hiroyuki URANISHI).
7 messages
2018/06/19
[#87516] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
hirura@gmail.com wrote:
[#87517] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
Sorry, I left this out: If you can reproduce it again, can you
[#87519] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— hirura <hirura@...>
2018/06/19
Hi Eric,
[#87521] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
hirura <hirura@gmail.com> wrote:
[#87541] [Ruby trunk Feature#14859] [PATCH] implement Timeout in VM — normalperson@...
Issue #14859 has been reported by normalperson (Eric Wong).
4 messages
2018/06/21
[#87605] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — takashikkbn@...
Issue #14867 has been reported by k0kubun (Takashi Kokubun).
3 messages
2018/06/23
[#87614] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — normalperson@...
Issue #14867 has been updated by normalperson (Eric Wong).
4 messages
2018/06/23
[#87631] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — takashikkbn@...
Issue #14867 has been updated by k0kubun (Takashi Kokubun).
5 messages
2018/06/25
[#87635] Re: [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process
— Eric Wong <normalperson@...>
2018/06/25
takashikkbn@gmail.com wrote:
[#87665] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — eregontp@...
Issue #14867 has been updated by Eregon (Benoit Daloze).
4 messages
2018/06/28
[#87710] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — Greg.mpls@...
Issue #14867 has been updated by MSP-Greg (Greg L).
3 messages
2018/06/30
[ruby-core:87644] [Ruby trunk Bug#14870] Both TracePoint's :call and :c_call filters seem to skip a lot of builtin methods
From:
ruby-core@...
Date:
2018-06-26 14:26:17 UTC
List:
ruby-core #87644
Issue #14870 has been updated by marcandre (Marc-Andre Lafortune).
Assignee set to nobu (Nobuyoshi Nakada)
Mmm, that's indeed a bug that should be fixed imo.
This indeed happens because of optimizations for basic operators (in insns.def):
~~~ ruby
TracePoint.new(:call, :c_call) { |tp| puts tp.method_id }.enable { 42 % 2 } # => No printing
# These don't go through the optimizations of insns.def:
TracePoint.new(:call, :c_call) { |tp| puts tp.method_id }.enable { 42.send(:%, 2) } # => %
TracePoint.new(:call, :c_call) { |tp| puts tp.method_id }.enable { 42.modulo(2) } # => modulo
~~~
I'm confident that Nobu will find the most efficient way to fix this.
----------------------------------------
Bug #14870: Both TracePoint's :call and :c_call filters seem to skip a lot of builtin methods
https://bugs.ruby-lang.org/issues/14870#change-72665
* Author: yarmiganosca (Chris Hoffman)
* Status: Open
* Priority: Normal
* Assignee: nobu (Nobuyoshi Nakada)
* Target version:
* ruby -v: 2.5.1p57
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
It looks like a lot of builtin methods (`Array#<<` and `Integer#+`, for example) aren't hooked when using the :call or :c_call filters for TracePoint.
```
➜ irb
:001 > [RUBY_VERSION, RUBY_PATCHLEVEL]
=> ["2.5.1", 57]
:002 > TracePoint.new(:call, :c_call) { |tp| puts tp.method_id if tp.method_id == :<< }.enable { [] << 4 }
=> [4]
:003 > TracePoint.new(:call, :c_call) { |tp| puts tp.method_id if tp.method_id == :concat }.enable { [].concat([4]) }
concat
=> [4]
:004 > TracePoint.new(:call, :c_call) { |tp| puts tp.method_id if tp.method_id == :+ }.enable { 1 + 1 }
=> 2
:005 > TracePoint.new(:call, :c_call) { |tp| puts tp.method_id if tp.method_id == :+ }.enable { 1.0 + 1.0 }
=> 2.0
```
I can understand if TracePoint being able to hook every method call against every object would be prohibitive from a performance perspective, but the TracePoint documentation currently doesn't indicate that it ignores entire classes of methods, so either the implementation should support every method call (maybe through other event types, if necessary) or the documentation should be clear about what TracePoint filters will and won't hook into.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>