This repository has been archived by the owner on Apr 22, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7.3k
test net: test error codes related to pipes #2001
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This tests passes on node v0.4, but fails on node v0.5. v0.5 seems to generally lack error codes for various error events related to UNIX pipes.
Thanks. Merging. We'll fix up these errors today. |
ry
added a commit
that referenced
this pull request
Nov 3, 2011
Fixes test-net-pipe-connect-errors.js on UNIX. See #2001.
jcheng5
referenced
this pull request
in rstudio/httpuv
Jul 24, 2014
Squashed commit of the following: commit 27bce72beb75e7ef3d2910c7e3a339e5a3299a43 Merge: d84acc6 6e24ce2 Author: Joe Cheng <[email protected]> Date: Thu Jul 24 09:50:12 2014 -0700 Merge tag 'v0.10.27' 2014.05.02, Version 0.10.27 (Stable) Changes since version 0.10.26: * windows: fix console signal handler refcount (Saúl Ibarra Corretgé) * win: always leave crit section in get_proc_title (Fedor Indutny) commit 6e24ce23b1e7576059f85a608eca13b766458a01 Author: Timothy J Fontaine <[email protected]> Date: Thu May 1 09:23:46 2014 -0700 2014.05.02, Version 0.10.27 (Stable) Changes since version 0.10.26: * windows: fix console signal handler refcount (Saúl Ibarra Corretgé) * win: always leave crit section in get_proc_title (Fedor Indutny) commit 4a67d8cc0e00d0c7341ae62c2f73d59811c82c85 Author: Timothy J Fontaine <[email protected]> Date: Mon Apr 14 10:07:33 2014 -0700 build: add vc-set-2012 label commit ffb49220cf83d251fb7681a28992dc29fdadc9c7 Author: Fedor Indutny <[email protected]> Date: Mon Apr 14 13:42:14 2014 +0400 win: always leave crit section in get_proc_title fix #1235 commit 23d130b2095f0e430683f2db40bf7f16ee8744cd Author: Fedor Indutny <[email protected]> Date: Mon Apr 14 15:13:20 2014 +0400 Revert "inet: allow scope in `uv_inet_pton` ip6 check" This reverts commit d30e3ab65acf7b77945658d3e6127ca6af6eec6, because it is a new feature! commit d30e3ab65acf7b77945658d3e6127ca6af6eec6d Author: Fedor Indutny <[email protected]> Date: Sun Apr 13 15:53:11 2014 +0400 inet: allow scope in `uv_inet_pton` ip6 check Note that isn't actually parsing it, since the output value is a `struct in6_addr`. see https://github.com/joyent/node/issues/7395 commit b9d5396a4082b101051ece4f6e3c15a4d5bd7a98 Author: Saúl Ibarra Corretgé <[email protected]> Date: Sat Apr 12 10:09:40 2014 +0200 windows: fix console signal handler refcount Backport of 0c726e7 from master commit 6855205ba5c46023cdc2ea53c960bc903f9b0b7a Author: Fedor Indutny <[email protected]> Date: Mon Apr 7 15:28:59 2014 +0400 Now working on v0.10.27 Signed-off-by: Fedor Indutny <[email protected]> commit d864907611c25ec986c5e77d4d6d6dee88f26926 Author: Fedor Indutny <[email protected]> Date: Mon Apr 7 15:26:13 2014 +0400 2014.04.07, Version 0.10.26 (Stable) Changes since version 0.10.25: * process: don't close stdio fds during spawn (Tonis Tiigi) * build, windows: do not fail on Windows SDK Prompt (Marc Schlaich) * build, windows: fix x64 configuration issue (Marc Schlaich) * win: fix buffer leak on error in pipe.c (Fedor Indutny) * kqueue: invalidate fd in uv_fs_event_t (Fedor Indutny) * linux: always deregister closing fds from epoll (Geoffry Song) * error: add ENXIO for O_NONBLOCK FIFO open() (Fedor Indutny) Signed-off-by: Fedor Indutny <[email protected]> commit 295882ed3238d6bfda61f5a91e1b43eb210fc485 Author: Fedor Indutny <[email protected]> Date: Tue Mar 18 14:32:14 2014 +0400 error: add EMLINK mapping fix joyent/node#7307 commit fd77a5d6c6466f8c9d7ea6221b946599320702bb Author: Tonis Tiigi <[email protected]> Date: Sun Mar 23 12:48:06 2014 +0200 process: don't close stdio fds during spawn This is needed when closed stdio fd is reused for uv_spawn pipe. Fixes #1211 commit cd6db8bbefb11a780977052f1a561920d6d60bbe Author: Marc Schlaich <[email protected]> Date: Tue Feb 11 13:57:01 2014 +0100 build, windows: do not fail on Windows SDK Prompt Backported from master 2f6d4b4 commit aa2fbb364a2fdd5c90cb9e4ca938787b249ae809 Author: Marc Schlaich <[email protected]> Date: Tue Feb 11 14:01:24 2014 +0100 build, windows: fixed x64 configuration issue Backported from master 8010bf9 commit 4ac8c424ea36b069c76e91fde3eb2f42e0e292f9 Author: Fedor Indutny <[email protected]> Date: Thu Mar 13 00:48:55 2014 +0400 win: fix buffer leak on error in pipe.c commit 9b38c01b540b60408f8eb1d9c288656405e25f7e Author: Fedor Indutny <[email protected]> Date: Tue Mar 11 01:44:44 2014 +0400 kqueue: invalidate fd in uv_fs_event_t Invalidate file descriptor when closing `uv_fs_event_t` handle. Note that `uv__io_stop` is just removing `fd` from `loop->watchers` and not actually invalidating all consequent events in a `kevent()` results. fix joyent/node#1101 commit 84f305915fd45c1e55d261db565b3ddfdbc9d4ce Author: Geoffry Song <[email protected]> Date: Wed Feb 5 18:36:24 2014 -0500 linux: always deregister closing fds from epoll If the same file description is open in two different processes, then closing the file descriptor is not sufficient to deregister it from the epoll instance (as described in epoll(7)), resulting in spurious events that cause the event loop to spin repeatedly. So always explicitly deregister it. Fixes #1099. Conflicts: test/test-spawn.c commit 4f72f2145b902fcfefee8fa90419c9bf28d74bc2 Author: Fedor Indutny <[email protected]> Date: Thu Mar 6 20:26:11 2014 +0400 error: add ENXIO for O_NONBLOCK FIFO open() When opening FIFO with `O_NONBLOCK` flag, `ENXIO` could be returned if the readable side hasn't yet opened this FIFO. commit c0c9480e02ec36e9b792a12e2f8a162f2bbcab68 Author: Fedor Indutny <[email protected]> Date: Wed Feb 26 14:08:19 2014 +0400 process: remove debug perror() prints fix #1128 commit 6f98f4efd112b21414ed92a048cda9f6f5978eb7 Author: Saúl Ibarra Corretgé <[email protected]> Date: Tue Feb 25 10:48:26 2014 +0100 unix, windows: map ERANGE errno This is a backport of 2f58bb6 from the master branch commit 10f9120d78fa6351367e52e7fd5f3e8527d54f73 Author: Saúl Ibarra Corretgé <[email protected]> Date: Mon Feb 24 12:57:28 2014 +0100 errno: map EFBIG, ENOPROTOOPT and ETXTBSY This is a backport of: https://github.com/joyent/libuv/commit/107be2bed38afa6279aa53b13b946eb60c204969 https://github.com/joyent/libuv/commit/4a023fc0786780d254e1e4a34a983c36f59d99bf https://github.com/joyent/libuv/commit/aaaefe32cadcfb26d07d625d17d7a2b8cafb4f2d commit 714bec14f601fdf0ff4394f7eeb596935f19ca2e Author: Timothy J Fontaine <[email protected]> Date: Tue Feb 18 13:01:54 2014 -0800 Now working on v0.10.26 commit d778dc588507588b12b9f9d2905078db542ed751 Author: Timothy J Fontaine <[email protected]> Date: Tue Feb 18 13:01:51 2014 -0800 2014.02.19, Version 0.10.25 (Stable) Changes since version 0.10.24: * stream: start thread after assignments (Oguz Bastemur) * unix: correct error when calling uv_shutdown twice (Saúl Ibarra Corretgé) * windows: freeze in uv_tcp_endgame (Alexis Campailla) * sunos: handle rearm errors (Fedor Indutny) commit 703a9e601e976b74ce459e4db9e23fca107d3f4b Author: Fedor Indutny <[email protected]> Date: Mon Jan 20 19:12:47 2014 +0400 sunos: handle rearm errors fix #1078 commit 4f913b669adc1765829ce57b8a022394e363a757 Author: Alexis Campailla <[email protected]> Date: Tue Feb 18 09:50:49 2014 -0800 windows: freeze in uv_tcp_endgame The event_handle field of unused accept requests was not being initialized properly. As a result, uv_tcp_endgame would try to close an invalid handle and this could lead to unexpected behavior. This fixes node.js test test-cluster-disconnect.js on Windows. commit 6e2021ca111a44449932792e0cb578e63705c2a2 Author: Saúl Ibarra Corretgé <[email protected]> Date: Sat Feb 15 16:49:01 2014 +0100 unix: correct error when calling uv_shutdown twice This is a backport of a284b90 for v0.10 branch commit a6ff04d2c48be408cdcd76e5d78f4dc0a8fb9312 Author: Oguz Bastemur <[email protected]> Date: Fri Jan 31 12:02:37 2014 +0100 stream: start thread after assignments Changed the order of the member assignments since the thread may start before the parameters are assigned. This especially happens when the osx scheduler is very busy. commit 79ffe2fb9537a8b9f1db7a2f27a7cd5c3bfb3707 Author: Timothy J Fontaine <[email protected]> Date: Wed Jan 29 09:41:41 2014 -0800 Now working on v0.10.25 commit aecd296b6bce9b40f06a61c5c94e43d45ac7308a Author: Timothy J Fontaine <[email protected]> Date: Wed Jan 29 09:41:36 2014 -0800 2014.01.30, Version 0.10.24 (Stable) Changes since version 0.10.23: * linux: move sscanf() out of the assert() (Trevor Norris) * linux: fix C99/C++ comment (Fedor Indutny) commit 3e2446d18db6ba2c16fa71530565a904aaca1fd2 Author: Fedor Indutny <[email protected]> Date: Wed Jan 29 17:01:35 2014 +0400 linux: fix C99/C++ comment commit 7c8ff3bc2578bbba09ef3f460b8d0f1c16bcd03e Author: Trevor Norris <[email protected]> Date: Wed Jan 22 12:16:06 2014 -0800 linux: move sscanf() out of the assert() If asserts are turned off then the sscanf() wouldn't have run, being placed directly in the assert() itself. commit b8b6588dbe800df727c5f17b762c9cfe5dcd86be Author: Bert Belder <[email protected]> Date: Wed Jan 22 20:30:26 2014 +0100 Now working on v0.10.24 commit dbd218e699fec8be311d85e4788be9e28ae884f8 Author: Bert Belder <[email protected]> Date: Wed Jan 22 20:30:14 2014 +0100 2014.01.23, Version 0.10.23 (Stable) Changes since version 0.10.22: * linux: relax assumption on /proc/stat parsing (Luca Bruno) * openbsd: fix obvious bug in uv_cpu_info (Fedor Indutny) * process: close stdio after dup2'ing it (Fedor Indutny) commit e403a2c486f46c0f5eda8814ff13d4ed4521e5a6 Author: Fedor Indutny <[email protected]> Date: Mon Jan 20 19:30:08 2014 +0400 process: close stdio after dup2'ing it Thus allow passing the same file descriptor as the source of multiple stdios. Committed with the help and code parts from: * Sam Roberts <[email protected]> fix #1074 commit 8bc29b6f5fff71c69987c44e3cfbb3b79b882398 Author: Fedor Indutny <[email protected]> Date: Tue Jan 21 15:05:39 2014 +0400 openbsd: fix obvious bug in uv_cpu_info `int which[]` should not be static here, as the function itself is changing it fix joyent/node#6878 commit 993151bc409c273409dbbaaac192091c864f3823 Author: Luca Bruno <[email protected]> Date: Mon Jan 20 13:56:26 2014 +0100 linux: relax assumption on /proc/stat parsing CPU entries in /proc/stat are not guaranteed to be monotonically increasing, asserting on this assumption can break in cases such as the UltraSparc II machine shown in #1080. Signed-off-by: Luca Bruno <[email protected]> commit 97eda7fd6226be651216ec19ba6146807186bd36 Author: Timothy J Fontaine <[email protected]> Date: Tue Jan 7 14:03:18 2014 -0800 Now working on v0.10.23 commit f526c90eeff271d9323a9107b9a64a4671fd3103 Author: Timothy J Fontaine <[email protected]> Date: Tue Jan 7 14:03:15 2014 -0800 2014.01.08, Version 0.10.22 (Stable) Changes since version 0.10.21: * windows: avoid assertion failure when pipe server is closed (Bert Belder) commit f6422af80ab54eddf5f1344bec7ddab9ab240924 Author: Alex Crichton <[email protected]> Date: Sat Dec 21 20:12:35 2013 -0800 osx: Fix a possible segfault in uv__io_poll In our build infrastructure, I've seen a lot of segfaults recently that were all only happening on OSX. Upon inspecting the coredumps, it appearded that all segfaults happened at the same instruction, and upon translating the assembly back to the source, I found that an array could be indexed with a -1 index before the index was checked to be not -1. As concrete evidence, here is the situation that I found caused the segfault. The instruction in question along with the relevant register values was: mov (%r8,%r15,8),%r12 r8 = 0x7fb0ba800000 r15 = 0xffffffffffffffff r8 + r15 * 8 == 0x7fb0ba7ffff8 It appears that the base of loop->watchers was page aligned, and by going back one word I guess that the page wasn't mapped, causing our segfaults. commit 16c4b21e4dad4624a5a4c23f8e1cff6da0b1ba1c Author: Bert Belder <[email protected]> Date: Sat Dec 21 11:32:22 2013 +0100 test: make test-pipe-server-close pass on linux When a server and a client are both part of the same event loop, and the client connects to the server, the order in which the connect callback and the connection callback are called is unspecified. Apparently on linux the connection callback sometimes happens first, which is not a bug, and should not make this test fail. commit c66340d59b8b35399831fb1c3a12c1efdbd91a53 Author: Bert Belder <[email protected]> Date: Fri Dec 20 19:40:02 2013 -0800 test: add pipe-server-close test Add a regression test for the pipe server close issue on Windows, which was reported in joyent/node#6749 and fixed in 7b16a3f. commit 562d7a49ac206dab2a830aad612d995a8c6fbd97 Author: Bert Belder <[email protected]> Date: Fri Dec 20 19:38:37 2013 -0800 code style: strip trailing whitespace commit 7b16a3f5083ef742384e7511914764c56778da8e Author: Bert Belder <[email protected]> Date: Fri Dec 20 17:33:31 2013 -0800 windows: avoid assertion failure when pipe server is closed When a pipe server is closed, all pending accept requests and their associated HANDLEs are closed to force windows to cancel the ConnectNamedPipe IRP. The returned request has the `pipeHandle` field set to INVALID_HANDLE_VALUE, which trips an assert in uv_pipe_process_accept_req. This patch fixes that. commit 9d60214b3aa837e3930e078983245f1e73cfbb39 Author: Timothy J Fontaine <[email protected]> Date: Wed Dec 18 15:37:33 2013 -0800 Now working on v0.10.22 commit 375ebce068555f0ca8151b562edb5f1b263022db Author: Timothy J Fontaine <[email protected]> Date: Wed Dec 18 15:37:25 2013 -0800 2013.12.19, Version 0.10.21 (Stable) Changes since version 0.10.20: * unix: fix a possible memory leak in uv_fs_readdir (Alex Crichton) commit 7c6bddbe2a697344f441574d61a74a8034d86109 Author: Alex Crichton <[email protected]> Date: Tue Dec 17 13:03:52 2013 -0800 unix: fix a possible memory leak in uv_fs_readdir Some scandir implementations allocate the dirent struct even if the directory is empty, so if `scandir` returns 0 there may still be memory that needs to get deallocated. I have altered uv__fs_readdir to go to the "deallocation exit area" when 0 files are found in the directory and continue to return early on a return value of -1. I went to add a test for this functionality, but it appears that one already exists (reading an empty directory), so I imagine that the valgrind builds must only be happening on linux instead of OSX as well? I have confirmed manually that a program without this fix will infinitely leak memory, and with this fix the memory usage stays constant. commit f3d311edc447cfe0a95c6ca7cbe8301588f180c5 Author: Timothy J Fontaine <[email protected]> Date: Wed Dec 11 20:22:00 2013 -0800 Now working on v0.10.21 commit 04141464dd0fba90ace9aa6f7003ce139b888a40 Author: Timothy J Fontaine <[email protected]> Date: Wed Dec 11 20:21:57 2013 -0800 2013.12.13, Version 0.10.20 (Stable) Changes since version 0.10.19: * linux: fix up SO_REUSEPORT back-port (Ben Noordhuis) * fs-event: fix invalid memory access (huxingyi) commit da323447308280c736ac44946fce752a5dca8243 Author: huxingyi <[email protected]> Date: Thu Oct 24 16:10:44 2013 +0800 fs-event: fix invalid memory access file_info->FileName is not null terminated. commit 47d98b64c45db8335bf7e065351e385cae32323d Author: Alex Gaynor <[email protected]> Date: Fri Nov 29 11:07:43 2013 -0600 doc: Removed use of gendered pronouns commit 7bb7371fc5ad7cdabcf997e5002d5fe8f5e47abd Author: Ben Noordhuis <[email protected]> Date: Wed Nov 27 17:28:02 2013 +0100 build: make `./gyp_uv.py -f eclipse` work The eclipse backend (like the ninja backend) does not support the --generator_output switch. commit 74457d08ba6408d1ce5ff965b113f237c0cf6e51 Author: Ben Noordhuis <[email protected]> Date: Mon Nov 25 16:09:55 2013 +0100 linux: fix up SO_REUSEPORT back-port Commit 3d2c820 back-ports a patch from the master branch that disables the use of SO_REUSEPORT on Linux for reasons mentioned in the commit log. Unfortunately, the back-port was incomplete; another setsockopt() call site in src/unix/udp.c was overlooked. This commit rectifies that. Hat tip to Luca Bruno for helping troubleshoot the issue. commit c3e05bafa5486120117994d11f38172d3752127d Author: Marc Schlaich <[email protected]> Date: Mon Nov 25 16:19:42 2013 +0100 gitignore: ignore *.pyc files The gyp build on Windows produces a *.pyc file as of commit 991409e. commit a43537eeada0aa95a0df02da23e9169b981654ba Author: Ben Noordhuis <[email protected]> Date: Mon Nov 25 12:58:17 2013 +0100 test: back-port EMFILE test from master branch Back-port the test from commit 27795cf from the master branch ("unix: fix accept() EMFILE error handling"). commit 026241ca67717679a7f79d92c4fe1d77f223318c Author: Ben Noordhuis <[email protected]> Date: Wed Nov 13 12:20:07 2013 +0100 unix: unbreak bsd build after bbccafb Unbreak the build on the BSDs after commit bbccafb. Move the new uv__platform_invalidate_fd() function from src/unix/darwin.c to src/unix/kqueue.c. commit 1578a5a371326bd1edabfa146c77d41d4e20928e Author: Timothy J Fontaine <[email protected]> Date: Tue Nov 12 10:54:29 2013 -0800 Now working on v0.10.20 commit 33959f7524090b8d2c6c41e2400ca77e31755059 Author: Timothy J Fontaine <[email protected]> Date: Tue Nov 12 10:54:25 2013 -0800 2013.11.13, Version 0.10.19 (Stable) Changes since version 0.10.18: * darwin: avoid calling GetCurrentProcess (Fedor Indutny) * unix: update events from pevents between polls (Fedor Indutny) * fsevents: support japaneese characters in path (Chris Bank) * linux: don't turn on SO_REUSEPORT socket option (Ben Noordhuis) * build: fix windows smp build with gyp (Geert Jansen) * linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT (Ben Noordhuis) * unix: fix reopened fd bug (Fedor Indutny) * core: fix fake watcher list and count preservation (Fedor Indutny) commit f50ccd52388ffbcbbf0cd21ef7d6562300ef7ebb Author: Fedor Indutny <[email protected]> Date: Tue Nov 12 15:24:33 2013 +0400 core: fix fake watcher list and count preservation Fake watcher list and count should be preserved only if `loop->watchers` was already allocated. commit bbccafbe704090e294481d95f73862bc83f33026 Author: Fedor Indutny <[email protected]> Date: Fri Oct 25 12:56:37 2013 +0400 unix: fix reopened fd bug When fd is closed and new one (with the same number) is opened inside kqueue/epoll/port loop's callback - stale events might invoke callbacks on wrong watchers. Check if watcher was changed after invocation and invalidate all events with the same fd. fix #826 commit 0c76cdb98ffa9a43f169e24b59a3df95f18803f3 Author: Ben Noordhuis <[email protected]> Date: Fri Nov 8 05:10:44 2013 +0100 linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT Work around an epoll quirk where it sometimes reports just the EPOLLERR or EPOLLHUP event. In order to force the event loop to move forward, we merge in the read/write events that the watcher is interested in; uv__read() and uv__write() will then deal with the error or hangup in the usual fashion. Fixes #982. This is a back-port of commit 24bfef2 from the master branch. commit 991409e461e3973f006bf951b3e7513578a41be2 Author: Geert Jansen <[email protected]> Date: Tue Nov 5 08:43:40 2013 +0100 build: fix windows smp build with gyp Gyp will try a parallel build if it detect the system has >1 processor. This functionality depends on the Python "multiprocessing" package. The multiprocessing package on Windows requires that the top-level module is importable as a module, see: http://docs.python.org/2/library/multiprocessing.html#windows This fixes issue #984. This is a back-port of commit 2445467 from the master branch. commit 3d2c820a4efe3954a77b539bb56e7398263069d3 Author: Ben Noordhuis <[email protected]> Date: Wed Oct 30 09:36:47 2013 +0100 linux: don't turn on SO_REUSEPORT socket option On the BSDs, SO_REUSEPORT is pretty much SO_REUSEADDR with some special casing for IP multicast. When two processes (that don't do multicast) bind to the same address, only the last one receives traffic. It allows one to "steal" the bound address from another process. (Both processes have to enable SO_REUSEPORT though, so it only works in a cooperative setting.) On Linux however, it enables port sharing, not stealing - both processes receive a share of the traffic. This is a desirable trait but pre-3.9 kernels don't support the socket option and a libuv program therefore behaves differently with older kernels or on another platform. This is a back-port of commit 9d60f1e from the master branch. Fixes joyent/node#6454. commit 3780e128230618bc3bddc9b3942ee149fadf4ca2 Author: Chris Bank <[email protected]> Date: Sat Nov 2 05:00:50 2013 +0400 fsevents: support japaneese characters in path commit f9960184fd86d43470dc70dcedac32899e532757 Author: Fedor Indutny <[email protected]> Date: Wed Oct 30 21:43:23 2013 +0400 test: add regression test for 29fdb3471 commit 29fdb3471ba993a4d129278129ec04e720890063 Author: Fedor Indutny <[email protected]> Date: Sat Oct 26 01:06:12 2013 +0400 unix: update events from pevents between polls Watchers could be stopped between two `kevent()`/`epoll_wait()` calls (which may happen in the same loop in `uv__io_poll()`), in such cases `watcher->events` could be stale and won't be updated to `watcher->pevents`. Try to use and rely on `watcher->pevents` instead of blindly expecting `watcher->events` to be always correct. commit 08e0e63f3adecafeacaf09f519587c381c6e2ef2 Author: Fedor Indutny <[email protected]> Date: Mon Oct 28 20:51:50 2013 +0400 darwin: avoid calling GetCurrentProcess Use some black-magic from Apple to change process name without getting a "Not responding" tag from Activity Manager. fix #966 commit 939560b6dbbb52252a3d510731431c7c9e03750c Author: Timothy J Fontaine <[email protected]> Date: Fri Oct 18 13:17:52 2013 -0700 Now working on v0.10.19 commit 9ec52963b585e822e87bdc5de28d6143aff0d2e5 Author: Timothy J Fontaine <[email protected]> Date: Fri Oct 18 13:17:48 2013 -0700 2013.10.19, Version 0.10.18 (Stable) Changes since version 0.10.17: * unix: fix uv_spawn() NULL pointer deref on ENOMEM (Ben Noordhuis) * unix: don't close inherited fds on uv_spawn() fail (Ben Noordhuis) * unix: revert recent FSEvent changes (Ben Noordhuis) * unix: fix non-synchronized access in signal.c (Ben Noordhuis) commit 1800efc13806440867b92758d01f0ce97e239e36 Author: Ben Noordhuis <[email protected]> Date: Fri Oct 18 17:10:03 2013 +0200 unix: fix non-synchronized access in signal.c Check the return value of uv__signal_lock(); don't mutate the signal watcher tree in the signal handler if we failed to acquire the lock. commit 38df93cfed1921b4682179c04c298be1b69e6841 Author: Ben Noordhuis <[email protected]> Date: Sat Oct 5 18:15:02 2013 +0200 unix: revert recent FSEvent changes This commit reverts the following commits: 983fa68 darwin: fix 10.6 build error in fsevents.c 684e212 fsevents: use shared FSEventStream ea4cb77 fsevents: FSEvents is most likely not thread-safe 9bae606 darwin: create fsevents thread on demand Several people have reported stability issues on OS X 10.8 and bus errors on the 10.9 developer preview. See also joyent/node#6296 and joyent/node#6251. commit 11d80117936bea8da25d28bcf5402615dd3ead05 Author: Ben Noordhuis <[email protected]> Date: Wed Oct 2 11:17:18 2013 +0200 unix: don't close inherited fds on uv_spawn() fail The cleanup-after-error code path in uv_spawn() was closing file descriptors indiscriminately. Only close file descriptors that we created ourselves, not the ones that are passed in by the user. Fixes joyent/node#6297. commit fc3a21f943d5c91cd27fd7df9a973546101fef22 Author: Ben Noordhuis <[email protected]> Date: Wed Oct 2 10:53:53 2013 +0200 unix: fix uv_spawn() NULL pointer deref on ENOMEM In the cleanup-after-error section of uv_spawn(), check that the pointer is non-NULL - we might end up in said section due to a malloc() failure. commit 8c9cbee1b1fb19786405bdd92af5edfdab4cdbbe Author: Ben Noordhuis <[email protected]> Date: Sat Sep 28 20:50:45 2013 +0200 Revert "unix: set O_NONBLOCK in uv_pipe_open()" It turns out that node.js relies on the blocking behavior of pipes in some cases, notably when forking worker processes. Reopens #941. This reverts commit 8fe4ca686bcb069f670b0381e89c008ca814f8ba. commit 8fe4ca686bcb069f670b0381e89c008ca814f8ba Author: Ben Noordhuis <[email protected]> Date: Sat Sep 28 10:29:53 2013 +0200 unix: set O_NONBLOCK in uv_pipe_open() Don't rely on the caller to set the O_NONBLOCK flag on the file descriptor. Prevents sporadic stalls when the file descriptor is in blocking mode and exactly as many bytes are read as there are available; in that case, libuv will try to read again and block. Node.js was guilty of this. Fixes #941. commit e9df7cbcbbcf8972aaf4ae64174a37c46dd62eb2 Author: Timothy J Fontaine <[email protected]> Date: Tue Sep 24 13:40:44 2013 -0700 Now working on v0.10.18 commit 9670e0a93540c2f0d86c84a375f2303383c11e7e Author: Timothy J Fontaine <[email protected]> Date: Tue Sep 24 13:40:40 2013 -0700 2013.09.25, Version 0.10.17 (Stable) Changes since version 0.10.16: * build: remove GCC_WARN_ABOUT_MISSING_NEWLINE (Ben Noordhuis) * darwin: fix 10.6 build error in fsevents.c (Ben Noordhuis) commit 983fa68e9f8bdf77a94fc46526a798a350ec39ec Author: Ben Noordhuis <[email protected]> Date: Wed Aug 28 11:55:27 2013 +0200 darwin: fix 10.6 build error in fsevents.c Work around an 'initializer element is not constant' build error in src/unix/fsevents.c by turning the const int flags into #defines. Only an issue on OS X 10.6 due to the old compiler it uses. Fixes #908. This is a back-port of commit 82f2472 from the master branch. commit 712835a6733b578d6e8c1bccdfa7febc6454d3b8 Author: Ben Noordhuis <[email protected]> Date: Thu Sep 5 21:32:41 2013 +0200 build: remove GCC_WARN_ABOUT_MISSING_NEWLINE Not compatible with non-Apple gcc builds. Fixes the following build error: gcc-4.8: error: unrecognized command line option '-Wnewline-eof' commit 7e5c63c88da5b88f39ea1ec3d6b049438da91bde Author: Bert Belder <[email protected]> Date: Thu Sep 5 16:45:51 2013 +0200 Now working on v0.10.17 commit 2bce230d81f4853a23662cbeb26fe98010b1084b Author: Bert Belder <[email protected]> Date: Thu Sep 5 16:45:45 2013 +0200 2013.09.06, Version 0.10.16 (Stable) Changes since version 0.10.15: * windows: make uv_shutdown() for write-only pipes work (Bert Belder) * windows: make uv_fs_open() report EINVAL when invalid arguments are passed (Bert Belder) * windows: make uv_fs_open() report _open_osfhandle() failure correctly (Bert Belder) * windows: make uv_fs_chmod() report errors correctly (Bert Belder) * windows: wrap multi-statement macros in do..while block (Bert Belder) commit faf2c5932c89a714fcd6b9668a9b78a986d20701 Author: Bert Belder <[email protected]> Date: Thu Sep 5 08:50:04 2013 +0200 windows/fs: handle _open_osfhandle() failure correctly Until now we assumed that _open_osfhandle() would set _doserrno on failure. This assumption was very wrong in one obvious case, namely when the CRT file descriptor table would fill up. In that case errno is set to EMFILE, but GetLastError() returns zero - which makes sense because it's not a win32 error but rather a CRT problem. commit 812717d0dda831594f91126272b7f5b3e323e184 Author: Bert Belder <[email protected]> Date: Thu Sep 5 08:46:16 2013 +0200 windows/fs: make uv_fs_open() report EINVAL correctly Before, when the user passed an invalid paramter to uv_fs_open, libuv would detect this and call SET_REQ_RESULT to set the result value to -1. SET_REQ_RESULT then stored whatever error code was returned by GetLastError(), which would have no relationship to the actual problem, and might as well be zero. commit 39bef32906573a0dd645cd12c510693dbabf76cf Author: Bert Belder <[email protected]> Date: Thu Sep 5 08:38:07 2013 +0200 windows/fs: wrap multi-statement macros in do..while block commit 61b20e8d469eb82292ef4ca885d824f429fe4b2a Author: Bert Belder <[email protected]> Date: Thu Aug 29 15:04:27 2013 +0200 windows: make uv_shutdown() for write-only pipes work A couple of issues prevented uv_shutdown() from working correctly with write-only pipes. * The pipe handle wasn't opened with the right permissions, so an attempt to probe the state of the write buffer would fail with ERROR_ACCESS_DENIED. * The pipe flags for child process stdio pipes were always set to UV_HANDLE_READABLE and UV_HANDLE_WRITABLE, even in cases where it was actually half-duplex. * There was no code path that lead to closing the pipe handle if the pipe was write-only. commit 851a6624161219c0a18be8b5c9fc4e55d24f53c4 Author: Bert Belder <[email protected]> Date: Sat Aug 24 15:40:53 2013 +0200 windows: make uv_fs_chmod() report errors correctly Before this patch libuv would attempt to use GetLastError() to retrieve the cause of NtQueryInformationFile failure, but that's not how it should be done. commit c8b6895eaffa26c66d2af2b573687ca7d061f26a Author: Bert Belder <[email protected]> Date: Fri Aug 23 18:57:14 2013 +0200 Now working on v0.10.16 commit 221078a8fdd9b853c6b557b3d9a5dd744b4fdd6b Author: Bert Belder <[email protected]> Date: Fri Aug 23 18:57:10 2013 +0200 2013.08.24, Version 0.10.15 (Stable) Changes since version 0.10.14: * fsevents: create FSEvents thread on demand (Ben Noordhuis) * fsevents: use a single thread for interacting with FSEvents, because it's not thread-safe. (Fedor Indutny) * fsevents: share FSEventStream between multiple FS watchers, which removes a limit on the maximum number of file watchers that can be created on OS X. (Fedor Indutny) commit 684e2124e7cbe8f94daeba730e83cbf88963430f Author: Fedor Indutny <[email protected]> Date: Wed Aug 21 01:43:09 2013 +0400 fsevents: use shared FSEventStream It seems that number of simultaneously opened FSEventStreams is limited on OSX (i.e. you can have only fixed number of them on one running system), getting past through this limit will cause `FSEventStreamCreate` to return false and write following message to stderr: (CarbonCore.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-21) To prevent this, we must use only one shared FSEventStream with a paths for all uv_fsevent_t handles, and then filter out events for each handle using this paths again. See https://github.com/joyent/node/issues/5463 Conflicts: include/uv-private/uv-darwin.h src/unix/fsevents.c commit ea4cb77814eeaa7629b29d53ad6a2b8bc4b19046 Author: Fedor Indutny <[email protected]> Date: Wed Aug 14 17:14:35 2013 +0400 fsevents: FSEvents is most likely not thread-safe Perform all operation with FSEventStream in the same thread, where it'll be used. Conflicts: src/unix/fsevents.c commit 9bae606d413327187828155b61babcd52b2d2517 Author: Ben Noordhuis <[email protected]> Date: Tue Aug 13 02:02:12 2013 +0200 darwin: create fsevents thread on demand * Move CF run loop code to fsevents.c. * Create the fsevents thread on demand rather than at startup. * Remove use of ACCESS_ONCE. All accesses to loop->cf_loop are protected by full memory barriers so no reordering can take place. Fixes #872. Conflicts: src/unix/darwin.c commit 24a42a406ae00c2e8060b9f9397365684669db6b Author: Timothy J Fontaine <[email protected]> Date: Wed Aug 21 14:41:26 2013 -0700 Now working on v0.10.15 commit 15d64132151c18b26346afa892444b95e2addad0 Author: Timothy J Fontaine <[email protected]> Date: Wed Aug 21 14:41:23 2013 -0700 2013.08.22, Version 0.10.14 (Stable) Changes since version 0.10.13: * unix: retry waitpid() on EINTR (Ben Noordhuis) commit b2ac4d3bf41bafc1c327b9fa929eee37f05492e8 Author: Ben Noordhuis <[email protected]> Date: Sun Aug 18 17:25:05 2013 +0200 unix: retry waitpid() on EINTR Before this commit, libuv would abort() if waitpid() failed with EINTR. It's unlikely that anyone actually hit this error condition: the major UNIX platforms - with the possible exception of Solaris - don't return EINTR when the WNOHANG flag is specified, as libuv does. However, POSIX allows for an implementation to do whatever here: unless explicitly forbidden, it's allowed and POSIX doesn't restrict implementers in this particular area. Let's opt for robustness and handle EINTR. commit d84acc65a7e48f41e2bc2fea38ed473e4a051d18 Merge: 47fd23f 381312e Author: Joe Cheng <[email protected]> Date: Mon Aug 12 09:46:05 2013 -0700 Merge tag 'v0.10.13' 2013.07.26, Version 0.10.13 (Stable) Changes since version 0.10.12: * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis) commit 2744e1e009fce04e883f7641009b4bbb4c78a8f0 Author: Timothy J Fontaine <[email protected]> Date: Thu Jul 25 10:34:41 2013 -0700 Now working on v0.10.14 commit 381312e1fe6fecbabc943ccd56f0e7d114b3d064 Author: Timothy J Fontaine <[email protected]> Date: Thu Jul 25 10:31:28 2013 -0700 2013.07.26, Version 0.10.13 (Stable) Changes since version 0.10.12: * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis) commit d779eb53d506d40fbe7903da7b914a5bbd588954 Author: Ben Noordhuis <[email protected]> Date: Tue Jul 23 13:14:44 2013 +0200 unix, windows: fix uv_fs_chown() function prototype Before this commit, uv_fs_chown() and uv_fs_fchown() took the uid and gid as signed integers which is wrong because uid_t and gid_t are unsigned on most all platforms and IDs that don't fit in a signed integer do exist. This is not an ABI change because the size of the uid and gid arguments do not change, only their sign. On Windows, uv_uid_t and uv_gid_t are typedef'd as unsigned char for reasons that are unclear. It doesn't matter: they get cast to ints when used as function arguments. The arguments themselves are unused. Partial fix for joyent/node#5890. commit 3b4e0a216fb4093fa9f6e5d3c9039b5f1d30820b Author: isaacs <[email protected]> Date: Tue Jul 9 13:18:53 2013 -0700 Now working on v0.10.13 commit 58a46221bba726746887a661a9f36fe9ff204209 Author: isaacs <[email protected]> Date: Tue Jul 9 13:18:50 2013 -0700 2013.07.10, Version 0.10.12 (Stable) Changes since version 0.10.11: * linux: add support for MIPS (Andrei Sedoi) * windows: uv_spawn shouldn't reject reparse points (Bert Belder) * windows: use WSAGetLastError(), not errno (Ben Noordhuis) * build: darwin: disable -fstrict-aliasing warnings (Ben Noordhuis) * build: `all` now builds static and dynamic lib (Ben Noordhuis) * unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK) (Ben Noordhuis) commit 37d0209c8911c80115bb0c58b248c7e10bb541a9 Author: Ben Noordhuis <[email protected]> Date: Fri Jul 5 12:04:43 2013 +0200 unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK) Ancient versions of glibc (<= 2.3.1) don't have error-checking mutexes. commit 88a2c7ff209935d736f02e79b3369f2e7b646bb8 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 17:13:26 2013 +0200 build: `all` now builds static and dynamic lib The `make all` target now builds both libuv.a and libuv.{so,dylib} rather than just libuv.a. commit 5841852703c02e46d7220f1eb8d89bb8414d7cf3 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 13:02:39 2013 +0200 test: add 'start timer from check handle' test Check that a timer that is started from a check handle gets picked up correctly, i.e. that it influences the timeout used in the next tick of the event loop. commit 488b43ecc5a79143d0697e5e49d834c86c7c9894 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 13:26:45 2013 +0200 test: fix signed/unsigned compiler warning commit a0bc4cca74be7de2a540439920c8f15d0a671b74 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 13:06:26 2013 +0200 build: darwin: disable -fstrict-aliasing warnings gcc 4.2.1 as shipped with Xcode complains incessantly about aliasing warnings, which, while technically true, disregards the fact that the aliased types have the same layout in memory. Squelch the warnings. commit c8c775bd9739e0c9562b925ec482a378b50f97c2 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 01:03:36 2013 +0200 windows: use WSAGetLastError(), not errno setsockopt() doesn't touch errno on failure. Use WSAGetLastError() instead. This is a back-port of commit 30a8b44 from the master branch. commit 495d1a09fb863354e5de1c6ab4547be3672ace00 Author: Bert Belder <[email protected]> Date: Wed Jun 19 00:14:58 2013 +0200 windows: uv_spawn shouldn't reject reparse points This fixes an issue where uv_spawn would not try to run a reparse point, and continue to scan the PATH instead. Effectively, it was impossible to spawn a symlinked binary. This commit fixes that. Also see #748 commit 6607e702539f0affa2d1b2926d4e69a1e032c242 Author: Ben Noordhuis <[email protected]> Date: Tue Jun 18 23:50:31 2013 +0200 test: open stdout fd in write-only mode Fixes #771. commit 5096f1e0961896998c4185db866c53a8a8636fab Author: Andrei Sedoi <[email protected]> Date: Thu Jun 13 23:23:42 2013 +0300 linux: add support for MIPS commit 72e440d7e193123c0359fa12a7fabab15d7d9f51 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 12 21:52:05 2013 +0200 Now working on v0.10.12 commit c3b75406a66a10222a589cb173e8f469e9665c7e Author: Ben Noordhuis <[email protected]> Date: Wed Jun 12 21:52:01 2013 +0200 2013.06.13, Version 0.10.11 (Stable) Changes since version 0.10.10: * unix: unconditionally stop handle on close (Ben Noordhuis) * freebsd: don't enable dtrace if it's not available (Brian White) * build: make HAVE_DTRACE=0 should disable dtrace (Timothy J. Fontaine) * unix: remove overzealous assert (Ben Noordhuis) * unix: clear UV_STREAM_SHUTTING after shutdown() (Ben Noordhuis) * unix: fix busy loop, write if POLLERR or POLLHUP (Ben Noordhuis) commit 12210fe578623995d13cc5126427c1c67de4b6e0 Author: Ben Noordhuis <[email protected]> Date: Sat Jun 8 03:20:29 2013 +0200 unix: fix busy loop, write if POLLERR or POLLHUP This fixes a busy loop by working around a quirk with Linux kernels <= 2.6.32 where an EPIPE or ECONNRESET error on a file descriptor that is polled for EPOLLOUT but not EPOLLIN gets reported by epoll_wait() as just EPOLLERR|EPOLLHUP, like this: epoll_wait(5, {{EPOLLERR|EPOLLHUP, {u32=12, u64=12}}}, 1024, 433) = 1 Before this commit, libuv called uv__read() which attempts to read from the file descriptor. With newer kernels and on other operating systems that fails like this: read(12, "", 65536) = -1 EPIPE (Broken pipe) Which tells libuv there is a connection error and it should notify the user of that. On the affected Linux kernels however, the read succeeds with an EOF: read(12, "", 65536) = 0 Which is subsequently passed on to the user. In most cases, the user will close the handle and everything is fine. Node.js however sometimes keeps the handle open in an attempt to flush pending write requests. While libuv doesn't officially support this, unofficially it works... ...except on those older kernels. Because the kernel keeps waking up the event loop without setting POLLOUT and because the read calls EOF but don't error, libuv's I/O state machine doesn't progress. That's why this commit changes uv__stream_io() to also write pending data. While the read() system call doesn't error, the write() system call will. Fixes joyent/node#5504. commit 536c5f8661af4b57f8cc8be43bf482ae27a9fcd8 Author: Ben Noordhuis <[email protected]> Date: Sat Jun 8 03:14:32 2013 +0200 unix: clear UV_STREAM_SHUTTING after shutdown() Fix a state machine buglet where the UV_STREAM_SHUTTING flag didn't get cleared. commit 3ab354367b2ff16a5ade1b585fdf7e10599084d3 Author: Ben Noordhuis <[email protected]> Date: Fri Jun 7 11:28:31 2013 +0200 unix: remove overzealous assert Several node.js users are hitting this assert under what appear to be mostly benign conditions. In other words, it's unclear whether it's catching real bugs or just has wrong expectations. An aborting process is rather disruptive so I'm removing the assert from the stable branch and relanding it in the master branch. commit f84becc64ea3f4653a2ee95319dab0aeee7c4044 Author: Timothy J Fontaine <[email protected]> Date: Thu Jun 6 10:48:24 2013 -0700 build: make HAVE_DTRACE=0 should disable dtrace commit c8ffee3460a1b507bbc7f5f83e4e09e4a769db76 Author: Brian White <[email protected]> Date: Fri May 31 18:37:45 2013 -0400 freebsd: don't enable dtrace if it's not available commit 8e4b248ca6cf66367476624899442974d17092f0 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 5 15:01:34 2013 +0200 unix: unconditionally stop handle on close Make sure the handle is fully stopped by the time uv__stream_close() calls uv_read_stop(). Fixes the following assertion: Assertion failed: (!uv__io_active(&stream->io_watcher, UV__POLLOUT) || !ngx_queue_empty(&stream->write_completed_queue) || !ngx_queue_empty(&stream->write_queue) || stream->shutdown_req != NULL || stream->connect_req != NULL), function uv_read_stop, file ../deps/uv/src/unix/stream.c, line 1329. Fixes joyent/node#5622. commit e9ae62d13a38b89fee60ed502307530bc2b8f520 Author: isaacs <[email protected]> Date: Tue Jun 4 12:00:31 2013 -0700 Now working on v0.10.11 commit 0d95a88bd35fce93863c57a460be613aea34d2c5 Author: isaacs <[email protected]> Date: Tue Jun 4 12:00:29 2013 -0700 2013.06.05, Version 0.10.10 (Stable) Changes since version 0.10.9: * include: document uv_update_time() and uv_now() (Ben Noordhuis) * linux: fix cpu model parsing on newer arm kernels (Ben Noordhuis) * linux: fix memory leak in uv_cpu_info() error path (Ben Noordhuis) * linux: don't ignore OOM errors in uv_cpu_info() (Ben Noordhuis) * unix, windows: move uv_now() to uv-common.c (Ben Noordhuis) * darwin: make uv_fs_sendfile() respect length param (Wynn Wilkes) commit b9eb402fb047b9c10c9395ea555d22bc869a5901 Author: Bert Belder <[email protected]> Date: Thu May 30 22:54:44 2013 +0200 include: remove lame comment from uv.h commit b4c658c3c0e650590cc0496833fead4f29deea75 Author: Wynn Wilkes <[email protected]> Date: Wed May 29 12:13:34 2013 -0600 darwin: make uv_fs_sendfile() respect length param The darwin sendfile implementation uses the &len parameter as input and output. The code was sending 0 (not using the value of req->len) so the behavior wasn't what the caller was expecting. This makes sure to initialize len with req->len to ensure that the caller can send portions of a file (not always everything to the end of the file). commit 081f7018ecc1c66a76f76c4b5cacb327820674b9 Author: Bert Belder <[email protected]> Date: Wed May 29 18:32:25 2013 +0300 test: use c-style comments Fixes a compilation problem on OS X caused by the use of c++-style comments in test-osx-select.c. commit e0bdb3dbc916d8311538de2b783c53e9739bf652 Author: Ben Noordhuis <[email protected]> Date: Wed May 29 16:13:34 2013 +0200 unix, windows: move uv_now() to uv-common.c commit b93cf8b594b5eaf4617174e674961fd3db3fb0c6 Author: Ben Noordhuis <[email protected]> Date: Wed May 29 01:37:36 2013 +0200 linux: don't ignore OOM errors in uv_cpu_info() commit 31282a97e70b24df7ebe4692967fee2a48aa2096 Author: Ben Noordhuis <[email protected]> Date: Wed May 29 01:25:37 2013 +0200 linux: fix memory leak in uv_cpu_info() error path Any memory allocated to hold CPU model strings wasn't freed on error. commit 92c72f58bf59ee51a1680dd52b0e91a0ccae485d Author: Ben Noordhuis <[email protected]> Date: Wed May 29 00:24:02 2013 +0200 linux: fix cpu model parsing on newer arm kernels The format of /proc/cpuinfo on ARM kernels >= 3.8 has changed. Scan for the string "model name" (like x86) first, "Processor" second. Fixes #812. commit dfff2e9e2336ac7b89234c3f7744a73fc6560bb1 Author: Ben Noordhuis <[email protected]> Date: Tue May 28 23:20:35 2013 +0200 include: document uv_update_time() and uv_now() commit 21c12b824a07be22a24547904b50ff022db11dd7 Author: isaacs <[email protected]> Date: Tue May 28 12:08:49 2013 -0700 Now working on v0.10.10 commit a195f9ace23d92345baf57582678bfc3017e6632 Author: isaacs <[email protected]> Date: Tue May 28 12:08:46 2013 -0700 2013.05.29, Version 0.10.9 (Stable) Changes since version 0.10.8: * unix: fix stream refcounting buglet (Ben Noordhuis) * unix: remove erroneous asserts (Ben Noordhuis) * unix: add uv__is_closing() macro (Ben Noordhuis) * unix: stop stream POLLOUT watcher on write error (Ben Noordhuis) commit b329d51ef4ce32f34c21a016a7c311ddeb077878 Author: Ben Noordhuis <[email protected]> Date: Sun May 26 23:44:55 2013 +0200 unix: stop stream POLLOUT watcher on write error The node.js test suite sometimes hits the assert that was added in commit 4146805 that checks if there are connect, write or shutdown requests pending when the user calls uv_read_stop() while the stream is primed for writing. The libuv user (i.e. node.js) is supposed to close the stream on error. Because uv__stream_close() calls uv_read_stop(), it's possible that the POLLOUT watcher is still active. commit 8e16f8e0564a7b853c2cb0f92572e7959c6cadae Author: Ben Noordhuis <[email protected]> Date: Sun May 26 23:02:17 2013 +0200 unix: add uv__is_closing() macro commit b38c9c1004993ca4f642629f5af1b7b09bbc6887 Author: Ben Noordhuis <[email protected]> Date: Sat May 25 02:36:45 2013 +0200 unix: remove erroneous asserts As of commit c53fe81, it's legal for write_queue_size > 0 when the write_queue itself is empty. Sounds illogical but it means there are error-state write requests in the write_completed_queue that will touch up the write_queue_size on the next tick of the event loop. Remove a few stray asserts that still checked for the old situation. commit 636a13b8c46c52413e1da1795a952bfc738f3c55 Author: Ben Noordhuis <[email protected]> Date: Thu May 23 07:16:00 2013 +0200 unix: fix stream refcounting buglet Fix a buglet where uv_read_stop() would mark the handle as stopped even when there are in-progress write requests. This bug is unlikely to have affected anyone, the only case where it has a user-visible effect is when: a) the handle has been stopped for reading but not writing, and b) it's the last active handle in the event loop's pollset If both conditions are met, it's possible for the event loop to terminate prematurely. This reapplies commit 80f2f82 which was temporarily reverted in fe7b154 because it was making a lot of node.js tests fail on OS X with the following assertion: Assertion failed: (!uv__is_active(handle)), function uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165. Expecting that the handle is inactive when the state is UV_CLOSING turns out to be a bad assumption: it's possible that the handle is executing (for example) a shutdown request when uv__finish_close() is called. That's okay, uv__stream_destroy() takes care of that. The issue wasn't specific to OS X, it was just more visible on that platform. (Slow) debug builds on Linux exhibited the same behavior. commit 7d5024e7e6564c36b99af39db075b0c9d75797f9 Author: isaacs <[email protected]> Date: Fri May 24 14:37:56 2013 -0700 Now working on v0.10.9 commit 0f39be12926fe2d8766a9f025797a473003e6504 Author: isaacs <[email protected]> Date: Fri May 24 14:37:53 2013 -0700 2013.05.25, Version 0.10.8 (Stable) Changes since version 0.10.7: * windows: make uv_spawn not fail under job control (Bert Belder) * darwin: assume CFRunLoopStop() isn't thread-safe (Fedor Indutny) * win: fix UV_EALREADY incorrectly set (Bert Belder) * darwin: make two uv__cf_*() functions static (Ben Noordhuis) * darwin: task_info() cannot fail (Ben Noordhuis) * unix: add mapping for ENETDOWN (Ben Noordhuis) * unix: implicitly signal write errors to libuv user (Ben Noordhuis) * unix: fix assert on signal pipe overflow (Bert Belder) * unix: turn off POLLOUT after stream connect (Ben Noordhuis) commit fe7b154476145ebc69ab70d3ca1d195116a00065 Author: Ben Noordhuis <[email protected]> Date: Fri May 24 21:23:09 2013 +0200 Revert "unix: fix stream refcounting buglet" This change is making 45 out of 527 node.js tests fail on OS X with the following assertion: Assertion failed: (!uv__is_active(handle)), function uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165. It's likely a manifestation of a bug elsewhere but, because there's a new node.js release going out tonight, I'm reverting it for now. This reverts commit 80f2f826bf90b84e659321c0b7fd8af419acb85e. Conflicts: src/unix/stream.c commit 41468050745bc135247f587eae1c38e958fd8377 Author: Ben Noordhuis <[email protected]> Date: Thu May 23 07:37:36 2013 +0200 unix: turn off POLLOUT after stream connect Clear the POLLOUT flag after we're done connecting. Not doing so isn't really harmful but it may cause the event loop to wake up more often than it has to. commit 80f2f826bf90b84e659321c0b7fd8af419acb85e Author: Ben Noordhuis <[email protected]> Date: Thu May 23 07:16:00 2013 +0200 unix: fix stream refcounting buglet Fix a buglet where uv_read_stop() would mark the handle as stopped even when there are in-progress write requests. This bug is unlikely to have affected anyone, the only case where it has a user-visible effect is when: a) the handle has been stopped for reading but not writing, and b) it's the last active handle in the event loop's pollset If both conditions are met, it's possible for the event loop to terminate prematurely. commit c5d570ddba7b3e95fdade96758df0eb2d24cf42f Author: Bert Belder <[email protected]> Date: Thu May 23 14:44:45 2013 +0200 unix: fix assert on signal pipe overflow An incorrect assert() statement was causing libuv to crash when writing to an internal signal pipe would result in EAGAIN/EWOULDBLOCK. This commit doesn't solve the underlying issue that the signal pipe can overflow. This should fix joyent/node#5538 commit c53fe815442559fe58f362279bdc63f5483d6fdb Author: Ben Noordhuis <[email protected]> Date: Wed May 22 16:41:52 2013 +0200 unix: implicitly signal write errors to libuv user Fix an infinite loop in the example below when the stream encounters an EPIPE/ECONNRESET/etc. error: // keep writing until we start buffering while (stream->write_queue_size == 0) { uv_write_t* req = make_write_req(); uv_buf_t buf = uv_buf_init("PING", 4); uv_write(req, stream, &buf, 1, write_cb); } uv_write() does not return an error code on write errors, the error is only reported to the callback. Before this commit, uv_write() left stream->write_queue_size untouched on error, meaning the caller had no way to find out about that error until the next tick of the event loop - which in the example above leads to an infinite loop because that next tick is indefinitely postponed. This commit works around that at the cost of some added internal complexity. Fixes joyent/node#5516. commit 739a5b25b5704d526a46a953da8b9b8db31770d4 Author: Ben Noordhuis <[email protected]> Date: Mon May 20 20:04:45 2013 +0200 unix: add mapping for ENETDOWN commit a1cb52a3ebe13f8e26a48e194e595e95c677de30 Author: Ben Noordhuis <[email protected]> Date: Mon May 20 14:35:10 2013 +0200 darwin: task_info() cannot fail And if it does: assert, don't return errno. It's a mach function, it doesn't set errno. commit e515d71592afe66ddecd6bf2b1409848811cf7ff Author: Ben Noordhuis <[email protected]> Date: Fri May 17 14:42:14 2013 +0200 darwin: make two uv__cf_*() functions static commit db7dc6899d9badcfb99016ba87da2a66eae86dad Author: Bert Belder <[email protected]> Date: Sat May 18 20:45:36 2013 +0200 win: fix UV_EALREADY incorrectly set UV_EALREADY itself is already a libuv error, it should be set with uv__set_artifical_error and not with uv__set_sys_error. Closes #802 commit d5fa633ef22bd40c81af85dd2ee3882cce3c91c4 Author: Fedor Indutny <[email protected]> Date: Fri May 17 20:31:39 2013 +0400 darwin: assume CFRunLoopStop() isn't thread-safe Use signaling mechanism for loop termination, because CFRunLoopStop() is most likely not a thread-safe function and invoking it from other thread may sometimes result in a "dead-lock". fix #799 commit 4f61ab2058c9baffa01d9c865a376ed8d3c65820 Author: Bert Belder <[email protected]> Date: Thu May 16 21:29:40 2013 +0200 windows: make uv_spawn not fail under job control * Fix a potential issue introduced with 415f4d3, namely that uv_spawn can fail when the current process is under job control. This would happen on Windows versions that don't support nested jobs (versions prior to Windows 8 / Server 2012). * Change the `uv__init_global_job_handle` function signature to match what `uv_once` expects. * Add a bunch of comments that clarify how we're using job control, and how we're dealing with job control that might be established by our parent process. commit 13496e9c1ab905af0c43a3dda7bdec7dca73d1b3 Author: Bert Belder <[email protected]> Date: Tue May 14 16:50:22 2013 -0700 Now working on v0.10.8 commit 028baaf0846b686a81e992cb2f2f5a9b8e841fcf Author: Bert Belder <[email protected]> Date: Tue May 14 16:50:19 2013 -0700 2013.05.15, Version 0.10.7 (Stable) Changes since version 0.10.6: * windows: kill child processes when the parent dies (Bert Belder) commit 415f4d3e4c7ac25abf723eed3f5b40e63e045785 Author: Bert Belder <[email protected]> Date: Tue May 14 16:48:03 2013 -0700 windows: kill child processes when the parent dies This makes Windows behave just like Unix. This does not affect processes that are spawned with the UV_PROCESS_DETACHED flag set. commit 1fd10deec4de70ec3c13765948ec2726a0023c23 Author: isaacs <[email protected]> Date: Tue May 14 14:40:01 2013 -0700 Now working on v0.10.7 commit 11e6613e6260d95c8cf11bf89a2759c24649319a Author: isaacs <[email protected]> Date: Tue May 14 14:39:58 2013 -0700 2013.05.15, Version 0.10.6 (Stable) Changes since version 0.10.5: * stream: fix osx select hack (Fedor Indutny) * stream: fix small nit in select hack, add test (Fedor Indutny) * build: link with libkvm on openbsd (Ben Noordhuis) * stream: use harder sync restrictions for osx-hack (Fedor Indutny) * unix: fix EMFILE error handling (Ben Noordhuis) * darwin: fix unnecessary include headers (Daisuke Murase) * darwin: rename darwin-getproctitle.m (Ben Noordhuis) * build: convert predefined $PLATFORM to lower case (Elliot Saba) * build: set soname in shared library (Ben Noordhuis) * build: make `make test` link against .a again (Ben Noordhuis) * darwin: fix ios build, don't require ApplicationServices (Ben Noordhuis) * build: only set soname on shared object builds (Timothy J. Fontaine) commit 0564ee4a66956df1f3e0294e02296158e984d728 Author: Miroslav Bajtoš <[email protected]> Date: Wed Apr 17 00:33:25 2013 +0200 test, sunos: disable process_title test Disable unit test failing due to missing implementation of uv_(set|get)_process_title for Sun OS (SmartOS). Based on discussion with @tjfontaine, such implementation is difficult if possible at all and it won't be done anytime soon. Thus there is no point in keeping the failing test around. commit 55c150abfc11ad6c23674c196ed914db0f942224 Author: Timothy J Fontaine <[email protected]> Date: Mon May 13 15:48:32 2013 -0700 build: only set soname on shared object builds commit f22163c233d4a9dedfe38ebb18a1a414cd25ba62 Author: Ben Noordhuis <[email protected]> Date: Mon May 13 20:06:25 2013 +0200 darwin: fix ios build, don't require ApplicationServices commit a11d16d8f5888aee56f129ddbd54c6130a881d2c Author: Ben Noordhuis <[email protected]> Date: Sun May 12 16:42:30 2013 +0200 build: make `make test` link against .a again Commit 3eb6eb3 links the .so with -Wl,-soname which breaks the `make test` target: run-tests is linked against (for example) libuv.so.0.11 while the actual file name is libuv.so. That's relatively easy to fix by getting creative with rpaths but it's even easier to fix by simply linking statically. It also means I no longer have to remember to set LD_BIND_NOW when profiling the benchmarks. commit 3eb6eb35ccf1aedbd2297c98b73df3cb81215e3a Author: Ben Noordhuis <[email protected]> Date: Sun May 12 14:48:58 2013 +0200 build: set soname in shared library commit 96a2df80846af3769f6c0d432cae2c5963c51e2e Author: Elliot Saba <[email protected]> Date: Sat May 11 14:48:52 2013 -0700 build: convert predefined $PLATFORM to lower case commit fe2a3150c0244759154c4cc472af12eca79df8a8 Author: Miroslav Bajtoš <[email protected]> Date: Mon Apr 15 21:03:05 2013 +0200 test: add error logging to tty unit test commit af6e865a076af031213f9afc488c28306d6bc3d2 Author: Miroslav Bajtoš <[email protected]> Date: Mon Apr 15 20:36:56 2013 +0200 test: fix process_title failing on linux Shorten the test string from 40 to 38 characters because the title length is limited to 39 characters. Truncation of long titles was introduced intentionally by commit a0c1d84 (see discussion in joyent/node#5006). commit 2c21050956206b5e7962e86f4bdbaade1a44b6ae Author: Miroslav Bajtoš <[email protected]> Date: Sat Apr 20 06:43:31 2013 +0200 test: add RETURN_SKIP and RETURN_TODO macros Added two new flags to identify tests that are intentionally ignored (usually because we don't want to implement the tested functionality on current platform) and test serving as TODO list (usually indicating that the tested functionality should be implemented on current plaform in the near future.) commit 9b801d551b70bd4b19e1b29fd3a257bec8051842 Author: Ben Noordhuis <[email protected]> Date: Thu May 2 13:59:18 2013 +0200 darwin: rename darwin-getproctitle.m Rename it to darwin-getproctitle.c, it doesn't need an Objective-C compiler. Fix up -Wpedantic warnings about void to function pointer casts and include <ApplicationServices/ApplicationServices.h> to get the GetCurrentProcess() function prototype. commit 4b0fac89907380a62c7acc15303a39839f05e011 Author: Daisuke Murase <[email protected]> Date: Thu May 2 10:06:03 2013 +0900 darwin: fix unnecessary include headers This file doesn't use any Cocoa functions, CoreFoundation.h is enough here. This line causes compilation error on iOS environment. commit f6fb1dfef149b09c106538bc1040b4444d6c94bb Author: Bert Belder <[email protected]> Date: Thu May 2 13:15:21 2013 +0200 ChangeLog: fix incorrect release date commit b3ab332b340fb857c4d6bd43208aa708a6eb00bd Author: Ben Noordhuis <[email protected]> Date: Wed May 1 19:14:23 2013 +0200 unix: fix EMFILE error handling On Linux, the accept() and accept4() system calls checks for EMFILE before checking for EAGAIN. Refine our EMFILE error handling tactic to deal with that. Here is what used to happen: 1. The event loop calls accept() and sees EMFILE. 2. Libuv switches to EMFILE error handling mode. It closes a stashed file descriptor and calls accept() again. 3. The accept() system call fails with EAGAIN. 4. Libuv reopens the stashed file descriptor (reaching RLIMIT_NOFILE again) and returns control to the regular event loop. 5. The regular event loop calls accept(), sees EMFILE and jumps to step 2 again. Effectively an infinite loop. Avoid that by not calling accept() again when we've seen EAGAIN. Fixes joyent/node#5389. commit 67f9b91a8b76536c47045a9edabe440fa78a42c0 Author: Fedor Indutny <[email protected]> Date: Tue Apr 30 12:51:32 2013 +0400 stream: use harder sync restrictions for osx-hack Synchronize harder to avoid excessive spins, invokations of async callback and sporadic assertion failures on double-call of async callback. commit 4e5b8dc2efb7a5711b0741ff61b9da914b4920fc Author: Ben Noordhuis <[email protected]> Date: Mon Apr 29 13:38:57 2013 +0200 build: link with libkvm on openbsd The Makefile already did and now the gyp build does too. Fixes the OpenBSD build of node.js. Fixes joyent/node#5363. commit ac4e7e7ff2d947297ac2995561e49c0e3efdafd9 Author: Fedor Indutny <[email protected]> Date: Fri Apr 26 23:43:28 2013 +0400 stream: fix small nit in select hack, add test commit 2400716d875a6481c13fd0b46068ab3b6afa5345 Author: Fedor Indutny <[email protected]> Date: Tue Apr 23 22:34:43 2013 -0400 stream: fix osx select hack After latest twiddling, `stream->io_watcher.fd` doesn't contain a real stream's file descriptior anymore. The one from `select_state` should be used instead. Zero-initialize `select_state->event` field. commit a0cb926e2eb9979378f4b71854e8c035035cc3e8 Author: isaacs <[email protected]> Date: Mon Apr 22 17:37:25 2013 -0700 Now working on v0.10.6 commit 6595a7732c52eb4f8e57c88655f72997a8567a67 Author: isaacs <[email protected]> Date: Mon Apr 22 17:37:22 2013 -0700 2013.04.24, Version 0.10.5 (Stable) Changes since version 0.10.4: * unix: silence STATIC_ASSERT compiler warnings (Ben Noordhuis) * windows: make timers handle large timeouts (Miroslav Bajtoš) * windows: remove superfluous assert statement (Bert Belder) * unix: silence STATIC_ASSERT compiler warnings (Ben Noordhuis) * linux: don't use fopen() in uv_resident_set_memory() (Ben Noordhuis) commit cd10637d0b3c03e28831eca2d66d8bda3216b10c Author: Ben Noordhuis <[email protected]> Date: Mon Apr 22 08:24:57 2013 +0200 linux: don't use fopen() in uv_resident_set_memory() RSS is a reflection of the number of pages that a process has mapped. glibc implements fopen() in terms of mmap() which means that trying to read the number of mapped pages changes it. Switch to open(). commit 105e4dcb231f88c8e9a71cca85be9af9267022f4 Author: Ben Noordhuis <[email protected]> Date: Mon Apr 22 07:46:21 2013 +0200 unix: silence STATIC_ASSERT compiler warnings Fix the following two warnings: src/unix/core.c:74:1: warning: ISO C90 forbids array 'static_assert_failed' whose size can't be evaluated [-Wvla] src/unix/core.c:76:1: warning: ISO C90 forbids array 'static_assert_failed' whose size can't be evaluated [-Wvla] commit a3963883b81ec2c2612511ff3fa885b2944d8457 Author: Bert Belder <[email protected]> Date: Thu Apr 18 02:55:15 2013 +0200 windows: remove superfluous assert statement commit 09ff5100e3ecae807dd19796e08a0b756bc04ddd Author: Miroslav Bajtoš <[email protected]> Date: Tue Apr 16 16:29:48 2013 +0200 windows: make timers handle large timeouts Fixes a bug where timers with very large ti…
jcheng5
referenced
this pull request
in rstudio/httpuv
Oct 22, 2014
Squashed commit of the following: commit 2416581b599d8452d81bac1ae0eab02f34f50136 Merge: 27bce72 2d72854 Author: Joe Cheng <[email protected]> Date: Wed Oct 22 10:35:49 2014 -0700 Merge tag 'v0.10.29' 2014.10.21, Version 0.10.29 (Stable) Changes since version 0.10.28: * darwin: allocate enough space for select() hack (Fedor Indutny) * linux: try epoll_pwait if epoll_wait is missing (Michael Hudson-Doyle) * windows: map ERROR_INVALID_DRIVE to UV_ENOENT (Saúl Ibarra Corretgé) commit 2d728542d3790183417f8f122a110693cd85db14 Author: Saúl Ibarra Corretgé <[email protected]> Date: Tue Oct 21 01:01:03 2014 +0200 2014.10.21, Version 0.10.29 (Stable) Changes since version 0.10.28: * darwin: allocate enough space for select() hack (Fedor Indutny) * linux: try epoll_pwait if epoll_wait is missing (Michael Hudson-Doyle) * windows: map ERROR_INVALID_DRIVE to UV_ENOENT (Saúl Ibarra Corretgé) commit 5e507159c93e2f3f2102552dc56ae8530aec6e49 Author: Saúl Ibarra Corretgé <[email protected]> Date: Sun Jul 6 21:00:59 2014 +0200 windows: map ERROR_INVALID_DRIVE to UV_ENOENT Backport c44f264641bd60bdc53b6e3f2e56d82ba43011d8 for v0.10 branch. commit ef7b783d8d581f49a68f32f426c18b0fff9c78e3 Author: Michael Hudson-Doyle <[email protected]> Date: Mon Sep 15 21:27:05 2014 +1200 linux: try epoll_pwait if epoll_wait is missing It seems that epoll_wait is implemented in glibc in terms of epoll_pwait and new architectures (like arm64) do not implement the epoll_wait syscall at all. So if epoll_wait errors with ENOSYS, just call epoll_pwait. This is a backport of 861de3d71d40bdd22712f0079cd38f41be75010d for v0.10 branch. commit c60d6af011646ed40be93fdf1d83ed2d6d7cc786 Author: Fedor Indutny <[email protected]> Date: Sun Sep 7 23:56:15 2014 +0100 darwin: allocate enough space for select() hack `fd_set`s are way too small for `select()` hack when stream's fd is bigger than 1023. Make `fd_set`s a part of `uv__stream_select_t` structure. fix #1461 Conflicts: src/unix/stream.c commit 71b71289871e31b83a60ad9e278c511b8f2a4a95 Author: Timothy J Fontaine <[email protected]> Date: Thu Jul 31 09:29:01 2014 -0700 Now working on v0.10.29 commit 9c14b616f5fb84bfd7d45707bab4bbb85894443e Author: Timothy J Fontaine <[email protected]> Date: Thu Jul 31 09:28:58 2014 -0700 2014.07.32, Version 0.10.28 (Stable) Changes since version 0.10.27: * windows: fix handling closed socket while poll handle is closing (Saúl Ibarra Corretgé) * unix: return system error on EAI_SYSTEM (Saúl Ibarra Corretgé) * unix: fix bogus structure field name (Saúl Ibarra Corretgé) * darwin: invoke `mach_timebase_info` only once (Fedor Indutny) commit 27bce72beb75e7ef3d2910c7e3a339e5a3299a43 Merge: d84acc6 6e24ce2 Author: Joe Cheng <[email protected]> Date: Thu Jul 24 09:50:12 2014 -0700 Merge tag 'v0.10.27' 2014.05.02, Version 0.10.27 (Stable) Changes since version 0.10.26: * windows: fix console signal handler refcount (Saúl Ibarra Corretgé) * win: always leave crit section in get_proc_title (Fedor Indutny) commit 211bf4ec37a73dea06d15233ffa747e9387b8947 Author: Fedor Indutny <[email protected]> Date: Thu Jun 19 11:27:24 2014 -0400 darwin: invoke `mach_timebase_info` only once According to @aktau, the call to `mach_timebase_info` costs 90% of the total execution time of `uv_hrtime()`. The result of the call is static on all existing platforms, so there is no need in invoking it multiple times. Signed-off-by: Fedor Indutny <[email protected]> commit 58f87691a4077013dc032cd523ab8b0d4595a9e6 Author: Saúl Ibarra Corretgé <[email protected]> Date: Thu Jun 19 09:12:52 2014 +0200 unix: fix bogus structure field name commit dd893814ad37d9fc051c9c2db0ca21d45d7b65e3 Author: Saúl Ibarra Corretgé <[email protected]> Date: Wed Jun 18 01:18:55 2014 +0200 unix: return system error on EAI_SYSTEM commit 12bb46c095032b5106ffbd6feb1931917dcdd9d9 Author: Saúl Ibarra Corretgé <[email protected]> Date: Mon May 12 16:48:52 2014 +0200 windows: fix handling closed socket while poll handle is closing fixes #1278 (backport from master for v0.10 branch) commit c38e97ee4deee7480ab60dc540f374cb472e02d8 Author: Fedor Indutny <[email protected]> Date: Fri Apr 11 03:42:06 2014 +0400 test: fix EPIPE race in spawn_closed_process_io The just created stdin should not be closed by a child process before writing to it, otherwise EPIPE happens. commit 6e24ce23b1e7576059f85a608eca13b766458a01 Author: Timothy J Fontaine <[email protected]> Date: Thu May 1 09:23:46 2014 -0700 2014.05.02, Version 0.10.27 (Stable) Changes since version 0.10.26: * windows: fix console signal handler refcount (Saúl Ibarra Corretgé) * win: always leave crit section in get_proc_title (Fedor Indutny) commit 4f8d4a0135ef4a3ba4b97a2138f9fd07acebb938 Author: Timothy J Fontaine <[email protected]> Date: Thu May 1 09:23:46 2014 -0700 Now working on v0.10.28 commit 4a67d8cc0e00d0c7341ae62c2f73d59811c82c85 Author: Timothy J Fontaine <[email protected]> Date: Mon Apr 14 10:07:33 2014 -0700 build: add vc-set-2012 label commit ffb49220cf83d251fb7681a28992dc29fdadc9c7 Author: Fedor Indutny <[email protected]> Date: Mon Apr 14 13:42:14 2014 +0400 win: always leave crit section in get_proc_title fix #1235 commit 23d130b2095f0e430683f2db40bf7f16ee8744cd Author: Fedor Indutny <[email protected]> Date: Mon Apr 14 15:13:20 2014 +0400 Revert "inet: allow scope in `uv_inet_pton` ip6 check" This reverts commit d30e3ab65acf7b77945658d3e6127ca6af6eec6, because it is a new feature! commit d30e3ab65acf7b77945658d3e6127ca6af6eec6d Author: Fedor Indutny <[email protected]> Date: Sun Apr 13 15:53:11 2014 +0400 inet: allow scope in `uv_inet_pton` ip6 check Note that isn't actually parsing it, since the output value is a `struct in6_addr`. see https://github.com/joyent/node/issues/7395 commit b9d5396a4082b101051ece4f6e3c15a4d5bd7a98 Author: Saúl Ibarra Corretgé <[email protected]> Date: Sat Apr 12 10:09:40 2014 +0200 windows: fix console signal handler refcount Backport of 0c726e7 from master commit 6855205ba5c46023cdc2ea53c960bc903f9b0b7a Author: Fedor Indutny <[email protected]> Date: Mon Apr 7 15:28:59 2014 +0400 Now working on v0.10.27 Signed-off-by: Fedor Indutny <[email protected]> commit d864907611c25ec986c5e77d4d6d6dee88f26926 Author: Fedor Indutny <[email protected]> Date: Mon Apr 7 15:26:13 2014 +0400 2014.04.07, Version 0.10.26 (Stable) Changes since version 0.10.25: * process: don't close stdio fds during spawn (Tonis Tiigi) * build, windows: do not fail on Windows SDK Prompt (Marc Schlaich) * build, windows: fix x64 configuration issue (Marc Schlaich) * win: fix buffer leak on error in pipe.c (Fedor Indutny) * kqueue: invalidate fd in uv_fs_event_t (Fedor Indutny) * linux: always deregister closing fds from epoll (Geoffry Song) * error: add ENXIO for O_NONBLOCK FIFO open() (Fedor Indutny) Signed-off-by: Fedor Indutny <[email protected]> commit 295882ed3238d6bfda61f5a91e1b43eb210fc485 Author: Fedor Indutny <[email protected]> Date: Tue Mar 18 14:32:14 2014 +0400 error: add EMLINK mapping fix joyent/node#7307 commit fd77a5d6c6466f8c9d7ea6221b946599320702bb Author: Tonis Tiigi <[email protected]> Date: Sun Mar 23 12:48:06 2014 +0200 process: don't close stdio fds during spawn This is needed when closed stdio fd is reused for uv_spawn pipe. Fixes #1211 commit cd6db8bbefb11a780977052f1a561920d6d60bbe Author: Marc Schlaich <[email protected]> Date: Tue Feb 11 13:57:01 2014 +0100 build, windows: do not fail on Windows SDK Prompt Backported from master 2f6d4b4 commit aa2fbb364a2fdd5c90cb9e4ca938787b249ae809 Author: Marc Schlaich <[email protected]> Date: Tue Feb 11 14:01:24 2014 +0100 build, windows: fixed x64 configuration issue Backported from master 8010bf9 commit 4ac8c424ea36b069c76e91fde3eb2f42e0e292f9 Author: Fedor Indutny <[email protected]> Date: Thu Mar 13 00:48:55 2014 +0400 win: fix buffer leak on error in pipe.c commit 9b38c01b540b60408f8eb1d9c288656405e25f7e Author: Fedor Indutny <[email protected]> Date: Tue Mar 11 01:44:44 2014 +0400 kqueue: invalidate fd in uv_fs_event_t Invalidate file descriptor when closing `uv_fs_event_t` handle. Note that `uv__io_stop` is just removing `fd` from `loop->watchers` and not actually invalidating all consequent events in a `kevent()` results. fix joyent/node#1101 commit 84f305915fd45c1e55d261db565b3ddfdbc9d4ce Author: Geoffry Song <[email protected]> Date: Wed Feb 5 18:36:24 2014 -0500 linux: always deregister closing fds from epoll If the same file description is open in two different processes, then closing the file descriptor is not sufficient to deregister it from the epoll instance (as described in epoll(7)), resulting in spurious events that cause the event loop to spin repeatedly. So always explicitly deregister it. Fixes #1099. Conflicts: test/test-spawn.c commit 4f72f2145b902fcfefee8fa90419c9bf28d74bc2 Author: Fedor Indutny <[email protected]> Date: Thu Mar 6 20:26:11 2014 +0400 error: add ENXIO for O_NONBLOCK FIFO open() When opening FIFO with `O_NONBLOCK` flag, `ENXIO` could be returned if the readable side hasn't yet opened this FIFO. commit c0c9480e02ec36e9b792a12e2f8a162f2bbcab68 Author: Fedor Indutny <[email protected]> Date: Wed Feb 26 14:08:19 2014 +0400 process: remove debug perror() prints fix #1128 commit 6f98f4efd112b21414ed92a048cda9f6f5978eb7 Author: Saúl Ibarra Corretgé <[email protected]> Date: Tue Feb 25 10:48:26 2014 +0100 unix, windows: map ERANGE errno This is a backport of 2f58bb6 from the master branch commit 10f9120d78fa6351367e52e7fd5f3e8527d54f73 Author: Saúl Ibarra Corretgé <[email protected]> Date: Mon Feb 24 12:57:28 2014 +0100 errno: map EFBIG, ENOPROTOOPT and ETXTBSY This is a backport of: https://github.com/joyent/libuv/commit/107be2bed38afa6279aa53b13b946eb60c204969 https://github.com/joyent/libuv/commit/4a023fc0786780d254e1e4a34a983c36f59d99bf https://github.com/joyent/libuv/commit/aaaefe32cadcfb26d07d625d17d7a2b8cafb4f2d commit 714bec14f601fdf0ff4394f7eeb596935f19ca2e Author: Timothy J Fontaine <[email protected]> Date: Tue Feb 18 13:01:54 2014 -0800 Now working on v0.10.26 commit d778dc588507588b12b9f9d2905078db542ed751 Author: Timothy J Fontaine <[email protected]> Date: Tue Feb 18 13:01:51 2014 -0800 2014.02.19, Version 0.10.25 (Stable) Changes since version 0.10.24: * stream: start thread after assignments (Oguz Bastemur) * unix: correct error when calling uv_shutdown twice (Saúl Ibarra Corretgé) * windows: freeze in uv_tcp_endgame (Alexis Campailla) * sunos: handle rearm errors (Fedor Indutny) commit 703a9e601e976b74ce459e4db9e23fca107d3f4b Author: Fedor Indutny <[email protected]> Date: Mon Jan 20 19:12:47 2014 +0400 sunos: handle rearm errors fix #1078 commit 4f913b669adc1765829ce57b8a022394e363a757 Author: Alexis Campailla <[email protected]> Date: Tue Feb 18 09:50:49 2014 -0800 windows: freeze in uv_tcp_endgame The event_handle field of unused accept requests was not being initialized properly. As a result, uv_tcp_endgame would try to close an invalid handle and this could lead to unexpected behavior. This fixes node.js test test-cluster-disconnect.js on Windows. commit 6e2021ca111a44449932792e0cb578e63705c2a2 Author: Saúl Ibarra Corretgé <[email protected]> Date: Sat Feb 15 16:49:01 2014 +0100 unix: correct error when calling uv_shutdown twice This is a backport of a284b90 for v0.10 branch commit a6ff04d2c48be408cdcd76e5d78f4dc0a8fb9312 Author: Oguz Bastemur <[email protected]> Date: Fri Jan 31 12:02:37 2014 +0100 stream: start thread after assignments Changed the order of the member assignments since the thread may start before the parameters are assigned. This especially happens when the osx scheduler is very busy. commit 79ffe2fb9537a8b9f1db7a2f27a7cd5c3bfb3707 Author: Timothy J Fontaine <[email protected]> Date: Wed Jan 29 09:41:41 2014 -0800 Now working on v0.10.25 commit aecd296b6bce9b40f06a61c5c94e43d45ac7308a Author: Timothy J Fontaine <[email protected]> Date: Wed Jan 29 09:41:36 2014 -0800 2014.01.30, Version 0.10.24 (Stable) Changes since version 0.10.23: * linux: move sscanf() out of the assert() (Trevor Norris) * linux: fix C99/C++ comment (Fedor Indutny) commit 3e2446d18db6ba2c16fa71530565a904aaca1fd2 Author: Fedor Indutny <[email protected]> Date: Wed Jan 29 17:01:35 2014 +0400 linux: fix C99/C++ comment commit 7c8ff3bc2578bbba09ef3f460b8d0f1c16bcd03e Author: Trevor Norris <[email protected]> Date: Wed Jan 22 12:16:06 2014 -0800 linux: move sscanf() out of the assert() If asserts are turned off then the sscanf() wouldn't have run, being placed directly in the assert() itself. commit b8b6588dbe800df727c5f17b762c9cfe5dcd86be Author: Bert Belder <[email protected]> Date: Wed Jan 22 20:30:26 2014 +0100 Now working on v0.10.24 commit dbd218e699fec8be311d85e4788be9e28ae884f8 Author: Bert Belder <[email protected]> Date: Wed Jan 22 20:30:14 2014 +0100 2014.01.23, Version 0.10.23 (Stable) Changes since version 0.10.22: * linux: relax assumption on /proc/stat parsing (Luca Bruno) * openbsd: fix obvious bug in uv_cpu_info (Fedor Indutny) * process: close stdio after dup2'ing it (Fedor Indutny) commit e403a2c486f46c0f5eda8814ff13d4ed4521e5a6 Author: Fedor Indutny <[email protected]> Date: Mon Jan 20 19:30:08 2014 +0400 process: close stdio after dup2'ing it Thus allow passing the same file descriptor as the source of multiple stdios. Committed with the help and code parts from: * Sam Roberts <[email protected]> fix #1074 commit 8bc29b6f5fff71c69987c44e3cfbb3b79b882398 Author: Fedor Indutny <[email protected]> Date: Tue Jan 21 15:05:39 2014 +0400 openbsd: fix obvious bug in uv_cpu_info `int which[]` should not be static here, as the function itself is changing it fix joyent/node#6878 commit 993151bc409c273409dbbaaac192091c864f3823 Author: Luca Bruno <[email protected]> Date: Mon Jan 20 13:56:26 2014 +0100 linux: relax assumption on /proc/stat parsing CPU entries in /proc/stat are not guaranteed to be monotonically increasing, asserting on this assumption can break in cases such as the UltraSparc II machine shown in #1080. Signed-off-by: Luca Bruno <[email protected]> commit 97eda7fd6226be651216ec19ba6146807186bd36 Author: Timothy J Fontaine <[email protected]> Date: Tue Jan 7 14:03:18 2014 -0800 Now working on v0.10.23 commit f526c90eeff271d9323a9107b9a64a4671fd3103 Author: Timothy J Fontaine <[email protected]> Date: Tue Jan 7 14:03:15 2014 -0800 2014.01.08, Version 0.10.22 (Stable) Changes since version 0.10.21: * windows: avoid assertion failure when pipe server is closed (Bert Belder) commit f6422af80ab54eddf5f1344bec7ddab9ab240924 Author: Alex Crichton <[email protected]> Date: Sat Dec 21 20:12:35 2013 -0800 osx: Fix a possible segfault in uv__io_poll In our build infrastructure, I've seen a lot of segfaults recently that were all only happening on OSX. Upon inspecting the coredumps, it appearded that all segfaults happened at the same instruction, and upon translating the assembly back to the source, I found that an array could be indexed with a -1 index before the index was checked to be not -1. As concrete evidence, here is the situation that I found caused the segfault. The instruction in question along with the relevant register values was: mov (%r8,%r15,8),%r12 r8 = 0x7fb0ba800000 r15 = 0xffffffffffffffff r8 + r15 * 8 == 0x7fb0ba7ffff8 It appears that the base of loop->watchers was page aligned, and by going back one word I guess that the page wasn't mapped, causing our segfaults. commit 16c4b21e4dad4624a5a4c23f8e1cff6da0b1ba1c Author: Bert Belder <[email protected]> Date: Sat Dec 21 11:32:22 2013 +0100 test: make test-pipe-server-close pass on linux When a server and a client are both part of the same event loop, and the client connects to the server, the order in which the connect callback and the connection callback are called is unspecified. Apparently on linux the connection callback sometimes happens first, which is not a bug, and should not make this test fail. commit c66340d59b8b35399831fb1c3a12c1efdbd91a53 Author: Bert Belder <[email protected]> Date: Fri Dec 20 19:40:02 2013 -0800 test: add pipe-server-close test Add a regression test for the pipe server close issue on Windows, which was reported in joyent/node#6749 and fixed in 7b16a3f. commit 562d7a49ac206dab2a830aad612d995a8c6fbd97 Author: Bert Belder <[email protected]> Date: Fri Dec 20 19:38:37 2013 -0800 code style: strip trailing whitespace commit 7b16a3f5083ef742384e7511914764c56778da8e Author: Bert Belder <[email protected]> Date: Fri Dec 20 17:33:31 2013 -0800 windows: avoid assertion failure when pipe server is closed When a pipe server is closed, all pending accept requests and their associated HANDLEs are closed to force windows to cancel the ConnectNamedPipe IRP. The returned request has the `pipeHandle` field set to INVALID_HANDLE_VALUE, which trips an assert in uv_pipe_process_accept_req. This patch fixes that. commit 9d60214b3aa837e3930e078983245f1e73cfbb39 Author: Timothy J Fontaine <[email protected]> Date: Wed Dec 18 15:37:33 2013 -0800 Now working on v0.10.22 commit 375ebce068555f0ca8151b562edb5f1b263022db Author: Timothy J Fontaine <[email protected]> Date: Wed Dec 18 15:37:25 2013 -0800 2013.12.19, Version 0.10.21 (Stable) Changes since version 0.10.20: * unix: fix a possible memory leak in uv_fs_readdir (Alex Crichton) commit 7c6bddbe2a697344f441574d61a74a8034d86109 Author: Alex Crichton <[email protected]> Date: Tue Dec 17 13:03:52 2013 -0800 unix: fix a possible memory leak in uv_fs_readdir Some scandir implementations allocate the dirent struct even if the directory is empty, so if `scandir` returns 0 there may still be memory that needs to get deallocated. I have altered uv__fs_readdir to go to the "deallocation exit area" when 0 files are found in the directory and continue to return early on a return value of -1. I went to add a test for this functionality, but it appears that one already exists (reading an empty directory), so I imagine that the valgrind builds must only be happening on linux instead of OSX as well? I have confirmed manually that a program without this fix will infinitely leak memory, and with this fix the memory usage stays constant. commit f3d311edc447cfe0a95c6ca7cbe8301588f180c5 Author: Timothy J Fontaine <[email protected]> Date: Wed Dec 11 20:22:00 2013 -0800 Now working on v0.10.21 commit 04141464dd0fba90ace9aa6f7003ce139b888a40 Author: Timothy J Fontaine <[email protected]> Date: Wed Dec 11 20:21:57 2013 -0800 2013.12.13, Version 0.10.20 (Stable) Changes since version 0.10.19: * linux: fix up SO_REUSEPORT back-port (Ben Noordhuis) * fs-event: fix invalid memory access (huxingyi) commit da323447308280c736ac44946fce752a5dca8243 Author: huxingyi <[email protected]> Date: Thu Oct 24 16:10:44 2013 +0800 fs-event: fix invalid memory access file_info->FileName is not null terminated. commit 47d98b64c45db8335bf7e065351e385cae32323d Author: Alex Gaynor <[email protected]> Date: Fri Nov 29 11:07:43 2013 -0600 doc: Removed use of gendered pronouns commit 7bb7371fc5ad7cdabcf997e5002d5fe8f5e47abd Author: Ben Noordhuis <[email protected]> Date: Wed Nov 27 17:28:02 2013 +0100 build: make `./gyp_uv.py -f eclipse` work The eclipse backend (like the ninja backend) does not support the --generator_output switch. commit 74457d08ba6408d1ce5ff965b113f237c0cf6e51 Author: Ben Noordhuis <[email protected]> Date: Mon Nov 25 16:09:55 2013 +0100 linux: fix up SO_REUSEPORT back-port Commit 3d2c820 back-ports a patch from the master branch that disables the use of SO_REUSEPORT on Linux for reasons mentioned in the commit log. Unfortunately, the back-port was incomplete; another setsockopt() call site in src/unix/udp.c was overlooked. This commit rectifies that. Hat tip to Luca Bruno for helping troubleshoot the issue. commit c3e05bafa5486120117994d11f38172d3752127d Author: Marc Schlaich <[email protected]> Date: Mon Nov 25 16:19:42 2013 +0100 gitignore: ignore *.pyc files The gyp build on Windows produces a *.pyc file as of commit 991409e. commit a43537eeada0aa95a0df02da23e9169b981654ba Author: Ben Noordhuis <[email protected]> Date: Mon Nov 25 12:58:17 2013 +0100 test: back-port EMFILE test from master branch Back-port the test from commit 27795cf from the master branch ("unix: fix accept() EMFILE error handling"). commit 026241ca67717679a7f79d92c4fe1d77f223318c Author: Ben Noordhuis <[email protected]> Date: Wed Nov 13 12:20:07 2013 +0100 unix: unbreak bsd build after bbccafb Unbreak the build on the BSDs after commit bbccafb. Move the new uv__platform_invalidate_fd() function from src/unix/darwin.c to src/unix/kqueue.c. commit 1578a5a371326bd1edabfa146c77d41d4e20928e Author: Timothy J Fontaine <[email protected]> Date: Tue Nov 12 10:54:29 2013 -0800 Now working on v0.10.20 commit 33959f7524090b8d2c6c41e2400ca77e31755059 Author: Timothy J Fontaine <[email protected]> Date: Tue Nov 12 10:54:25 2013 -0800 2013.11.13, Version 0.10.19 (Stable) Changes since version 0.10.18: * darwin: avoid calling GetCurrentProcess (Fedor Indutny) * unix: update events from pevents between polls (Fedor Indutny) * fsevents: support japaneese characters in path (Chris Bank) * linux: don't turn on SO_REUSEPORT socket option (Ben Noordhuis) * build: fix windows smp build with gyp (Geert Jansen) * linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT (Ben Noordhuis) * unix: fix reopened fd bug (Fedor Indutny) * core: fix fake watcher list and count preservation (Fedor Indutny) commit f50ccd52388ffbcbbf0cd21ef7d6562300ef7ebb Author: Fedor Indutny <[email protected]> Date: Tue Nov 12 15:24:33 2013 +0400 core: fix fake watcher list and count preservation Fake watcher list and count should be preserved only if `loop->watchers` was already allocated. commit bbccafbe704090e294481d95f73862bc83f33026 Author: Fedor Indutny <[email protected]> Date: Fri Oct 25 12:56:37 2013 +0400 unix: fix reopened fd bug When fd is closed and new one (with the same number) is opened inside kqueue/epoll/port loop's callback - stale events might invoke callbacks on wrong watchers. Check if watcher was changed after invocation and invalidate all events with the same fd. fix #826 commit 0c76cdb98ffa9a43f169e24b59a3df95f18803f3 Author: Ben Noordhuis <[email protected]> Date: Fri Nov 8 05:10:44 2013 +0100 linux: handle EPOLLHUP without EPOLLIN/EPOLLOUT Work around an epoll quirk where it sometimes reports just the EPOLLERR or EPOLLHUP event. In order to force the event loop to move forward, we merge in the read/write events that the watcher is interested in; uv__read() and uv__write() will then deal with the error or hangup in the usual fashion. Fixes #982. This is a back-port of commit 24bfef2 from the master branch. commit 991409e461e3973f006bf951b3e7513578a41be2 Author: Geert Jansen <[email protected]> Date: Tue Nov 5 08:43:40 2013 +0100 build: fix windows smp build with gyp Gyp will try a parallel build if it detect the system has >1 processor. This functionality depends on the Python "multiprocessing" package. The multiprocessing package on Windows requires that the top-level module is importable as a module, see: http://docs.python.org/2/library/multiprocessing.html#windows This fixes issue #984. This is a back-port of commit 2445467 from the master branch. commit 3d2c820a4efe3954a77b539bb56e7398263069d3 Author: Ben Noordhuis <[email protected]> Date: Wed Oct 30 09:36:47 2013 +0100 linux: don't turn on SO_REUSEPORT socket option On the BSDs, SO_REUSEPORT is pretty much SO_REUSEADDR with some special casing for IP multicast. When two processes (that don't do multicast) bind to the same address, only the last one receives traffic. It allows one to "steal" the bound address from another process. (Both processes have to enable SO_REUSEPORT though, so it only works in a cooperative setting.) On Linux however, it enables port sharing, not stealing - both processes receive a share of the traffic. This is a desirable trait but pre-3.9 kernels don't support the socket option and a libuv program therefore behaves differently with older kernels or on another platform. This is a back-port of commit 9d60f1e from the master branch. Fixes joyent/node#6454. commit 3780e128230618bc3bddc9b3942ee149fadf4ca2 Author: Chris Bank <[email protected]> Date: Sat Nov 2 05:00:50 2013 +0400 fsevents: support japaneese characters in path commit f9960184fd86d43470dc70dcedac32899e532757 Author: Fedor Indutny <[email protected]> Date: Wed Oct 30 21:43:23 2013 +0400 test: add regression test for 29fdb3471 commit 29fdb3471ba993a4d129278129ec04e720890063 Author: Fedor Indutny <[email protected]> Date: Sat Oct 26 01:06:12 2013 +0400 unix: update events from pevents between polls Watchers could be stopped between two `kevent()`/`epoll_wait()` calls (which may happen in the same loop in `uv__io_poll()`), in such cases `watcher->events` could be stale and won't be updated to `watcher->pevents`. Try to use and rely on `watcher->pevents` instead of blindly expecting `watcher->events` to be always correct. commit 08e0e63f3adecafeacaf09f519587c381c6e2ef2 Author: Fedor Indutny <[email protected]> Date: Mon Oct 28 20:51:50 2013 +0400 darwin: avoid calling GetCurrentProcess Use some black-magic from Apple to change process name without getting a "Not responding" tag from Activity Manager. fix #966 commit 939560b6dbbb52252a3d510731431c7c9e03750c Author: Timothy J Fontaine <[email protected]> Date: Fri Oct 18 13:17:52 2013 -0700 Now working on v0.10.19 commit 9ec52963b585e822e87bdc5de28d6143aff0d2e5 Author: Timothy J Fontaine <[email protected]> Date: Fri Oct 18 13:17:48 2013 -0700 2013.10.19, Version 0.10.18 (Stable) Changes since version 0.10.17: * unix: fix uv_spawn() NULL pointer deref on ENOMEM (Ben Noordhuis) * unix: don't close inherited fds on uv_spawn() fail (Ben Noordhuis) * unix: revert recent FSEvent changes (Ben Noordhuis) * unix: fix non-synchronized access in signal.c (Ben Noordhuis) commit 1800efc13806440867b92758d01f0ce97e239e36 Author: Ben Noordhuis <[email protected]> Date: Fri Oct 18 17:10:03 2013 +0200 unix: fix non-synchronized access in signal.c Check the return value of uv__signal_lock(); don't mutate the signal watcher tree in the signal handler if we failed to acquire the lock. commit 38df93cfed1921b4682179c04c298be1b69e6841 Author: Ben Noordhuis <[email protected]> Date: Sat Oct 5 18:15:02 2013 +0200 unix: revert recent FSEvent changes This commit reverts the following commits: 983fa68 darwin: fix 10.6 build error in fsevents.c 684e212 fsevents: use shared FSEventStream ea4cb77 fsevents: FSEvents is most likely not thread-safe 9bae606 darwin: create fsevents thread on demand Several people have reported stability issues on OS X 10.8 and bus errors on the 10.9 developer preview. See also joyent/node#6296 and joyent/node#6251. commit 11d80117936bea8da25d28bcf5402615dd3ead05 Author: Ben Noordhuis <[email protected]> Date: Wed Oct 2 11:17:18 2013 +0200 unix: don't close inherited fds on uv_spawn() fail The cleanup-after-error code path in uv_spawn() was closing file descriptors indiscriminately. Only close file descriptors that we created ourselves, not the ones that are passed in by the user. Fixes joyent/node#6297. commit fc3a21f943d5c91cd27fd7df9a973546101fef22 Author: Ben Noordhuis <[email protected]> Date: Wed Oct 2 10:53:53 2013 +0200 unix: fix uv_spawn() NULL pointer deref on ENOMEM In the cleanup-after-error section of uv_spawn(), check that the pointer is non-NULL - we might end up in said section due to a malloc() failure. commit 8c9cbee1b1fb19786405bdd92af5edfdab4cdbbe Author: Ben Noordhuis <[email protected]> Date: Sat Sep 28 20:50:45 2013 +0200 Revert "unix: set O_NONBLOCK in uv_pipe_open()" It turns out that node.js relies on the blocking behavior of pipes in some cases, notably when forking worker processes. Reopens #941. This reverts commit 8fe4ca686bcb069f670b0381e89c008ca814f8ba. commit 8fe4ca686bcb069f670b0381e89c008ca814f8ba Author: Ben Noordhuis <[email protected]> Date: Sat Sep 28 10:29:53 2013 +0200 unix: set O_NONBLOCK in uv_pipe_open() Don't rely on the caller to set the O_NONBLOCK flag on the file descriptor. Prevents sporadic stalls when the file descriptor is in blocking mode and exactly as many bytes are read as there are available; in that case, libuv will try to read again and block. Node.js was guilty of this. Fixes #941. commit e9df7cbcbbcf8972aaf4ae64174a37c46dd62eb2 Author: Timothy J Fontaine <[email protected]> Date: Tue Sep 24 13:40:44 2013 -0700 Now working on v0.10.18 commit 9670e0a93540c2f0d86c84a375f2303383c11e7e Author: Timothy J Fontaine <[email protected]> Date: Tue Sep 24 13:40:40 2013 -0700 2013.09.25, Version 0.10.17 (Stable) Changes since version 0.10.16: * build: remove GCC_WARN_ABOUT_MISSING_NEWLINE (Ben Noordhuis) * darwin: fix 10.6 build error in fsevents.c (Ben Noordhuis) commit 983fa68e9f8bdf77a94fc46526a798a350ec39ec Author: Ben Noordhuis <[email protected]> Date: Wed Aug 28 11:55:27 2013 +0200 darwin: fix 10.6 build error in fsevents.c Work around an 'initializer element is not constant' build error in src/unix/fsevents.c by turning the const int flags into #defines. Only an issue on OS X 10.6 due to the old compiler it uses. Fixes #908. This is a back-port of commit 82f2472 from the master branch. commit 712835a6733b578d6e8c1bccdfa7febc6454d3b8 Author: Ben Noordhuis <[email protected]> Date: Thu Sep 5 21:32:41 2013 +0200 build: remove GCC_WARN_ABOUT_MISSING_NEWLINE Not compatible with non-Apple gcc builds. Fixes the following build error: gcc-4.8: error: unrecognized command line option '-Wnewline-eof' commit 7e5c63c88da5b88f39ea1ec3d6b049438da91bde Author: Bert Belder <[email protected]> Date: Thu Sep 5 16:45:51 2013 +0200 Now working on v0.10.17 commit 2bce230d81f4853a23662cbeb26fe98010b1084b Author: Bert Belder <[email protected]> Date: Thu Sep 5 16:45:45 2013 +0200 2013.09.06, Version 0.10.16 (Stable) Changes since version 0.10.15: * windows: make uv_shutdown() for write-only pipes work (Bert Belder) * windows: make uv_fs_open() report EINVAL when invalid arguments are passed (Bert Belder) * windows: make uv_fs_open() report _open_osfhandle() failure correctly (Bert Belder) * windows: make uv_fs_chmod() report errors correctly (Bert Belder) * windows: wrap multi-statement macros in do..while block (Bert Belder) commit faf2c5932c89a714fcd6b9668a9b78a986d20701 Author: Bert Belder <[email protected]> Date: Thu Sep 5 08:50:04 2013 +0200 windows/fs: handle _open_osfhandle() failure correctly Until now we assumed that _open_osfhandle() would set _doserrno on failure. This assumption was very wrong in one obvious case, namely when the CRT file descriptor table would fill up. In that case errno is set to EMFILE, but GetLastError() returns zero - which makes sense because it's not a win32 error but rather a CRT problem. commit 812717d0dda831594f91126272b7f5b3e323e184 Author: Bert Belder <[email protected]> Date: Thu Sep 5 08:46:16 2013 +0200 windows/fs: make uv_fs_open() report EINVAL correctly Before, when the user passed an invalid paramter to uv_fs_open, libuv would detect this and call SET_REQ_RESULT to set the result value to -1. SET_REQ_RESULT then stored whatever error code was returned by GetLastError(), which would have no relationship to the actual problem, and might as well be zero. commit 39bef32906573a0dd645cd12c510693dbabf76cf Author: Bert Belder <[email protected]> Date: Thu Sep 5 08:38:07 2013 +0200 windows/fs: wrap multi-statement macros in do..while block commit 61b20e8d469eb82292ef4ca885d824f429fe4b2a Author: Bert Belder <[email protected]> Date: Thu Aug 29 15:04:27 2013 +0200 windows: make uv_shutdown() for write-only pipes work A couple of issues prevented uv_shutdown() from working correctly with write-only pipes. * The pipe handle wasn't opened with the right permissions, so an attempt to probe the state of the write buffer would fail with ERROR_ACCESS_DENIED. * The pipe flags for child process stdio pipes were always set to UV_HANDLE_READABLE and UV_HANDLE_WRITABLE, even in cases where it was actually half-duplex. * There was no code path that lead to closing the pipe handle if the pipe was write-only. commit 851a6624161219c0a18be8b5c9fc4e55d24f53c4 Author: Bert Belder <[email protected]> Date: Sat Aug 24 15:40:53 2013 +0200 windows: make uv_fs_chmod() report errors correctly Before this patch libuv would attempt to use GetLastError() to retrieve the cause of NtQueryInformationFile failure, but that's not how it should be done. commit c8b6895eaffa26c66d2af2b573687ca7d061f26a Author: Bert Belder <[email protected]> Date: Fri Aug 23 18:57:14 2013 +0200 Now working on v0.10.16 commit 221078a8fdd9b853c6b557b3d9a5dd744b4fdd6b Author: Bert Belder <[email protected]> Date: Fri Aug 23 18:57:10 2013 +0200 2013.08.24, Version 0.10.15 (Stable) Changes since version 0.10.14: * fsevents: create FSEvents thread on demand (Ben Noordhuis) * fsevents: use a single thread for interacting with FSEvents, because it's not thread-safe. (Fedor Indutny) * fsevents: share FSEventStream between multiple FS watchers, which removes a limit on the maximum number of file watchers that can be created on OS X. (Fedor Indutny) commit 684e2124e7cbe8f94daeba730e83cbf88963430f Author: Fedor Indutny <[email protected]> Date: Wed Aug 21 01:43:09 2013 +0400 fsevents: use shared FSEventStream It seems that number of simultaneously opened FSEventStreams is limited on OSX (i.e. you can have only fixed number of them on one running system), getting past through this limit will cause `FSEventStreamCreate` to return false and write following message to stderr: (CarbonCore.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-21) To prevent this, we must use only one shared FSEventStream with a paths for all uv_fsevent_t handles, and then filter out events for each handle using this paths again. See https://github.com/joyent/node/issues/5463 Conflicts: include/uv-private/uv-darwin.h src/unix/fsevents.c commit ea4cb77814eeaa7629b29d53ad6a2b8bc4b19046 Author: Fedor Indutny <[email protected]> Date: Wed Aug 14 17:14:35 2013 +0400 fsevents: FSEvents is most likely not thread-safe Perform all operation with FSEventStream in the same thread, where it'll be used. Conflicts: src/unix/fsevents.c commit 9bae606d413327187828155b61babcd52b2d2517 Author: Ben Noordhuis <[email protected]> Date: Tue Aug 13 02:02:12 2013 +0200 darwin: create fsevents thread on demand * Move CF run loop code to fsevents.c. * Create the fsevents thread on demand rather than at startup. * Remove use of ACCESS_ONCE. All accesses to loop->cf_loop are protected by full memory barriers so no reordering can take place. Fixes #872. Conflicts: src/unix/darwin.c commit 24a42a406ae00c2e8060b9f9397365684669db6b Author: Timothy J Fontaine <[email protected]> Date: Wed Aug 21 14:41:26 2013 -0700 Now working on v0.10.15 commit 15d64132151c18b26346afa892444b95e2addad0 Author: Timothy J Fontaine <[email protected]> Date: Wed Aug 21 14:41:23 2013 -0700 2013.08.22, Version 0.10.14 (Stable) Changes since version 0.10.13: * unix: retry waitpid() on EINTR (Ben Noordhuis) commit b2ac4d3bf41bafc1c327b9fa929eee37f05492e8 Author: Ben Noordhuis <[email protected]> Date: Sun Aug 18 17:25:05 2013 +0200 unix: retry waitpid() on EINTR Before this commit, libuv would abort() if waitpid() failed with EINTR. It's unlikely that anyone actually hit this error condition: the major UNIX platforms - with the possible exception of Solaris - don't return EINTR when the WNOHANG flag is specified, as libuv does. However, POSIX allows for an implementation to do whatever here: unless explicitly forbidden, it's allowed and POSIX doesn't restrict implementers in this particular area. Let's opt for robustness and handle EINTR. commit d84acc65a7e48f41e2bc2fea38ed473e4a051d18 Merge: 47fd23f 381312e Author: Joe Cheng <[email protected]> Date: Mon Aug 12 09:46:05 2013 -0700 Merge tag 'v0.10.13' 2013.07.26, Version 0.10.13 (Stable) Changes since version 0.10.12: * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis) commit 2744e1e009fce04e883f7641009b4bbb4c78a8f0 Author: Timothy J Fontaine <[email protected]> Date: Thu Jul 25 10:34:41 2013 -0700 Now working on v0.10.14 commit 381312e1fe6fecbabc943ccd56f0e7d114b3d064 Author: Timothy J Fontaine <[email protected]> Date: Thu Jul 25 10:31:28 2013 -0700 2013.07.26, Version 0.10.13 (Stable) Changes since version 0.10.12: * unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis) commit d779eb53d506d40fbe7903da7b914a5bbd588954 Author: Ben Noordhuis <[email protected]> Date: Tue Jul 23 13:14:44 2013 +0200 unix, windows: fix uv_fs_chown() function prototype Before this commit, uv_fs_chown() and uv_fs_fchown() took the uid and gid as signed integers which is wrong because uid_t and gid_t are unsigned on most all platforms and IDs that don't fit in a signed integer do exist. This is not an ABI change because the size of the uid and gid arguments do not change, only their sign. On Windows, uv_uid_t and uv_gid_t are typedef'd as unsigned char for reasons that are unclear. It doesn't matter: they get cast to ints when used as function arguments. The arguments themselves are unused. Partial fix for joyent/node#5890. commit 3b4e0a216fb4093fa9f6e5d3c9039b5f1d30820b Author: isaacs <[email protected]> Date: Tue Jul 9 13:18:53 2013 -0700 Now working on v0.10.13 commit 58a46221bba726746887a661a9f36fe9ff204209 Author: isaacs <[email protected]> Date: Tue Jul 9 13:18:50 2013 -0700 2013.07.10, Version 0.10.12 (Stable) Changes since version 0.10.11: * linux: add support for MIPS (Andrei Sedoi) * windows: uv_spawn shouldn't reject reparse points (Bert Belder) * windows: use WSAGetLastError(), not errno (Ben Noordhuis) * build: darwin: disable -fstrict-aliasing warnings (Ben Noordhuis) * build: `all` now builds static and dynamic lib (Ben Noordhuis) * unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK) (Ben Noordhuis) commit 37d0209c8911c80115bb0c58b248c7e10bb541a9 Author: Ben Noordhuis <[email protected]> Date: Fri Jul 5 12:04:43 2013 +0200 unix: fix build when !defined(PTHREAD_MUTEX_ERRORCHECK) Ancient versions of glibc (<= 2.3.1) don't have error-checking mutexes. commit 88a2c7ff209935d736f02e79b3369f2e7b646bb8 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 17:13:26 2013 +0200 build: `all` now builds static and dynamic lib The `make all` target now builds both libuv.a and libuv.{so,dylib} rather than just libuv.a. commit 5841852703c02e46d7220f1eb8d89bb8414d7cf3 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 13:02:39 2013 +0200 test: add 'start timer from check handle' test Check that a timer that is started from a check handle gets picked up correctly, i.e. that it influences the timeout used in the next tick of the event loop. commit 488b43ecc5a79143d0697e5e49d834c86c7c9894 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 13:26:45 2013 +0200 test: fix signed/unsigned compiler warning commit a0bc4cca74be7de2a540439920c8f15d0a671b74 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 13:06:26 2013 +0200 build: darwin: disable -fstrict-aliasing warnings gcc 4.2.1 as shipped with Xcode complains incessantly about aliasing warnings, which, while technically true, disregards the fact that the aliased types have the same layout in memory. Squelch the warnings. commit c8c775bd9739e0c9562b925ec482a378b50f97c2 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 26 01:03:36 2013 +0200 windows: use WSAGetLastError(), not errno setsockopt() doesn't touch errno on failure. Use WSAGetLastError() instead. This is a back-port of commit 30a8b44 from the master branch. commit 495d1a09fb863354e5de1c6ab4547be3672ace00 Author: Bert Belder <[email protected]> Date: Wed Jun 19 00:14:58 2013 +0200 windows: uv_spawn shouldn't reject reparse points This fixes an issue where uv_spawn would not try to run a reparse point, and continue to scan the PATH instead. Effectively, it was impossible to spawn a symlinked binary. This commit fixes that. Also see #748 commit 6607e702539f0affa2d1b2926d4e69a1e032c242 Author: Ben Noordhuis <[email protected]> Date: Tue Jun 18 23:50:31 2013 +0200 test: open stdout fd in write-only mode Fixes #771. commit 5096f1e0961896998c4185db866c53a8a8636fab Author: Andrei Sedoi <[email protected]> Date: Thu Jun 13 23:23:42 2013 +0300 linux: add support for MIPS commit 72e440d7e193123c0359fa12a7fabab15d7d9f51 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 12 21:52:05 2013 +0200 Now working on v0.10.12 commit c3b75406a66a10222a589cb173e8f469e9665c7e Author: Ben Noordhuis <[email protected]> Date: Wed Jun 12 21:52:01 2013 +0200 2013.06.13, Version 0.10.11 (Stable) Changes since version 0.10.10: * unix: unconditionally stop handle on close (Ben Noordhuis) * freebsd: don't enable dtrace if it's not available (Brian White) * build: make HAVE_DTRACE=0 should disable dtrace (Timothy J. Fontaine) * unix: remove overzealous assert (Ben Noordhuis) * unix: clear UV_STREAM_SHUTTING after shutdown() (Ben Noordhuis) * unix: fix busy loop, write if POLLERR or POLLHUP (Ben Noordhuis) commit 12210fe578623995d13cc5126427c1c67de4b6e0 Author: Ben Noordhuis <[email protected]> Date: Sat Jun 8 03:20:29 2013 +0200 unix: fix busy loop, write if POLLERR or POLLHUP This fixes a busy loop by working around a quirk with Linux kernels <= 2.6.32 where an EPIPE or ECONNRESET error on a file descriptor that is polled for EPOLLOUT but not EPOLLIN gets reported by epoll_wait() as just EPOLLERR|EPOLLHUP, like this: epoll_wait(5, {{EPOLLERR|EPOLLHUP, {u32=12, u64=12}}}, 1024, 433) = 1 Before this commit, libuv called uv__read() which attempts to read from the file descriptor. With newer kernels and on other operating systems that fails like this: read(12, "", 65536) = -1 EPIPE (Broken pipe) Which tells libuv there is a connection error and it should notify the user of that. On the affected Linux kernels however, the read succeeds with an EOF: read(12, "", 65536) = 0 Which is subsequently passed on to the user. In most cases, the user will close the handle and everything is fine. Node.js however sometimes keeps the handle open in an attempt to flush pending write requests. While libuv doesn't officially support this, unofficially it works... ...except on those older kernels. Because the kernel keeps waking up the event loop without setting POLLOUT and because the read calls EOF but don't error, libuv's I/O state machine doesn't progress. That's why this commit changes uv__stream_io() to also write pending data. While the read() system call doesn't error, the write() system call will. Fixes joyent/node#5504. commit 536c5f8661af4b57f8cc8be43bf482ae27a9fcd8 Author: Ben Noordhuis <[email protected]> Date: Sat Jun 8 03:14:32 2013 +0200 unix: clear UV_STREAM_SHUTTING after shutdown() Fix a state machine buglet where the UV_STREAM_SHUTTING flag didn't get cleared. commit 3ab354367b2ff16a5ade1b585fdf7e10599084d3 Author: Ben Noordhuis <[email protected]> Date: Fri Jun 7 11:28:31 2013 +0200 unix: remove overzealous assert Several node.js users are hitting this assert under what appear to be mostly benign conditions. In other words, it's unclear whether it's catching real bugs or just has wrong expectations. An aborting process is rather disruptive so I'm removing the assert from the stable branch and relanding it in the master branch. commit f84becc64ea3f4653a2ee95319dab0aeee7c4044 Author: Timothy J Fontaine <[email protected]> Date: Thu Jun 6 10:48:24 2013 -0700 build: make HAVE_DTRACE=0 should disable dtrace commit c8ffee3460a1b507bbc7f5f83e4e09e4a769db76 Author: Brian White <[email protected]> Date: Fri May 31 18:37:45 2013 -0400 freebsd: don't enable dtrace if it's not available commit 8e4b248ca6cf66367476624899442974d17092f0 Author: Ben Noordhuis <[email protected]> Date: Wed Jun 5 15:01:34 2013 +0200 unix: unconditionally stop handle on close Make sure the handle is fully stopped by the time uv__stream_close() calls uv_read_stop(). Fixes the following assertion: Assertion failed: (!uv__io_active(&stream->io_watcher, UV__POLLOUT) || !ngx_queue_empty(&stream->write_completed_queue) || !ngx_queue_empty(&stream->write_queue) || stream->shutdown_req != NULL || stream->connect_req != NULL), function uv_read_stop, file ../deps/uv/src/unix/stream.c, line 1329. Fixes joyent/node#5622. commit e9ae62d13a38b89fee60ed502307530bc2b8f520 Author: isaacs <[email protected]> Date: Tue Jun 4 12:00:31 2013 -0700 Now working on v0.10.11 commit 0d95a88bd35fce93863c57a460be613aea34d2c5 Author: isaacs <[email protected]> Date: Tue Jun 4 12:00:29 2013 -0700 2013.06.05, Version 0.10.10 (Stable) Changes since version 0.10.9: * include: document uv_update_time() and uv_now() (Ben Noordhuis) * linux: fix cpu model parsing on newer arm kernels (Ben Noordhuis) * linux: fix memory leak in uv_cpu_info() error path (Ben Noordhuis) * linux: don't ignore OOM errors in uv_cpu_info() (Ben Noordhuis) * unix, windows: move uv_now() to uv-common.c (Ben Noordhuis) * darwin: make uv_fs_sendfile() respect length param (Wynn Wilkes) commit b9eb402fb047b9c10c9395ea555d22bc869a5901 Author: Bert Belder <[email protected]> Date: Thu May 30 22:54:44 2013 +0200 include: remove lame comment from uv.h commit b4c658c3c0e650590cc0496833fead4f29deea75 Author: Wynn Wilkes <[email protected]> Date: Wed May 29 12:13:34 2013 -0600 darwin: make uv_fs_sendfile() respect length param The darwin sendfile implementation uses the &len parameter as input and output. The code was sending 0 (not using the value of req->len) so the behavior wasn't what the caller was expecting. This makes sure to initialize len with req->len to ensure that the caller can send portions of a file (not always everything to the end of the file). commit 081f7018ecc1c66a76f76c4b5cacb327820674b9 Author: Bert Belder <[email protected]> Date: Wed May 29 18:32:25 2013 +0300 test: use c-style comments Fixes a compilation problem on OS X caused by the use of c++-style comments in test-osx-select.c. commit e0bdb3dbc916d8311538de2b783c53e9739bf652 Author: Ben Noordhuis <[email protected]> Date: Wed May 29 16:13:34 2013 +0200 unix, windows: move uv_now() to uv-common.c commit b93cf8b594b5eaf4617174e674961fd3db3fb0c6 Author: Ben Noordhuis <[email protected]> Date: Wed May 29 01:37:36 2013 +0200 linux: don't ignore OOM errors in uv_cpu_info() commit 31282a97e70b24df7ebe4692967fee2a48aa2096 Author: Ben Noordhuis <[email protected]> Date: Wed May 29 01:25:37 2013 +0200 linux: fix memory leak in uv_cpu_info() error path Any memory allocated to hold CPU model strings wasn't freed on error. commit 92c72f58bf59ee51a1680dd52b0e91a0ccae485d Author: Ben Noordhuis <[email protected]> Date: Wed May 29 00:24:02 2013 +0200 linux: fix cpu model parsing on newer arm kernels The format of /proc/cpuinfo on ARM kernels >= 3.8 has changed. Scan for the string "model name" (like x86) first, "Processor" second. Fixes #812. commit dfff2e9e2336ac7b89234c3f7744a73fc6560bb1 Author: Ben Noordhuis <[email protected]> Date: Tue May 28 23:20:35 2013 +0200 include: document uv_update_time() and uv_now() commit 21c12b824a07be22a24547904b50ff022db11dd7 Author: isaacs <[email protected]> Date: Tue May 28 12:08:49 2013 -0700 Now working on v0.10.10 commit a195f9ace23d92345baf57582678bfc3017e6632 Author: isaacs <[email protected]> Date: Tue May 28 12:08:46 2013 -0700 2013.05.29, Version 0.10.9 (Stable) Changes since version 0.10.8: * unix: fix stream refcounting buglet (Ben Noordhuis) * unix: remove erroneous asserts (Ben Noordhuis) * unix: add uv__is_closing() macro (Ben Noordhuis) * unix: stop stream POLLOUT watcher on write error (Ben Noordhuis) commit b329d51ef4ce32f34c21a016a7c311ddeb077878 Author: Ben Noordhuis <[email protected]> Date: Sun May 26 23:44:55 2013 +0200 unix: stop stream POLLOUT watcher on write error The node.js test suite sometimes hits the assert that was added in commit 4146805 that checks if there are connect, write or shutdown requests pending when the user calls uv_read_stop() while the stream is primed for writing. The libuv user (i.e. node.js) is supposed to close the stream on error. Because uv__stream_close() calls uv_read_stop(), it's possible that the POLLOUT watcher is still active. commit 8e16f8e0564a7b853c2cb0f92572e7959c6cadae Author: Ben Noordhuis <[email protected]> Date: Sun May 26 23:02:17 2013 +0200 unix: add uv__is_closing() macro commit b38c9c1004993ca4f642629f5af1b7b09bbc6887 Author: Ben Noordhuis <[email protected]> Date: Sat May 25 02:36:45 2013 +0200 unix: remove erroneous asserts As of commit c53fe81, it's legal for write_queue_size > 0 when the write_queue itself is empty. Sounds illogical but it means there are error-state write requests in the write_completed_queue that will touch up the write_queue_size on the next tick of the event loop. Remove a few stray asserts that still checked for the old situation. commit 636a13b8c46c52413e1da1795a952bfc738f3c55 Author: Ben Noordhuis <[email protected]> Date: Thu May 23 07:16:00 2013 +0200 unix: fix stream refcounting buglet Fix a buglet where uv_read_stop() would mark the handle as stopped even when there are in-progress write requests. This bug is unlikely to have affected anyone, the only case where it has a user-visible effect is when: a) the handle has been stopped for reading but not writing, and b) it's the last active handle in the event loop's pollset If both conditions are met, it's possible for the event loop to terminate prematurely. This reapplies commit 80f2f82 which was temporarily reverted in fe7b154 because it was making a lot of node.js tests fail on OS X with the following assertion: Assertion failed: (!uv__is_active(handle)), function uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165. Expecting that the handle is inactive when the state is UV_CLOSING turns out to be a bad assumption: it's possible that the handle is executing (for example) a shutdown request when uv__finish_close() is called. That's okay, uv__stream_destroy() takes care of that. The issue wasn't specific to OS X, it was just more visible on that platform. (Slow) debug builds on Linux exhibited the same behavior. commit 7d5024e7e6564c36b99af39db075b0c9d75797f9 Author: isaacs <[email protected]> Date: Fri May 24 14:37:56 2013 -0700 Now working on v0.10.9 commit 0f39be12926fe2d8766a9f025797a473003e6504 Author: isaacs <[email protected]> Date: Fri May 24 14:37:53 2013 -0700 2013.05.25, Version 0.10.8 (Stable) Changes since version 0.10.7: * windows: make uv_spawn not fail under job control (Bert Belder) * darwin: assume CFRunLoopStop() isn't thread-safe (Fedor Indutny) * win: fix UV_EALREADY incorrectly set (Bert Belder) * darwin: make two uv__cf_*() functions static (Ben Noordhuis) * darwin: task_info() cannot fail (Ben Noordhuis) * unix: add mapping for ENETDOWN (Ben Noordhuis) * unix: implicitly signal write errors to libuv user (Ben Noordhuis) * unix: fix assert on signal pipe overflow (Bert Belder) * unix: turn off POLLOUT after stream connect (Ben Noordhuis) commit fe7b154476145ebc69ab70d3ca1d195116a00065 Author: Ben Noordhuis <[email protected]> Date: Fri May 24 21:23:09 2013 +0200 Revert "unix: fix stream refcounting buglet" This change is making 45 out of 527 node.js tests fail on OS X with the following assertion: Assertion failed: (!uv__is_active(handle)), function uv__finish_close, file ../../deps/uv/src/unix/core.c, line 165. It's likely a manifestation of a bug elsewhere but, because there's a new node.js release going out tonight, I'm reverting it for now. This reverts commit 80f2f826bf90b84e659321c0b7fd8af419acb85e. Conflicts: src/unix/stream.c commit 41468050745bc135247f587eae1c38e958fd8377 Author: Ben Noordhuis <[email protected]> Date: Thu May 23 07:37:36 2013 +0200 unix: turn off POLLOUT after stream connect Clear the POLLOUT flag after we're done connecting. Not doing so isn't really harmful but it may cause the event loop to wake up more often than it has to. commit 80f2f826bf90b84e659321c0b7fd8af419acb85e Author: Ben Noordhuis <[email protected]> Date: Thu May 23 07:16:00 2013 +0200 unix: fix stream refcounting buglet Fix a buglet where uv_read_stop() would mark the handle as stopped even when there are in-progress write requests. This bug is unlikely to have affected anyone, the only case where it has a user-visible effect is when: a) the handle has been stopped for reading but not writing, and b) it's the last active handle in the event loop's pollset If both conditions are met, it's possible for the event loop to terminate prematurely. commit c5d570ddba7b3e95fdade96758df0eb2d24cf42f Author: Bert Belder <[email protected]> Date: Thu May 23 14:44:45 2013 +0200 unix: fix assert on signal pipe overflow An incorrect assert() statement was causing libuv to crash when writing to an internal signal pipe would result in EAGAIN/EWOULDBLOCK. This commit doesn't solve the underlying issue that the signal pipe can overflow. This should fix joyent/node#5538 commit c53fe815442559fe58f362279bdc63f5483d6fdb Author: Ben Noordhuis <[email protected]> Date: Wed May 22 16:41:52 2013 +0200 unix: implicitly signal write errors to libuv user Fix an infinite loop in the example below when the stream encounters an EPIPE/ECONNRESET/etc. error: // keep writing until we start buffering while (stream->write_queue_size == 0) { uv_write_t* req = make_write_req(); uv_buf_t buf = uv_buf_init("PING", 4); uv_write(req, stream, &buf, 1, write_cb); } uv_write() does not return an error code on write errors, the error is only reported to the callback. Before this commit, uv_write() left stream->write_queue_size untouched on error, meaning the caller had no way to find out about that error until the next tick of the event loop - which in the example above leads to an infinite loop because that next tick is indefinitely postponed. This commit works around that at the cost of some added internal complexity. Fixes joyent/node#5516. commit 739a5b25b5704d526a46a953da8b9b8db31770d4 Author: Ben Noordhuis <[email protected]> Date: Mon May 20 20:04:45 2013 +0200 unix: add mapping for ENETDOWN commit a1cb52a3ebe13f8e26a48e194e595e95c677de30 Author: Ben Noordhuis <[email protected]> Date: Mon May 20 14:35:10 2013 +0200 darwin: task_info() cannot fail And if it does: assert, don't return errno. It's a mach function, it doesn't set errno. commit e515d71592afe66ddecd6bf2b1409848811cf7ff Author: Ben Noordhuis <[email protected]> Date: Fri May 17 14:42:14 2013 +0200 darwin: make two uv__cf_*() functions static commit db7dc6899d9badcfb99016ba87da2a66eae86dad Author: Bert Belder <[email protected]> Date: Sat May 18 20:45:36 2013 +0200 win: fix UV_EALREADY incorrectly set UV_EALREADY itself is already a libuv error, it should be set with uv__set_artifical_error and not with uv__set_sys_error. Closes #802 commit d5fa633ef22bd40c81af85dd2ee3882cce3c91c4 Author: Fedor Indutny <[email protected]> Date: Fri May 17 20:31:39 2013 +0400 darwin: assume CFRunLoopStop() isn't thread-safe Use signaling mechanism for loop termination, because CFRunLoopStop() is most likely not a thread-safe function and invoking it from other thread may sometimes result in a "dead-lock". fix #799 commit 4f61ab2058c9baffa01d9c865a376ed8d3c65820 Author: Bert Belder <[email protected]> Date: Thu May 16 21:29:40 2013 +0200 windows: make uv_spawn not fail under job control * Fix a potential issue introduced with 415f4d3, namely that uv_spawn can fail when the current process is under job control. This would happen on Windows versions that don't support nested jobs (versions prior to Windows 8 / Server 2012). * Change the `uv__init_global_job_handle` function signature to match what `uv_once` expects. * Add a bunch of comments that clarify how we're using job control, and how we're dealing with job control that might be established by our parent process. commit 13496e9c1ab905af0c43a3dda7bdec7dca73d1b3 Author: Bert Belder <[email protected]> Date: Tue May 14 16:50:22 2013 -0700 Now working on v0.10.8 commit 028baaf0846b686a81e992cb2f2f5a9b8e841fcf Author: Bert Belder <[email protected]> Date: Tue May 14 16:50:19 2013 -0700 2013.05.15, Version 0.10.7 (Stable) Changes since version 0.10.6: * windows: kill child processes when the parent dies (Bert Belder) commit 415f4d3e4c7ac25abf723eed3f5b40e63e045785 Author: Bert Belder <[email protected]> Date: Tue May 14 16:48:03 2013 -0700 windows: kill child processes when the parent dies This makes Windows behave just like Unix. This does not affect processes that are spawned with the UV_PROCESS_DETACHED flag set. commit 1fd10deec4de70ec3c13765948ec2726a0023c23 Author: isaacs <[email protected]> Date: Tue May 14 14:40:01 2013 -0700 Now working on v0.10.7 commit 11e6613e6260d95c8cf11bf89a2759c24649319a Author: isaacs <[email protected]> Date: Tue May 14 14:39:58 2013 -0700 2013.05.15, Version 0.10.6 (Stable) Changes since version 0.10.5: * stream: fix osx select hack (Fedor Indutny) * stream: fix small nit in select hack, add test (Fedor Indutny) * build: link with libkvm on openbsd (Ben Noordhuis) * stream: use harder sync restrictions for osx-hack (Fedor Indutny) * unix: fix EMFILE error handling (Ben Noordhuis) * darwin: fix unnecessary include headers (Daisuke Murase) * darwin: rename darwin-getproctitle.m (Ben Noordhuis) * build: convert predefined $PLATFORM to lower case (Elliot Saba) * build: set soname in shared library (Ben Noordhuis) * build: make `make test` link against .a again (Ben Noordhuis) * darwin: fix ios build, don't require ApplicationServices (Ben Noordhuis) * build: only set soname on shared object builds (Timothy J. Fontaine) commit 0564ee4a66956df1f3e0294e02296158e984d728 Author: Miroslav Bajtoš <[email protected]> Date: Wed Apr 17 00:33:25 2013 +0200 test, sunos: disable process_title test Disable unit test failing due to missing implementation of uv_(set|get)_process_title for Sun OS (SmartOS). Based on discussion with @tjfontaine, such implementation is difficult if possible at all and it won't be done anytime soon. Thus there is no point in keeping the failing test around. commit 55c150abfc11ad6c23674c196ed914db0f942224 Author: Timothy J Fontaine <[email protected]> Date: Mon May 13 15:48:32 2013 -0700 build: only set soname on shared object builds commit f22163c233d4a9dedfe38ebb18a1a414cd25ba62 Author: Ben Noordhuis <[email protected]> Date: Mon May 13 20:06:25 2013 +0200 darwin: fix ios build, don't require ApplicationServices commit a11d16d8f5888aee56f129ddbd54c6130a881d2c Author: Ben Noordhuis <[email protected]> Date: Sun May 12 16:42:30 2013 +0200 build: make `make test` link against .a again Commit 3eb6eb3 links the .so with -Wl,-soname which breaks the `make test` target: run-tests is linked against (for example) libuv.so.0.11 while the actual file name is libuv.so. That's relatively easy to fix by getting creative with rpaths but it's even easier to fix by simply linking statically. It also means I no longer have to remember to set LD_BIND_NOW when profiling the benchmarks. commit 3eb6eb35ccf1aedbd2297c98b73df3cb81215e3a Author: Ben Noordhuis <[email protected]> Date: Sun May 12 14:48:58 2013 +0200 build: set soname in shared library commit 96a2df80846af3769f6c0d432cae2c5963c51e2e Author: Elliot Saba <[email protected]> Date: Sat May 11 14:48:52 2013 -0700 build: convert predefined $PLATFORM to lower case commit fe2a3150c0244759154c4cc472af12eca79df8a8 Author: Miroslav Bajtoš <[email protected]> Date: Mon Apr 15 21:03:05 2013 +0200 test: add error logging to tty unit test commit af6e865a076af031213f9afc488c28306d6bc3d2 Author: Miroslav Bajtoš <[email protected]> Date: Mon Apr 15 20:36:56 2013 +0200 test: fix process_title failing on linux Shorten the test string from 40 to 38 characters because the title length is limited to 39 characters. Truncation of long titles was introduced intentionally by commit a0c1d84 (see discussion in joyent/node#5006). commit 2c21050956206b5e7962e86f4bdbaade1a44b6ae Author: Miroslav Bajtoš <[email protected]> Date: Sat Apr 20 06:43:31 2013 +0200 test: add RETURN_SKIP and RETURN_TODO macros Added two new flags to identify tests that are intentionally ignored (usually because we don't want to implement the tested functionality on current platform) and test serving as TODO list (usually indicating that the tested functionality should be implemented on current plaform in the near future.) commit 9b801d551b70bd4b19e1b29fd3a257bec8051842 Author: Ben Noordhuis <[email protected]> Date: Thu May 2 13:59:18 2013 +0200 darwin: rename darwin-getproctitle.m Rename it to darwin-getproctitle.c, it doesn't need an Objective-C compiler. Fix up -Wpedantic warnings about void to function pointer casts and include <ApplicationServices/ApplicationServices.h> to get the GetCurrentProcess() function prototype. commit 4b0fac89907380a62c7acc15303a39839f05e011 Author: Daisuke Murase <[email protected]> Date: Thu May 2 10:06:03 2013 +0900 darwin: fix unnecessary include headers This file doesn't use any Cocoa functions, CoreFoundation.h is enough here. This line causes compilation error on iO…
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This tests passes on node v0.4, but fails on node v0.5. v0.5 seems to generally lack error codes for various error events related to UNIX pipes.