Forum: Ruby-core [ruby-trunk - Bug #7134][Open] Signal handling bug in Mac OS X

Posted by auastro (Andy Kitchen) (Guest)
on 2012-10-10 10:37
(Received via mailing list)
Issue #7134 has been reported by auastro (Andy Kitchen).

----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134

Author: auastro (Andy Kitchen)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 1.9.3
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by gustavoanatoly (Gustavo Anatoly Fernandes Velasque (Guest)
on 2012-10-17 19:49
(Received via mailing list)
Issue #7134 has been updated by gustavoanatoly (Gustavo Anatoly 
Fernandes Velasquez Solis).


auastro (Andy Kitchen) wrote:
>   from hup.rb:6:in `puts'
>
> My ruby is compiled with clang:
>
> $ clang --version
> Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn)
> Target: x86_64-apple-darwin12.2.0
> Thread model: posix

Hi, Andy.

This error it happens when kill is called:

https://gist.github.com/3906937

Followed by:

https://gist.github.com/3906907

But I trying to understand the bug causes.






----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-30977

Author: auastro (Andy Kitchen)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 1.9.3
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by gustavoanatoly (Gustavo Anatoly Fernandes Velasque (Guest)
on 2012-10-26 16:21
(Received via mailing list)
Issue #7134 has been updated by gustavoanatoly (Gustavo Anatoly 
Fernandes Velasquez Solis).


Hi,

Could somenone please, explain if is possible use recursive lock 
(PTHREAD_MUTEX_RECURSIVE) attributes in pthread.h, to fix this bug?


----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-31611

Author: auastro (Andy Kitchen)
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 1.9.3
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by mame (Yusuke Endoh) (Guest)
on 2012-11-05 14:32
(Received via mailing list)
Issue #7134 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to kosaki (Motohiro KOSAKI)

Kosaki-san, do you know anything about this?

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-32417

Author: auastro (Andy Kitchen)
Status: Assigned
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category:
Target version: 1.9.3
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by Gustavo Anatoly (Guest)
on 2012-11-05 15:29
(Received via mailing list)
Hi, Yusuke.

I was studying this bug and I did a little bit changes to test

git://gist.github.com/4017432.git

because self lock is not allowed on ruby, please correct me if I wrong.

Thanks.


2012/11/5 mame (Yusuke Endoh) <mame@tsg.ne.jp>
Posted by Gustavo Anatoly (Guest)
on 2012-11-05 17:07
(Received via mailing list)
Sorry, I sent wrong gist link link: https://gist.github.com/4017432


2012/11/5 Gustavo Anatoly <gustavoanatoly@gmail.com>
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-11-05 18:19
(Received via mailing list)
Issue #7134 has been updated by kosaki (Motohiro KOSAKI).

Assignee changed from kosaki (Motohiro KOSAKI) to nobu (Nobuyoshi 
Nakada)
Target version changed from 1.9.3 to next minor

Hi,

We are sorry, recursive lock is clearly unacceptable because recursive 
lock was not designed for trap handler. It lead to memory corruption.
When this issue was occur, C stack trace is below.

4   ruby--                          0x0000000100260061 rb_mutex_lock + 
1217 (thread_pthread.c:197)
5   ruby--                          0x00000001002605c8 
rb_mutex_synchronize + 24 (thread.c:4286)
6   ruby--                          0x000000010015e4f0 io_binwrite + 512 
(io.c:1163)
7   ruby--                          0x000000010016156b io_write + 955 
(io.c:1261)
8   ruby--                          0x0000000100254947 vm_call0_body + 
743 (vm_eval.c:110)
9   ruby--                          0x000000010024a6c8 rb_funcall + 536 
(vm_eval.c:49)
10  ruby--                          0x0000000100160eff rb_io_puts + 159 
(io.c:6717)
11  ruby--                          0x0000000100254947 vm_call0_body + 
743 (vm_eval.c:110)
12  ruby--                          0x0000000100249f20 rb_funcall2 + 256 
(vm_eval.c:750)
13  ruby--                          0x0000000100256c55 vm_call_cfunc + 
421 (vm_insnhelper.c:1442)
14  ruby--                          0x000000010025668f vm_call_method + 
287 (vm_insnhelper.c:1689)
15  ruby--                          0x0000000100242f8c vm_exec_core + 
10060 (insns.def:968)
16  ruby--                          0x000000010024f024 vm_exec + 100 
(vm.c:1159)
17  ruby--                          0x000000010024e781 vm_invoke_proc + 
161 (vm.c:680)
18  ruby--                          0x000000010024e6d0 rb_vm_invoke_proc 
+ 32 (vm.c:696)
19  ruby--                          0x0000000100145695 proc_call + 117 
(proc.c:567)
20  ruby--                          0x0000000100254947 vm_call0_body + 
743 (vm_eval.c:110)
21  ruby--                          0x0000000100249f20 rb_funcall2 + 256 
(vm_eval.c:750)
22  ruby--                          0x000000010024d486 rb_eval_cmd + 262 
(vm_eval.c:1379)
23  ruby--                          0x000000010025c35a 
rb_threadptr_execute_interrupts_common + 330 (thread.c:1716)
24  ruby--                          0x000000010025cd44 
rb_thread_io_blocking_region + 164 (thread_pthread.c:196)
25  ruby--                          0x000000010016fa3c 
io_binwrite_string + 60 (io.c:1116)
26  ruby--                          0x000000010013fd0d rb_ensure + 109 
(eval.c:802)
27  ruby--                          0x000000010015e4f0 io_binwrite + 512 
(io.c:1163)
28  ruby--                          0x000000010016156b io_write + 955 
(io.c:1261)
29  ruby--                          0x0000000100254947 vm_call0_body + 
743 (vm_eval.c:110)
30  ruby--                          0x000000010024a6c8 rb_funcall + 536 
(vm_eval.c:49)
31  ruby--                          0x0000000100160eff rb_io_puts + 159 
(io.c:6717)
32  ruby--                          0x0000000100254947 vm_call0_body + 
743 (vm_eval.c:110)
33  ruby--                          0x0000000100249f20 rb_funcall2 + 256 
(vm_eval.c:750)
34  ruby--                          0x0000000100256c55 vm_call_cfunc + 
421 (vm_insnhelper.c:1442)
35  ruby--                          0x000000010025668f vm_call_method + 
287 (vm_insnhelper.c:1689)
36  ruby--                          0x0000000100242f8c vm_exec_core + 
10060 (insns.def:968)
37  ruby--                          0x000000010024f024 vm_exec + 100 
(vm.c:1159)
38  ruby--                          0x000000010024f965 rb_iseq_eval_main 
+ 405 (vm.c:1402)
39  ruby--                          0x000000010013efdf 
ruby_exec_internal + 111 (eval.c:251)
40  ruby--                          0x000000010013ef27 ruby_run_node + 
71 (eval.c:303)
41  ruby--                          0x000000010010b17f main + 79 
(main.c:36)
42  libdyld.dylib                   0x00007fff8997e7e1 start + 1

Now, almost all IO hold a mutex durling io for serialization since 
r20144 (aka 1.9.2p0). Then, you can't
use any IOs in trap handler.

Ho hum. I think this spec is too user unfriendly and NEWS-1.9.2 seems 
not explain this incompatibility.
Nobu, Can you please explain current spec, your intention and your 
recommended trap handler writing style.


----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-32450

Author: auastro (Andy Kitchen)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category:
Target version: next minor
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-11-05 18:31
(Received via mailing list)
Issue #7134 has been updated by kosaki (Motohiro KOSAKI).


Note: current documentation of Process.kill() uses puts() in trap 
handler. So, I personally don't think
that IO in trap handler is invalid code.


/*
 *  call-seq:
 *     Process.kill(signal, pid, ...)    -> fixnum
 *
 *  Sends the given signal to the specified process id(s) if _pid_ is 
positive.
 *  If _pid_ is zero _signal_ is sent to all processes whose group ID is 
equal
 *  to the group ID of the process. _signal_ may be an integer signal 
number or
 *  a POSIX signal name (either with or without a +SIG+ prefix). If 
_signal_ is
 *  negative (or starts with a minus sign), kills process groups instead 
of
 *  processes. Not all signals are available on all platforms.
 *
 *     pid = fork do
 *        Signal.trap("HUP") { puts "Ouch!"; exit }
 *        # ... do some work ...
 *     end
 *     # ...
 *     Process.kill("HUP", pid)
 *     Process.wait
----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-32451

Author: auastro (Andy Kitchen)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category:
Target version: next minor
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-11-05 18:53
(Received via mailing list)
Issue #7134 has been updated by kosaki (Motohiro KOSAKI).

Target version changed from next minor to 2.0.0

sorry, fixed unintentional target version change.


----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-32453

Author: auastro (Andy Kitchen)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category:
Target version: 2.0.0
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by Gustavo Anatoly (Guest)
on 2012-11-05 19:10
(Received via mailing list)
Hi, Kosaki.

Firstly, thanks for explain the reasons, and really that memory error 
was
happening in my tests. I'm interested to understand how to will fix it 
by
the team, I want learn a little bit more.

Thanks.


2012/11/5 kosaki (Motohiro KOSAKI) <kosaki.motohiro@gmail.com>
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-11-05 20:40
(Received via mailing list)
Issue #7134 has been updated by kosaki (Motohiro KOSAKI).

File mutex_notrap.patch added

Attached my fixing proposal. This patch masks trap handler invocation 
during IO lock held.
But, I guess ko1 might dislike this approach because it slow down 
CHECK_INTS performance....

----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-32455

Author: auastro (Andy Kitchen)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category:
Target version: 2.0.0
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-11-27 18:32
(Received via mailing list)
Issue #7134 has been updated by kosaki (Motohiro KOSAKI).

Assignee changed from nobu (Nobuyoshi Nakada) to ko1 (Koichi Sasada)

ko1 suggested to use rb_thread_call_without_gvl2(). but it doesn't have 
a way to avoid CHECK_INTS completely.
I'm waiting ko1's rb_thread_call_without_gvl2 fix.

----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-34053

Author: auastro (Andy Kitchen)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category:
Target version: 2.0.0
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by ko1 (Koichi Sasada) (Guest)
on 2012-11-28 14:31
(Received via mailing list)
Issue #7134 has been updated by ko1 (Koichi Sasada).

Assignee changed from ko1 (Koichi Sasada) to kosaki (Motohiro KOSAKI)

I fix gvl2!

----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-34082

Author: auastro (Andy Kitchen)
Status: Assigned
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category:
Target version: 2.0.0
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-12-15 06:43
(Received via mailing list)
Issue #7134 has been updated by kosaki (Motohiro KOSAKI).


Fixed this by r38395 - r38401 series patches.

----------------------------------------
Bug #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-34760

Author: auastro (Andy Kitchen)
Status: Closed
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category:
Target version: 2.0.0
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12]


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by usa (Usaku NAKAMURA) (Guest)
on 2012-12-19 13:09
(Received via mailing list)
Issue #7134 has been updated by usa (Usaku NAKAMURA).


Is this list right?
  r38395, r38396, r38397, r38398, r38399, r38400, r38401, r38402, 
r38422, r38447, r38448 and r38449
Are the fixes really completed?

And another problem.
I've not backported rb_thread_call_without_gvl2() from trunk yet.
I doubt the API is not stable.
Kosaki-san, do you think the orignal problem is very serious and 
necessary to backport many many changes from trunk?
----------------------------------------
Backport #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-34853

Author: auastro (Andy Kitchen)
Status: Assigned
Priority: Normal
Assignee: usa (Usaku NAKAMURA)
Category:
Target version:


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by usa (Usaku NAKAMURA) (Guest)
on 2012-12-19 13:10
(Received via mailing list)
Issue #7134 has been updated by usa (Usaku NAKAMURA).

Status changed from Assigned to Feedback
Assignee changed from usa (Usaku NAKAMURA) to kosaki (Motohiro KOSAKI)


----------------------------------------
Backport #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-34854

Author: auastro (Andy Kitchen)
Status: Feedback
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category:
Target version:


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-12-26 04:16
(Received via mailing list)
Issue #7134 has been updated by kosaki (Motohiro KOSAKI).

Status changed from Feedback to Closed

Hmmm...
Ok, ok. I give up this claim. I hope nobody uses trap.
----------------------------------------
Backport #7134: Signal handling bug in Mac OS X
https://bugs.ruby-lang.org/issues/7134#change-35083

Author: auastro (Andy Kitchen)
Status: Closed
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category:
Target version:


On Mac OS X, running the attached program causes the exception below 
about 1/10 times it is run.

$ ruby hup.rb
hup.rb:2:in `write': deadlock; recursive locking (ThreadError)
  from hup.rb:2:in `puts'
  from hup.rb:2:in `puts'
  from hup.rb:2:in `block in <main>'
  from hup.rb:6:in `call'
  from hup.rb:6:in `write'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `puts'
  from hup.rb:6:in `<main>'

The expected output is:
> In Hup Handler
>Finished...

or

> Finished...
> In Hup Handler

My ruby is compiled with clang:

$ clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 
3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
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.