Project

General

Profile

Actions

Bug #13689

closed

`Thread#inspect` affect Fiber switching

Added by ko1 (Koichi Sasada) almost 7 years ago. Updated almost 7 years ago.

Status:
Closed
Target version:
-
ruby -v:
2.2 to 2.5
[ruby-core:81802]

Description

Thread#inspect shows different results when Fiber is switched.
I believe it isn't intended behavior.

Thread.new{
  p Thread.current #=> #<Thread:0x000000000306b320@test.rb:2 run>

  Fiber.new{
    p Thread.current #=> #<Thread:0x000000000306b320@test.rb:5 run>
  }.resume
}.join

It seems from ruby 2.2 (before it, it doesn't contain location info).

[SCRIPT] test.rb
[DIFF] ruby 1.9.3p489 (2014-01-09 revision 44533) [i386-mswin32_110] (0.2 sec)
======================================================================
#<Thread:0x9b4358 run>
#<Fiber:0x9b42e0>
#<Thread:0x9b4358 run>
======================================================================
[DIFF] ruby 2.0.0p647 (2015-08-18 revision 51630) [x64-mswin64_110] (0.5 sec)
======================================================================
#<Thread:0x00000002f5e4f0 run>
#<Fiber:0x00000002f5e1d0>
#<Thread:0x00000002f5e4f0 run>
======================================================================
[DIFF] ruby 2.1.8p412 (2015-10-29 revision 52362) [x64-mswin64_110] (0.5 sec)
======================================================================
#<Thread:0x000000030ce560 run>
#<Fiber:0x000000030ce380>
#<Thread:0x000000030ce560 run>
======================================================================
[DIFF] ruby 2.2.7p418 (2017-01-04 revision 53222) [x64-mswin64_110] (0.5 sec)
======================================================================
#<Thread:0x000000033f5e00@test.rb:2 run>
#<Fiber:0x000000033f5ba8>
#<Thread:0x000000033f5e00@test.rb:5 run>
======================================================================
[DIFF] ruby 2.3.3p255 (2017-03-20 revision 56259) [x64-mswin64_110] (0.6 sec)
======================================================================
#<Thread:0x00000002fdaf50@test.rb:2 run>
#<Fiber:0x00000002fdad20>
#<Thread:0x00000002fdaf50@test.rb:5 run>
======================================================================
[DIFF] ruby 2.4.1p111 (2017-03-22) [x64-mswin64_110] (0.6 sec)
======================================================================
#<Thread:0x000000030e2e70@test.rb:2 run>
#<Fiber:0x000000030e2ba0>
#<Thread:0x000000030e2e70@test.rb:5 run>
======================================================================
[DIFF] ruby 2.5.0dev (2017-06-22 trunk 59112) [x64-mswin64_110] (0.2 sec)
======================================================================
#<Thread:0x0000000003092e70@test.rb:2 run>
#<Fiber:0x0000000003092ba0>
#<Thread:0x0000000003092e70@test.rb:5 run>
======================================================================
[TOTAL] 7 results (0.7 sec)
Actions #1

Updated by ko1 (Koichi Sasada) almost 7 years ago

  • Description updated (diff)
Actions #2

Updated by ko1 (Koichi Sasada) almost 7 years ago

  • Status changed from Open to Closed

Applied in changeset trunk|r59200.


introduce rb_fiber_t::first_proc.

  • cont.c (rb_fiber_t): add rb_fiber_t::first_proc and do not use
    rb_thread_t::first_proc which should be thread local.
    [Bug #13689]

  • test/ruby/test_thread.rb: test for [Bug #13689].

Actions

Also available in: Atom PDF

Like0
Like0Like0