libuv/test
Imran Iqbal d41749d546 test: fix race condition in pipe-close-stdout
If the child process reaches uv_run before the parent has closed the
write end of the pipe the test fails with the following output:

Assertion failed in test/test-pipe-close-stdout-read-stdin.c
on line 86: uv_run(uv_default_loop(), UV_RUN_NOWAIT) == 0
Assertion failed in test/test-pipe-close-stdout-read-stdin.c
on line 97: WIFEXITED(status) && WEXITSTATUS(status) == 0

This is mainly seen on AIX, but does not mean that it can not occur on
linux. This change causes the child process to be blocked until the
write end of the pipe is properly closed. See 'man 7 pipe'[0] for
more detail.

[0]http://linux.die.net/man/7/pipe

PR-URL: https://github.com/libuv/libuv/pull/688
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-01-21 09:08:41 +01:00
..
fixtures win, unix: add uv_dlerror() and uv_dlerror_free() 2012-03-02 16:39:21 +01:00
benchmark-async-pummel.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-fs-stat.c unix,windows: allow NULL loop for sync fs requests 2015-08-18 15:39:21 +02:00
benchmark-getaddrinfo.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-list.h bench: add 'million async handles' benchmark 2012-12-24 12:19:10 +01:00
benchmark-loop-count.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-million-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-million-timers.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-multi-accept.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-ping-pongs.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-pound.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-pump.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-sizes.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-spawn.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-tcp-write-batch.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
benchmark-thread.c Make the thread_create benchmark not time out 2012-03-09 17:53:48 +01:00
benchmark-udp-pummel.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
blackhole-server.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
dns-server.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
echo-server.c unix,windows: allow NULL loop for sync fs requests 2015-08-18 15:39:21 +02:00
run-benchmarks.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
run-tests.c win: remove UV_HANDLE_CONNECTED 2015-07-07 09:45:48 +02:00
runner-unix.c test,unix: fix logic error in test runner 2016-01-04 12:20:27 +01:00
runner-unix.h Add copyright headers, license file. 2011-04-18 11:11:30 -07:00
runner-win.c test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
runner-win.h win: use the MSVC provided snprintf where possible 2015-09-29 09:01:33 +02:00
runner.c win: do not read more from stream than available 2015-12-08 09:28:15 +01:00
runner.h test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
task.h win: do not read more from stream than available 2015-12-08 09:28:15 +01:00
test-active.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-async-null-cb.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-barrier.c Revert "test: make barrier test more rigorous" 2014-07-02 00:16:50 +02:00
test-callback-order.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-callback-stack.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-close-fd.c unix: set non-block mode in uv_{pipe,tcp,udp}_open 2015-01-14 19:46:54 +01:00
test-close-order.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-condvar.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-connection-fail.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-cwd-and-chdir.c test: fix cwd_and_chdir test on Unix 2014-12-16 08:12:46 +01:00
test-default-loop-close.c test: add test for closing and recreating default loop 2014-09-15 21:34:09 +02:00
test-delayed-accept.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-dlerror.c test: check dlerror is "no error" in no error case 2014-12-14 20:33:43 +01:00
test-eintr-handling.c test: fixup eintr_handling 2016-01-06 08:30:49 +01:00
test-embed.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-emfile.c test: don't abort on setrlimit() failure 2015-10-08 21:47:48 +02:00
test-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-fail-always.c Benchmark runner 2011-04-19 04:47:21 +02:00
test-fs-event.c win: fix path for removed and renamed fs events 2015-12-07 16:16:46 +01:00
test-fs-poll.c fs, pipe: no trailing terminator in exact sized buffers 2015-01-27 11:31:16 +01:00
test-fs.c fs: add uv_fs_realpath() 2015-12-05 11:32:58 +01:00
test-get-currentexe.c linux: fix uv_exepath(size=1) UV_EINVAL error 2015-01-03 23:40:31 +01:00
test-get-loadavg.c test: fix -Wtautological-pointer-compare warnings 2015-11-18 22:37:16 +01:00
test-get-memory.c Tests: don't use %zu placeholder in printf statements 2012-04-11 22:54:02 +02:00
test-getaddrinfo.c test: use FQDN in getaddrinfo_fail test 2015-10-23 18:28:51 +02:00
test-getnameinfo.c test: fix -Wtautological-pointer-compare warnings 2015-11-18 22:37:16 +01:00
test-getsockname.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-handle-fileno.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-homedir.c unix,win: add uv_os_homedir() 2015-05-21 17:31:35 +02:00
test-hrtime.c test: allow 80 ms intervals in hrtime test 2012-07-03 22:33:10 +02:00
test-idle.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-ip4-addr.c test: remove C++ style comment 2013-12-13 22:37:14 +04:00
test-ip6-addr.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-ipc-send-recv.c win: do not read more from stream than available 2015-12-08 09:28:15 +01:00
test-ipc.c test,freebsd: fix ipc_listen_xx_write tests 2015-09-08 10:45:10 +02:00
test-list.h osx: set the default thread stack size to RLIMIT_STACK 2016-01-05 09:06:15 +01:00
test-loop-alive.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-close.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-configure.c linux: fix epoll_pwait() sigmask size calculation 2014-12-25 14:37:02 +01:00
test-loop-handles.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-loop-stop.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-time.c windows: add uv_backend_timeout 2014-08-04 23:18:38 +02:00
test-multiple-listen.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-mutexes.c test: fix self-deadlocks in thread_rwlock_trylock 2015-12-11 23:12:53 +01:00
test-osx-select.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-pass-always.c Benchmark runner 2011-04-19 04:47:21 +02:00
test-ping-pong.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-pipe-bind-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-pipe-close-stdout-read-stdin.c test: fix race condition in pipe-close-stdout 2016-01-21 09:08:41 +01:00
test-pipe-connect-error.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-pipe-connect-multiple.c win: fix replacing pipe handle for pipe servers 2015-08-24 23:20:35 +02:00
test-pipe-connect-prepare.c unix: don't block for io if any io handle is primed 2015-05-12 07:37:26 +02:00
test-pipe-getsockname.c win, unix: add pipe_peername implementation 2015-01-28 21:40:32 +01:00
test-pipe-pending-instances.c win: fix setting pipe pending instances after bind 2015-08-24 23:20:35 +02:00
test-pipe-sendmsg.c pipe: allow queueing pending handles 2014-03-04 00:34:29 +04:00
test-pipe-server-close.c test: make test-pipe-server-close pass on linux 2013-12-21 02:34:44 -08:00
test-pipe-set-non-blocking.c test: fix race condition in multithreaded test 2015-03-11 15:42:34 +01:00
test-platform-output.c test: fix platform_output netmask printing. 2015-05-28 11:09:25 +02:00
test-poll-close-doesnt-corrupt-stack.c win: fix compilation of tests 2014-12-10 16:44:27 +01:00
test-poll-close.c code style: strip trailing whitespace 2013-12-20 19:38:37 -08:00
test-poll-closesocket.c windows: fix compilation of tests 2014-11-26 08:32:59 +01:00
test-poll.c Revert "stream: squelch ECONNRESET error if already closed" 2015-08-07 14:19:08 +02:00
test-process-title.c test: skip process_title for AIX 2015-11-11 22:37:33 +01:00
test-queue-foreach-delete.c unix: fix uv_fs_event_stop() from fs_event_cb 2015-12-08 10:03:01 +01:00
test-ref.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-run-nowait.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-run-once.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-semaphore.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-shutdown-close.c unix, windows: make uv_is_*() always return 0 or 1 2013-09-12 13:30:06 +02:00
test-shutdown-eof.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-shutdown-twice.c unix: correct error when calling uv_shutdown twice 2014-02-15 16:55:06 +01:00
test-signal-multiple-loops.c test: Fix two memory leaks 2015-08-11 13:35:34 +02:00
test-signal.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-socket-buffer-size.c unix, windows: add uv_recv_buffer_size and uv_send_buffer_size 2014-08-09 11:36:35 +02:00
test-spawn.c win: use the MSVC provided snprintf where possible 2015-09-29 09:01:33 +02:00
test-stdio-over-pipes.c unix: sanity-check fds before closing 2013-10-01 03:55:54 +02:00
test-tcp-bind6-error.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-tcp-bind-error.c unix, windows: validate flags on uv_udp|tcp_bind 2014-04-22 22:57:01 +02:00
test-tcp-close-accept.c test: disable tcp_close_accept on Windows 2014-08-05 00:14:26 +02:00
test-tcp-close-while-connecting.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-tcp-close.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-tcp-connect6-error.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-error-after-write.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-error.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-timeout.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-tcp-create-socket-early.c unix, win: add ability to create tcp/udp sockets early 2015-06-19 09:37:19 +02:00
test-tcp-flags.c unix, windows: rename uv_run2 to uv_run 2013-01-16 23:35:29 +01:00
test-tcp-oob.c Revert "test: fix tcp_oob occassionally timing out" 2015-04-07 11:15:49 +02:00
test-tcp-open.c Revert "stream: squelch ECONNRESET error if already closed" 2015-08-07 14:19:08 +02:00
test-tcp-read-stop.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-shutdown-after-write.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-try-write.c stream: support empty uv_try_write on unix 2015-10-04 18:06:08 -04:00
test-tcp-unexpected-read.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-write-after-connect.c unix: fix tcp write after bad connect freezing 2014-08-21 16:23:43 +02:00
test-tcp-write-fail.c win, test: fix compilation warning 2015-09-29 09:57:27 +02:00
test-tcp-write-queue-order.c test: use less requests on tcp-write-queue-order 2014-09-04 18:45:39 +02:00
test-tcp-write-to-half-open-connection.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-tcp-writealot.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-thread-equal.c unix, windows: add uv_thread_equal 2014-10-20 09:51:49 +02:00
test-thread.c osx: set the default thread stack size to RLIMIT_STACK 2016-01-05 09:06:15 +01:00
test-threadpool-cancel.c fs: add uv_fs_realpath() 2015-12-05 11:32:58 +01:00
test-threadpool.c unix, windows: return error codes directly 2013-07-07 09:51:00 +02:00
test-timer-again.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-timer-from-check.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-timer.c win: wait for full timeout duration 2015-12-16 12:08:46 +01:00
test-tty.c test: fix test/test-tty.c for AIX 2015-11-24 21:54:48 +01:00
test-udp-bind.c unix, windows: do not set SO_REUSEADDR by default on udp 2014-04-02 01:21:35 +02:00
test-udp-create-socket-early.c unix, win: add ability to create tcp/udp sockets early 2015-06-19 09:37:19 +02:00
test-udp-dgram-too-big.c include: merge uv_udp_send and uv_udp_send6 2013-09-04 03:17:29 +02:00
test-udp-ipv6.c test,freebsd: skip udp_dual_stack if not supported 2015-11-17 09:31:26 +01:00
test-udp-multicast-interface6.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-udp-multicast-interface.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-multicast-join6.c test: fix test udp_multicast_join6 for AIX 2015-12-13 11:54:38 +01:00
test-udp-multicast-join.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-multicast-ttl.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-open.c unix, win: prevent replacing fd in uv_{udp,tcp,pipe}_t 2015-06-19 09:36:41 +02:00
test-udp-options.c test: skip udp_options6 if there no IPv6 support 2015-01-05 12:32:57 +01:00
test-udp-send-and-recv.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-udp-send-immediate.c unix: remove incorrect assert 2014-07-11 22:53:59 +02:00
test-udp-send-unreachable.c windows: fix buffer leak after failed udp send 2014-08-28 08:41:43 +02:00
test-udp-try-send.c unix, win: add uv_udp_try_send 2014-07-04 18:30:33 +02:00
test-walk-handles.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-watcher-cross-stop.c test: fix watcher_cross_stop on Windows 2014-08-21 23:34:51 +02:00