Commit Graph

2389 Commits

Author SHA1 Message Date
Bert Belder
66ae0ff562 process: make the 'status' parameter for exit_cb an int64_t
This means we no longer have to strip the high bit from the process exit
code on Windows, which is problematic because an unhandled SEH exception
can make a process exit with a status code that has the high bit set.
2013-08-23 18:35:09 +02:00
Bert Belder
ed82eae13a windows: make uv_spawn() failure more predictable
* It will now report some types of errors synchronously, to bring it on
  par with uv-unix. Fixes #865.

* Failure to find the target executable will now set up stdio pipes
  correctly, so the user can assume that when uv_spawn() returns 0 these
  pipes will never trigger asserts in libuv's guts.
2013-08-23 18:34:14 +02:00
Fedor Indutny
cd2794c01f 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
2013-08-22 16:35:13 +04:00
Timothy J Fontaine
abcad99e23 Now working on v0.11.9 2013-08-21 10:25:40 -07:00
Timothy J Fontaine
a5260462db 2013.08.22, Version 0.11.8 (Unstable)
Changes since version 0.11.7:

* unix: fix missing return value warning in stream.c (Ben Noordhuis)

* build: serial-tests was added in automake v1.12 (Ben Noordhuis)

* windows: fix uninitialized local variable warning (Ben Noordhuis)

* windows: fix missing return value warning (Ben Noordhuis)

* build: fix string comparisons in autogen.sh (Ben Noordhuis)

* windows: move INLINE macro, remove UNUSED (Ben Noordhuis)

* unix: clean up __attribute__((quux)) usage (Ben Noordhuis)

* sunos: remove futimes() macro (Ben Noordhuis)

* unix: fix uv__signal_unlock() prototype (Ben Noordhuis)

* unix, windows: allow NULL async callback (Ben Noordhuis)

* build: apply dtrace -G to all object files (Timothy J. Fontaine)

* darwin: fix indentation in uv__hrtime() (Ben Noordhuis)

* darwin: create fsevents thread on demand (Ben Noordhuis)

* darwin: reduce fsevents thread stack size (Ben Noordhuis)

* darwin: call pthread_setname_np() if available (Ben Noordhuis)

* build: fix automake serial-tests check again (Ben Noordhuis)

* unix: retry waitpid() on EINTR (Ben Noordhuis)

* darwin: fix ios build error (Ben Noordhuis)

* darwin: fix ios compiler warning (Ben Noordhuis)

* test: simplify test-ip6-addr.c (Ben Noordhuis)

* unix, windows: fix ipv6 link-local address parsing (Ben Noordhuis)

* fsevents: FSEvents is most likely not thread-safe (Fedor Indutny)

* windows: omit stdint.h, fix msvc 2008 build error (Ben Noordhuis)
2013-08-21 10:25:37 -07:00
Ben Noordhuis
8531046a86 windows: omit stdint.h, fix msvc 2008 build error
Don't include <stdint.h>, it's not available when compiling with MSVC
2008 and we don't need it in the first place - just cast the argument
to `char *` rather than `uintptr_t`.

Fixes #893.
2013-08-20 14:06:35 +02:00
Fedor Indutny
303ae3b958 fsevents: FSEvents is most likely not thread-safe
Perform all operation with FSEventStream in the same thread, where it'll
be used.
2013-08-20 13:04:47 +04:00
Ben Noordhuis
602b1c69e1 unix, windows: fix ipv6 link-local address parsing
uv_ip6_addr() copies the address part to a temporary buffer when it
contains a link-local suffix ('<address>%<interface>'). Before this
commit, it didn't zero-terminate the address properly: it put the nul
byte at the end of the temporary buffer rather than at the end of the
address string, meaning the buffer looked like this:

    <address> <garbage> '\0'

Fixes the following valgrind warning:

    ==16170== Conditional jump or move depends on uninitialised value(s)
    ==16170==    at 0x43602C: inet_pton6 (inet.c:228)
    ==16170==    by 0x435CE1: uv_inet_pton (inet.c:163)
    ==16170==    by 0x436FD0: uv_ip6_addr (uv-common.c:175)
    ==16170==    by 0x434717: test_ip6_addr_scope (test-ip6-addr.c:89)
    ==16170==    by 0x43455B: call_iface_info_cb (test-ip6-addr.c:45)
    ==16170==    by 0x43462B: foreach_ip6_interface (test-ip6-addr.c:59)
    ==16170==    by 0x434791: run_test_ip6_addr_link_local (test-ip6-add
    ==16170==    by 0x4061E8: run_test_part (runner.c:396)
    ==16170==    by 0x404F4B: main (run-tests.c:58)
    ==16170==
    ==16170== Conditional jump or move depends on uninitialised value(s)
    ==16170==    at 0x4C2AD8A: __GI_strchr (mc_replace_strmem.c:224)
    ==16170==    by 0x435ECB: inet_pton6 (inet.c:231)
    ==16170==    by 0x435CE1: uv_inet_pton (inet.c:163)
    ==16170==    by 0x436FD0: uv_ip6_addr (uv-common.c:175)
    ==16170==    by 0x434717: test_ip6_addr_scope (test-ip6-addr.c:89)
    ==16170==    by 0x43455B: call_iface_info_cb (test-ip6-addr.c:45)
    ==16170==    by 0x43462B: foreach_ip6_interface (test-ip6-addr.c:59)
    ==16170==    by 0x434791: run_test_ip6_addr_link_local (test-ip6-add
    ==16170==    by 0x4061E8: run_test_part (runner.c:396)
    ==16170==    by 0x404F4B: main (run-tests.c:58)

Fixes #890.
2013-08-19 22:38:51 +02:00
Ben Noordhuis
dfce87c94f test: simplify test-ip6-addr.c
Drop the callback-driven approach in favor of a simple loop. Reduces
the line count and makes the flow of execution a little easier to
follow.
2013-08-19 22:37:48 +02:00
Ben Noordhuis
12bad62add darwin: fix ios compiler warning
uv__fsevents_loop_delete() returns void. Remove the 'return 0'
statement.
2013-08-19 13:27:25 +02:00
Ben Noordhuis
b03192ed6f darwin: fix ios build error
Include <errno.h> and <stdlib.h>.  They're being pulled in implicitly
on OS X but apparently that's not the case with iOS builds.

Build breakage introduced in 5ff6f85 by yours truly. Mea culpa.

Fixes #885 and #891.
2013-08-19 13:26:57 +02:00
Ben Noordhuis
389fc448df Merge remote-tracking branch 'origin/v0.10' 2013-08-18 17:48:52 +02:00
Ben Noordhuis
b2ac4d3bf4 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.
2013-08-18 17:45:52 +02:00
Ben Noordhuis
acf1310bb0 build: fix automake serial-tests check again
This effectively undoes the following commits:

    a97685e build: add automake serial-tests version check
    e4c1483 build: serial-tests was added in automake v1.12

After much trial and error I've come to the conclusion that you cannot
reliably test for the automake version inside configure.ac itself.

Feature checks (testing for the presence of macros with m4_ifdef) is
not reliable when the macro is "lazy-loaded" by aclocal: m4 won't see
its definition unless it's actually used in configure.ac, hence checking
for obsolete macros like AM_ENABLE_MULTILIB and AM_WITH_REGEX is not a
reliable proxy for the automake version - both are are lazy-loaded.

That's why this commit moves the version check to autogen.sh, creates
a m4 file with automake options on the fly and includes that in
configure.ac.

Thank you, automake maintainers, for making hard what should be easy.
That's an hour of my life I won't be getting back!
2013-08-17 15:08:49 +02:00
Ben Noordhuis
5ff6f85f58 darwin: call pthread_setname_np() if available
When setting the process title, also call pthread_setname_np() when
supported (OS X >= 10.6 and iOS >= 3.2.)
2013-08-15 21:52:26 +02:00
Ben Noordhuis
c82e7033a5 darwin: reduce fsevents thread stack size
The fsevents watcher thread only needs a minimal amount of stack space
in order to run. Restrict its stack size so there's more address space
left for the libuv user.
2013-08-13 11:42:04 +02:00
Ben Noordhuis
06c4fa67ed 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.
2013-08-13 11:41:48 +02:00
Ben Noordhuis
ffcf5d1a7f darwin: fix indentation in uv__hrtime() 2013-08-13 11:39:56 +02:00
Timothy J Fontaine
1a177d7028 build: apply dtrace -G to all object files
fixes #871
2013-08-12 09:48:25 -07:00
Ben Noordhuis
1510ce81fd unix, windows: allow NULL async callback
Allow a NULL callback so the user doesn't have to provide a dummy when
the actual event is processed by e.g. a check handle callback.
2013-08-12 08:55:51 +02:00
Ben Noordhuis
c6adab2e27 unix: fix uv__signal_unlock() prototype 2013-08-12 07:55:34 +02:00
Ben Noordhuis
1920513735 sunos: remove futimes() macro
Remove a macro from src/unix/internal.h that aliases futimes() to
futimesat(). Deal with the platform inconsistency in src/unix/fs.c.
2013-08-12 07:46:22 +02:00
Ben Noordhuis
fd23dbf5c6 unix: clean up __attribute__((quux)) usage
Macro-ify __attribute__((destructor)) and __attribute__((unused)).

The macros are no-ops when the compiler does not support function
attributes.
2013-08-12 07:41:49 +02:00
Ben Noordhuis
1e500266eb windows: move INLINE macro, remove UNUSED
Move the INLINE macro from src/uv-common.h to src/win/internal.h, it's
not used in src/unix/ or src/

Remove the UNUSED macro. It's, well, unused.
2013-08-12 07:22:19 +02:00
Ben Noordhuis
0e4fa705f0 build: fix string comparisons in autogen.sh
Compare strings with '=', not '=='.  The second form doesn't work with
all shells.

Fixes #876.
2013-08-11 12:15:56 +02:00
Ben Noordhuis
db1dccb9ec windows: fix missing return value warning
Fixes the following warning:

    src\uv-common.c(476): warning C4715:
    'uv__getaddrinfo_translate_error' : not all control paths return
    a value

The function never returns - the final statement is a call to abort() -
but it seems MSVC's program flow analyzer is too weak to figure that
out.
2013-08-09 19:06:31 +02:00
Ben Noordhuis
85b92ad5bf windows: fix uninitialized local variable warning
Pass the user-returned buffer to the read calback. Fixes the following
warning:

    src\win\tcp.c(439): warning C4700: uninitialized local variable
    'buf'
2013-08-09 19:00:52 +02:00
Ben Noordhuis
e4c1483b48 build: serial-tests was added in automake v1.12
Commit a97685e added a check that tries to ascertain whether the
serial-tests option is supported by automake. It assumed that said
option was added in automake v1.11 but it turns out that's wrong, it
wasn't added until v1.12. Update the check.

Of course, none of this would have been necessary if the automake people
had simply added a macro that tells you if serial-tests is supported or
not.
2013-08-08 22:30:08 +02:00
Ben Noordhuis
6837e480fd unix: fix missing return value warning in stream.c 2013-08-08 21:10:37 +02:00
Ben Noordhuis
d34fad7325 Now working on v0.11.8 2013-08-06 23:19:01 +02:00
Ben Noordhuis
3cad361f87 2013.08.07, Version 0.11.7 (Unstable)
Changes since version 0.11.6:

* unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis)

* unix, windows: remove unused variables (Brian White)

* test: fix signed/unsigned comparison warnings (Ben Noordhuis)

* build: dtrace shouldn't break out of tree builds (Timothy J. Fontaine)

* unix, windows: don't read/recv if buf.len==0 (Ben Noordhuis)

* build: add mingw makefile (Ben Noordhuis)

* unix, windows: add MAC to uv_interface_addresses() (Brian White)

* build: enable AM_INIT_AUTOMAKE([subdir-objects]) (Ben Noordhuis)

* unix, windows: make buf arg to uv_fs_write const (Ben Noordhuis)

* sunos: fix build breakage introduced in e3a657c (Ben Noordhuis)

* aix: fix build breakage introduced in 3ee4d3f (Ben Noordhuis)

* windows: fix mingw32 build, define JOB_OBJECT_XXX (Yasuhiro Matsumoto)

* windows: fix mingw32 build, include limits.h (Yasuhiro Matsumoto)

* test: replace sprintf() with snprintf() (Ben Noordhuis)

* test: replace strcpy() with strncpy() (Ben Noordhuis)

* openbsd: fix uv_ip6_addr() unused variable warnings (Ben Noordhuis)

* openbsd: fix dlerror() const correctness warning (Ben Noordhuis)

* openbsd: fix uv_fs_sendfile() unused variable warnings (Ben Noordhuis)

* build: disable parallel automake tests (Ben Noordhuis)

* test: add windows-only snprintf() function (Ben Noordhuis)

* build: add automake serial-tests version check (Ben Noordhuis)
2013-08-06 23:18:55 +02:00
Ben Noordhuis
a97685e702 build: add automake serial-tests version check
The serial-tests directive was added in automake v0.11. Add an ad-hoc
version check to find out if it's safe to enable. Fixes the autotools
build with older versions of automake.
2013-08-05 23:29:58 +02:00
Ben Noordhuis
fd082901f1 test: add windows-only snprintf() function
Should fix the build after 96f32a2 inadvertently broke it.

There is no snprintf() on Windows because, hey, it's a C99 addition
and the people from Redmond, WA are still firmly stuck in 1989.
2013-08-05 14:14:02 +02:00
Ben Noordhuis
35ea88cf6b build: disable parallel automake tests
Our tests are not parallelizable and besides, they're one big test
from the perspective of the automake test driver anyway. Turn on
serial mode.
2013-08-05 02:46:59 +02:00
Ben Noordhuis
fb2a6d4a15 openbsd: fix uv_fs_sendfile() unused variable warnings 2013-08-05 02:45:59 +02:00
Ben Noordhuis
103969ac8e openbsd: fix dlerror() const correctness warning 2013-08-05 02:45:59 +02:00
Ben Noordhuis
f7e46379ef openbsd: fix uv_ip6_addr() unused variable warnings 2013-08-05 02:45:59 +02:00
Ben Noordhuis
5af98d3843 test: replace strcpy() with strncpy() 2013-08-05 02:45:40 +02:00
Ben Noordhuis
96f32a206b test: replace sprintf() with snprintf()
There is zero risk of overflowing the buffer, it's just a good habit.
2013-08-05 01:16:34 +02:00
Yasuhiro Matsumoto
d7a1ba85f2 windows: fix mingw32 build, include limits.h
src/win/process uses INT_MAX so include limits.h.
2013-08-01 15:21:35 +02:00
Yasuhiro Matsumoto
bfa3e28b0d windows: fix mingw32 build, define JOB_OBJECT_XXX
mingw32 doesn't have the JOB_OBJECT_XXX defines. Provide them ourselves
when they are not already defined.

This is possibly only an issue with older versions of mingw32 because
mingw-w64 2.0 _does_ export the defines.
2013-08-01 15:21:35 +02:00
Ben Noordhuis
4bdb7d837a aix: fix build breakage introduced in 3ee4d3f
Possibly, anyway - this change is untested. Without it, libuv
definitely won't build on AIX though.
2013-07-29 06:11:13 +02:00
Ben Noordhuis
167a817351 sunos: fix build breakage introduced in e3a657c 2013-07-29 06:08:35 +02:00
Ben Noordhuis
0e7ba080b4 unix, windows: make buf arg to uv_fs_write const
Change the uv_fs_write() prototype so the 'buf' argument is now
`const void*` rather than `void*`.

The argument is stored in a non-const field in the uv_fs_t but that's
inconsequential because the memory it points to is not touched.
2013-07-29 05:27:45 +02:00
Ben Noordhuis
c82cea1ec5 build: enable AM_INIT_AUTOMAKE([subdir-objects])
Squelches (justified) warnings with automake 1.14.

Object files are built in subdirectories now so fix up the dtrace
postprocessing step to scan for *.lo files in said subdirectories.

Fixes #866.
2013-07-29 00:36:49 +02:00
Ben Noordhuis
3d4099ebcb Merge remote-tracking branch 'origin/v0.10'
Conflicts:
	AUTHORS
	ChangeLog
	src/version.c
	src/win/fs.c
2013-07-25 20:01:31 +02:00
Timothy J Fontaine
2744e1e009 Now working on v0.10.14 2013-07-25 10:34:41 -07:00
Timothy J Fontaine
381312e1fe 2013.07.26, Version 0.10.13 (Stable)
Changes since version 0.10.12:

* unix, windows: fix uv_fs_chown() function prototype (Ben Noordhuis)
2013-07-25 10:31:28 -07:00
Brian White
e3a657c662 unix, windows: add MAC to uv_interface_addresses()
Make uv_interface_addresses() return the MAC address as a 48 bits
binary value in the phys_addr field of the uv_interface_address_t
struct.
2013-07-25 13:49:39 +02:00
Ben Noordhuis
977e8337ba build: add mingw makefile
* add a very simple Makefile.mingw that builds libuv.a
* apply a couple of fixes to src/win so it actually builds with mingw
  (mostly missing includes)

Fixes #847.
2013-07-25 02:13:28 +02:00