Forum: Ruby-core [ruby-trunk - Bug #7459][Open] at_exit { Thread.new {} } broken in r37921

Posted by zenspider (Ryan Davis) (Guest)
on 2012-11-29 01:28
(Received via mailing list)
Issue #7459 has been reported by zenspider (Ryan Davis).

----------------------------------------
Bug #7459: at_exit { Thread.new {} } broken in r37921
https://bugs.ruby-lang.org/issues/7459

Author: zenspider (Ryan Davis)
Status: Open
Priority: Urgent
Assignee:
Category: core
Target version: 2.0.0
ruby -v: 2.0


ruby -e 'p Thread.current; at_exit { p Thread.current; [Thread.new 
{}].map(&:join) }'

outputs:

#<Thread:0x007feeb28b0fa8 run>
#<Thread:0x007feeb28b0fa8 dead>
-e:1:in `new': can't alloc thread (ThreadError)
  from -e:1:in `block in <main>'

Either the main thread shouldn't be marked as dead until it actually is, 
or the check in thread_s_new should be expanded to include whatever 
thread is responsible for the at_exit run.
Posted by zenspider (Ryan Davis) (Guest)
on 2012-11-29 01:44
(Received via mailing list)
Issue #7459 has been updated by zenspider (Ryan Davis).


I don't think main thread should be marked dead until after at_exit is 
done:

% multiruby -e 'p Thread.current; at_exit { p Thread.current }'

VERSION = mri_trunk
CMD     = ~/.multiruby/install/mri_trunk/bin/ruby -e p Thread.current; 
at_exit { p Thread.current }

#<Thread:0x007f977c0c8fa8 run>
#<Thread:0x007f977c0c8fa8 dead>

RESULT = 0

VERSION = 1.8.7-p249
CMD     = ~/.multiruby/install/1.8.7-p249/bin/ruby -e p Thread.current; 
at_exit { p Thread.current }

#<Thread:0x1014e7350 run>
#<Thread:0x1014e7350 run>

RESULT = 0

VERSION = 1.9.2-p320
CMD     = ~/.multiruby/install/1.9.2-p320/bin/ruby -e p Thread.current; 
at_exit { p Thread.current }

#<Thread:0x007f8ab286b9a8 run>
#<Thread:0x007f8ab286b9a8 run>

RESULT = 0

VERSION = 1.9.3-p194
CMD     = ~/.multiruby/install/1.9.3-p194/bin/ruby -e p Thread.current; 
at_exit { p Thread.current }

#<Thread:0x007fabc386b5c0 run>
#<Thread:0x007fabc386b5c0 run>

RESULT = 0

TOTAL RESULT = 0 failures out of 4

Passed: 1.9.2-p320, 1.8.7-p249, 1.9.3-p194, mri_trunk
Failed:

----------------------------------------
Bug #7459: at_exit { Thread.new {} } broken in r37921
https://bugs.ruby-lang.org/issues/7459#change-34105

Author: zenspider (Ryan Davis)
Status: Open
Priority: Urgent
Assignee:
Category: core
Target version: 2.0.0
ruby -v: 2.0


ruby -e 'p Thread.current; at_exit { p Thread.current; [Thread.new 
{}].map(&:join) }'

outputs:

#<Thread:0x007feeb28b0fa8 run>
#<Thread:0x007feeb28b0fa8 dead>
-e:1:in `new': can't alloc thread (ThreadError)
  from -e:1:in `block in <main>'

Either the main thread shouldn't be marked as dead until it actually is, 
or the check in thread_s_new should be expanded to include whatever 
thread is responsible for the at_exit run.
Posted by zenspider (Ryan Davis) (Guest)
on 2012-11-29 01:45
(Received via mailing list)
Issue #7459 has been updated by zenspider (Ryan Davis).


This is blocking my merge of minitest to trunk for 2.0 preview.
----------------------------------------
Bug #7459: at_exit { Thread.new {} } broken in r37921
https://bugs.ruby-lang.org/issues/7459#change-34106

Author: zenspider (Ryan Davis)
Status: Open
Priority: Urgent
Assignee:
Category: core
Target version: 2.0.0
ruby -v: 2.0


ruby -e 'p Thread.current; at_exit { p Thread.current; [Thread.new 
{}].map(&:join) }'

outputs:

#<Thread:0x007feeb28b0fa8 run>
#<Thread:0x007feeb28b0fa8 dead>
-e:1:in `new': can't alloc thread (ThreadError)
  from -e:1:in `block in <main>'

Either the main thread shouldn't be marked as dead until it actually is, 
or the check in thread_s_new should be expanded to include whatever 
thread is responsible for the at_exit run.
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-11-29 01:58
(Received via mailing list)
Issue #7459 has been updated by kosaki (Motohiro KOSAKI).

Status changed from Open to Closed

fixed at r37958

----------------------------------------
Bug #7459: at_exit { Thread.new {} } broken in r37921
https://bugs.ruby-lang.org/issues/7459#change-34107

Author: zenspider (Ryan Davis)
Status: Closed
Priority: Urgent
Assignee:
Category: core
Target version: 2.0.0
ruby -v: 2.0


ruby -e 'p Thread.current; at_exit { p Thread.current; [Thread.new 
{}].map(&:join) }'

outputs:

#<Thread:0x007feeb28b0fa8 run>
#<Thread:0x007feeb28b0fa8 dead>
-e:1:in `new': can't alloc thread (ThreadError)
  from -e:1:in `block in <main>'

Either the main thread shouldn't be marked as dead until it actually is, 
or the check in thread_s_new should be expanded to include whatever 
thread is responsible for the at_exit run.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.