[#27380] [Bug #2553] Fix pthreads slowness by eliminating unnecessary sigprocmask calls — Dan Peterson <redmine@...>

Bug #2553: Fix pthreads slowness by eliminating unnecessary sigprocmask calls

21 messages 2010/01/03

[#27437] [Feature #2561] 1.8.7 Patch reduces time cost of Rational operations by 50%. — Kurt Stephens <redmine@...>

Feature #2561: 1.8.7 Patch reduces time cost of Rational operations by 50%.

9 messages 2010/01/06

[#27447] [Bug #2564] [patch] re-initialize timer_thread_{lock,cond} after fork — Aliaksey Kandratsenka <redmine@...>

Bug #2564: [patch] re-initialize timer_thread_{lock,cond} after fork

18 messages 2010/01/06

[#27545] [Feature #2594] 1.8.7 Patch: Reduce time spent in gc.c is_pointer_to_heap(). — Kurt Stephens <redmine@...>

Feature #2594: 1.8.7 Patch: Reduce time spent in gc.c is_pointer_to_heap().

8 messages 2010/01/11

[#27635] [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <redmine@...>

Bug #2619: Proposed method: Process.fork_supported?

45 messages 2010/01/20
[#27643] [Feature #2619] Proposed method: Process.fork_supported? — Luis Lavena <redmine@...> 2010/01/21

Issue #2619 has been updated by Luis Lavena.

[#27678] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27684] Re: [Feature #2619] Proposed method: Process.fork_supported? — Charles Oliver Nutter <headius@...> 2010/01/22

On Thu, Jan 21, 2010 at 11:27 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#27708] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27646] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <redmine@ruby-lang.org>:

[#27652] Re: [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <hongli@...99.net> 2010/01/21

On 1/21/10 5:20 AM, Tanaka Akira wrote:

[#27653] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <hongli@plan99.net>:

[#27662] Re: [Bug #2619] Proposed method: Process.fork_supported? — Vladimir Sizikov <vsizikov@...> 2010/01/21

On Thu, Jan 21, 2010 at 10:53 AM, Tanaka Akira <akr@fsij.org> wrote:

[#27698] [Bug #2629] ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time — Hongli Lai <redmine@...>

Bug #2629: ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time

8 messages 2010/01/22

[#27722] [Feature #2635] Unbundle rdoc — Yui NARUSE <redmine@...>

Feature #2635: Unbundle rdoc

14 messages 2010/01/23

[#27757] [Bug #2638] ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located. — Joel Soete <redmine@...>

Bug #2638: ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located.

10 messages 2010/01/24

[#27778] [Bug #2641] Seg fault running miniruby during ruby build on Haiku — Alexander von Gluck <redmine@...>

Bug #2641: Seg fault running miniruby during ruby build on Haiku

10 messages 2010/01/25

[#27791] [Bug #2644] memory over-allocation with regexp — Greg Hazel <redmine@...>

Bug #2644: memory over-allocation with regexp

12 messages 2010/01/25

[#27794] [Bug #2647] Lack of testing for String#split — Hugh Sasse <redmine@...>

Bug #2647: Lack of testing for String#split

14 messages 2010/01/25

[#27912] [Bug #2669] mkmf find_executable doesn't find .bat files — Roger Pack <redmine@...>

Bug #2669: mkmf find_executable doesn't find .bat files

11 messages 2010/01/27

[#27930] [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — Yusuke ENDOH <mame@...>

Hi jeg2, or anyone who knows the implementation of FasterCSV,

15 messages 2010/01/28
[#27931] Re: [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — James Edward Gray II <james@...> 2010/01/28

On Jan 28, 2010, at 10:51 AM, Yusuke ENDOH wrote:

[ruby-core:27420] closing of the stderr pipe not detected - issue in 1.9.1?

From: Robert Klemme <shortcutter@...>
Date: 2010-01-05 12:28:41 UTC
List: ruby-core #27420
Hi,

in trying to come up with a test script for
http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-talk/354265?354184-354451
I noticed a strange effect: the closing of stderr in the child process
is not detected by the parent.  A demo run of the attached scripts
looks like this:

robert@fussel:~$ test_scripts/clnt.rb 10
2010-01-05 12:34:16 +0100 read "1\n"
From server: started
2010-01-05 12:34:17 +0100 read "1\n"
2010-01-05 12:34:18 +0100 read "1\n"
2010-01-05 12:34:19 +0100 read "1\n"
2010-01-05 12:34:20 +0100 read "1\n"
2010-01-05 12:34:21 +0100 read "0\n"
2010-01-05 12:34:22 +0100 read "0\n"
2010-01-05 12:34:23 +0100 read "1\n"
2010-01-05 12:34:24 +0100 read "1\n"
2010-01-05 12:34:25 +0100 read "2\n"
From server: 2010-01-05 12:34:26 +0100      read "Received 0 five
seconds ago.\n"
From server: finished writing
From server: stderr.closed? true
From server: finishing
From server: 2010-01-05 12:34:27 +0100      read "Received 0 five
seconds ago.\n"
^Ctest_scripts/clnt.rb:26:in `each': Interrupt
	from test_scripts/clnt.rb:26:in `block in <main>'
	from /usr/local/lib/ruby19/1.9.1/open3.rb:76:in `popen3'
	from test_scripts/clnt.rb:14:in `<main>'

robert@fussel:~$

You can only stop it by interrupting the process.  IMHO the output
should look like this one where the child indicates termination with a
special message (you will notice message "finished reading" which is
not present in the output above):

robert@fussel:~$ test_scripts/clnt.rb 10 x
2010-01-05 12:34:40 +0100 read "1\n"
From server: started
2010-01-05 12:34:41 +0100 read "2\n"
2010-01-05 12:34:42 +0100 read "2\n"
2010-01-05 12:34:43 +0100 read "1\n"
2010-01-05 12:34:44 +0100 read "0\n"
2010-01-05 12:34:45 +0100 read "2\n"
2010-01-05 12:34:46 +0100 read "2\n"
2010-01-05 12:34:47 +0100 read "1\n"
2010-01-05 12:34:48 +0100 read "1\n"
From server: 2010-01-05 12:34:49 +0100      read "Received 0 five
seconds ago.\n"
2010-01-05 12:34:49 +0100 read "0\n"
2010-01-05 12:34:50 +0100 read "Finish\n"
finished reading
From server: finished writing
From server: stderr.closed? true
From server: finishing
finished notifying
From server: 2010-01-05 12:34:54 +0100      read "Received 0 five
seconds ago.\n"
From server: finished
robert@fussel:~$

Is there something I am missing or is this an issue with handling of
stderr?  It seems that this is _not_ related to handling of pipes in
general or in Open3 since simple.rb clearly demonstrates that closing
stderr is detected by the parent process, which you can see from the
timestamps:

robert@fussel:~$ test_scripts/simple.rb
2010-01-05 13:24:58 +0100: stderr "about to close stderr\n"
2010-01-05 13:24:58 +0100: stderr closed
2010-01-05 13:24:58 +0100: stdout "stderr closed\n"
2010-01-05 13:25:03 +0100: stdout "exiting\n"
2010-01-05 13:25:03 +0100: -------------------
2010-01-05 13:25:03 +0100: stderr "about to close stderr\n"
2010-01-05 13:25:03 +0100: stdout "stderr closed\n"
2010-01-05 13:25:08 +0100: stderr closed
2010-01-05 13:25:08 +0100: stdout "exiting\n"
robert@fussel:~$

With the ruby child process closing of stderr is only detected when
the process exits.

robert@fussel:~$ ruby19 --version
ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]

The same happens with p376 under cygwin 1.7.

Kind regards

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Attachments (1)

test_scripts.tgz (1.64 KB, Archive)

In This Thread

Prev Next