Bug #960

SIGINT signal is not handled properly on OpenSolaris

Added by daesan (Dae San Hwang) over 3 years ago. Updated about 1 year ago.

[ruby-core:21021]
Status:Closed Start date:12/31/2008
Priority:High Due date:
Assignee:yugui (Yuki Sonoda) % Done:

100%

Category:core
Target version:1.9.1 RC2
ruby -v:

Description

Following test failed.. (http://ruby.peppercode.com/log/ruby-1.9.1/last.txt )

test_should_propagate_signaled(TestBeginEndBlock) [/usr/local/src/ruby-1.9.1-rc1/test/ruby/test_beginendblock.rb:96]

It seems that a ruby loop doesn't get interrupted by 'Ctrl-C' on OpenSolaris.

Associated revisions

Revision 21275
Added by mame (Yusuke Endoh) over 3 years ago

* process.c: use sigaction instead of sigset. [ruby-core:21021]

History

Updated by yugui (Yuki Sonoda) over 3 years ago

  • Target version changed from 1.9.1 Release Candidate to 1.9.1 RC2

Updated by mame (Yusuke Endoh) over 3 years ago

Hi,

> Following test failed.. (http://ruby.peppercode.com/log/ruby-1.9.1/last.txt )
>
> test_should_propagate_signaled(TestBeginEndBlock) [/usr/local/src/ruby-1.9.1-rc1/test/ruby/test_beginendblock.rb:96]
>
> It seems that a ruby loop doesn't get interrupted by 'Ctrl-C' on OpenSolaris.


I think the following patch will fix this issue.  Could you try it?

Index: process.c
===================================================================
--- process.c	(revision 21266)
+++ process.c	(working copy)
@@ -2736,12 +2736,8 @@
 }


-#if defined(sun)
-#define signal(a,b) sigset(a,b)
-#else
-# if defined(POSIX_SIGNAL)
-#  define signal(a,b) posix_signal(a,b)
-# endif
+#if defined(POSIX_SIGNAL)
+# define signal(a,b) posix_signal(a,b)
 #endif

 void

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

Updated by daesan (Dae San Hwang) over 3 years ago

Hi Yusuke,

Your patch indeed solves the problem.

It fixed two other process related test failures as well. Thanks a lot!

daesan


> I think the following patch will fix this issue.  Could you try it?

> Index: process.c
> ===================================================================
> --- process.c	(revision 21266)
> +++ process.c	(working copy)
> @@ -2736,12 +2736,8 @@
>  }


> -#if defined(sun)
> -#define signal(a,b) sigset(a,b)
> -#else
> -# if defined(POSIX_SIGNAL)
> -#  define signal(a,b) posix_signal(a,b)
> -# endif
> +#if defined(POSIX_SIGNAL)
> +# define signal(a,b) posix_signal(a,b)
>  #endif

>  void

Updated by mame (Yusuke Endoh) over 3 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100
Applied in changeset r21275.

Updated by daesan (Dae San Hwang) over 3 years ago

Hi Yusuke,

Can you apply this patch to 1.9.1 branch as well? Thanks!

daesan

Updated by shyouhei (Shyouhei Urabe) over 3 years ago

  • Assignee set to yugui (Yuki Sonoda)

Also available in: Atom PDF