[#56329] [ruby-trunk - Bug #8722][Assigned] Refinements remain active beyond the end of an evaled string — "charliesome (Charlie Somerville)" <charliesome@...>

9 messages 2013/08/02

[#56333] [CommonRuby - Feature #8723][Open] Array.any? predicate returns true for empty array. — "nurettin (Nurettin Onur TUGCU)" <onurtugcu@...>

12 messages 2013/08/02

[#56368] [ruby-trunk - Bug #8730][Open] "rescue Exception" rescues Timeout::ExitException — "takiuchi (Genki Takiuchi)" <genki@...21g.com>

15 messages 2013/08/04

[#56407] [ruby-trunk - misc #8741][Open] email notification on bugs.ruby-lang.org is broken — "rits (First Last)" <redmine@...>

18 messages 2013/08/05

[#56524] [ruby-trunk - Bug #8770][Open] [PATCH] process.c: avoid EINTR from Process.spawn — "normalperson (Eric Wong)" <normalperson@...>

19 messages 2013/08/10

[#56536] [ruby-trunk - Feature #8772][Open] Hash alias #| merge, and the case for Hash and Array polymorphism — "trans (Thomas Sawyer)" <redmine@...>

24 messages 2013/08/11

[#56544] [ruby-trunk - Bug #8774][Open] rb_file_dirname return wrong encoding string when dir is "." — jiayp@... (贾 延平) <jiayp@...>

10 messages 2013/08/11

[#56569] [ruby-trunk - Feature #8781][Open] Use require_relative() instead of require() if possible — "ko1 (Koichi Sasada)" <redmine@...>

31 messages 2013/08/12
[#56582] [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — "drbrain (Eric Hodel)" <drbrain@...7.net> 2013/08/12

[#56584] Re: [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — SASADA Koichi <ko1@...> 2013/08/12

(2013/08/13 2:25), drbrain (Eric Hodel) wrote:

[#56636] Re: [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — Aaron Patterson <tenderlove@...> 2013/08/16

On Tue, Aug 13, 2013 at 07:38:01AM +0900, SASADA Koichi wrote:

[#56634] [ruby-trunk - Feature #8788][Open] use eventfd on newer Linux instead of pipe for timer thread — "normalperson (Eric Wong)" <normalperson@...>

11 messages 2013/08/16

[#56648] [ruby-trunk - Bug #8795][Open] "Null byte in string error" on Marshal.load — "mml (McClain Looney)" <m@...>

17 messages 2013/08/16

[#56824] [ruby-trunk - Feature #8823][Open] Run trap handler in an independent thread called "Signal thread" — "ko1 (Koichi Sasada)" <redmine@...>

14 messages 2013/08/27

[#56878] [ruby-trunk - misc #8835][Open] Introducing a semantic versioning scheme and branching policy — "knu (Akinori MUSHA)" <knu@...>

11 messages 2013/08/30

[#56890] [ruby-trunk - Feature #8839][Open] Class and module should return the class or module that was opened — "headius (Charles Nutter)" <headius@...>

26 messages 2013/08/30

[#56894] [ruby-trunk - Feature #8840][Open] Yielder#state — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>

14 messages 2013/08/30

[ruby-core:56889] [ruby-trunk - Bug #7648][Rejected] GServer does not close cleanly from signal interrupt context

From: "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>
Date: 2013-08-30 17:20:36 UTC
List: ruby-core #56889
Issue #7648 has been updated by kosaki (Motohiro KOSAKI).

Status changed from Assigned to Rejected

Holding mutex in trap is deadlockable. It is what ruby complained.  The best workaround is to make new thread in trap handler and stop gserver asynchnorously, I think.
----------------------------------------
Bug #7648: GServer does not close cleanly from signal interrupt context
https://bugs.ruby-lang.org/issues/7648#change-41437

Author: jleo3 (Joe Leo)
Status: Rejected
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category: lib
Target version: next minor
ruby -v: ruby 2.0.0dev (2013-01-02 trunk 38676) [i686-linux]
Backport: 


SUMMARY:
When a signal interrupt is trapped, we can no longer call #close on GServer without it throwing a ThreadError. 

STEPS TO REPEAT:
1) Run the following code:

    require 'gserver'

    server = GServer.new 8080
    server.start
    trap("SIGINT") { server.stop }
    gets # or any command that keeps the process running

2) Hit CTRL+C or whichever command will send the interrupt signal to this program. 

WHAT I EXPECTED: In version 1.9.3, CTRL+C sends an interrupt signal and the program exits cleanly. 

WHAT HAPPENED: When running the version from trunk the following stack trace is thrown. 

^C/home/joe/.rvm/rubies/ruby-head/lib/ruby/2.0.0/gserver.rb:116:in `synchronize': can't be called from trap context (ThreadError)
	from /home/joe/.rvm/rubies/ruby-head/lib/ruby/2.0.0/gserver.rb:116:in `stop'
	from gserver_bug.rb:5:in `block in <main>'
	from gserver_bug.rb:6:in `call'
	from gserver_bug.rb:6:in `gets'
	from gserver_bug.rb:6:in `gets'
	from gserver_bug.rb:6:in `<main>'

POSSIBLY RELEVANT: https://bugs.ruby-lang.org/issues/6416

NOTE: This was tried with AND without RVM with the same results.


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

In This Thread

Prev Next