From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS47066 71.19.144.0/20 X-Spam-Status: No, score=-1.9 required=3.0 tests=AWL,BAYES_00 shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: normalperson@yhbt.net Received: from zedshaw2.xen.prgmr.com (zedshaw2.xen.prgmr.com [71.19.156.177]) by dcvr.yhbt.net (Postfix) with ESMTP id 99C361F6BD for ; Tue, 30 Apr 2013 02:40:08 +0000 (UTC) Received: from zedshaw2.xen.prgmr.com (unknown [IPv6:::1]) by zedshaw2.xen.prgmr.com (Postfix) with ESMTP id 18CDB73E08 for ; Tue, 30 Apr 2013 02:42:06 +0000 (UTC) MIME-Version: 1.0 Date: Tue, 30 Apr 2013 02:39:34 +0000 From: Eric Wong List-Archive: List-Help: List-Id: List-Post: List-Subscribe: List-Unsubscribe: Message-Id: <1367289582-31293-10-git-send-email-normalperson@yhbt.net> Precedence: list References: <1367289582-31293-1-git-send-email-normalperson@yhbt.net> Sender: sleepy.penguin@librelist.org Subject: [sleepy.penguin] [PATCH 09/17] test_epoll: workaround MRI 1.8 threading bug To: sleepy.penguin@librelist.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Threads do not seem safe to start inside signal handlers on Matz Ruby 1.8 --- test/test_epoll.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/test/test_epoll.rb b/test/test_epoll.rb index c6cc198..5bf332f 100644 --- a/test/test_epoll.rb +++ b/test/test_epoll.rb @@ -153,14 +153,17 @@ def test_max_events_small end def test_signal_safe_wait_forever + sigpipe = IO.pipe time = {} - thr = nil + thr = Thread.new do + IO.select([sigpipe[0]]) # wait for USR1 + sigpipe[0].read(1) + sleep 0.5 + @wr.syswrite '.' + end trap(:USR1) do time[:USR1] = Time.now - thr = Thread.new do - sleep 0.5 - @wr.syswrite '.' - end + sigpipe[1].syswrite('.') # wake up thr end @ep.add @rd, Epoll::IN tmp = [] @@ -184,6 +187,7 @@ def test_signal_safe_wait_forever assert_kind_of Thread, thr thr.join ensure + sigpipe.each { |io| io.close } trap(:USR1, 'DEFAULT') end -- 1.8.2.1.367.gc875ca7