tevent_signal: Fix a valgrind error This fixes an uninitialized read introduced by my fix for the tevent_signal destructors. From looking at the code you might believe that this kicks in only when talloc failed. But with -O3 I do see it in normal operations. Sorry for that. Autobuild-User: Volker Lendecke <vl@samba.org> Autobuild-Date: Wed Feb 15 17:58:37 CET 2012 on sn-devel-104
tevent: Fix deleting signal events from within themselves Signed-off-by: Stefan Metzmacher <metze@samba.org>
Fix -Wunused-but-set-variable compiler warnings in tevent_signal.c The results of some read(2) and write(2) calls are assigned into a variable that is never used. Presumably this used to avoid compiler warnings or similar. However, from (approximately) GCC 4.6 this produces some warnings: [ 609/3910] Compiling lib/tevent/tevent_signal.c ../lib/tevent/tevent_signal.c: In function ‘tevent_common_signal_handler’: ../lib/tevent/tevent_signal.c:85:10: warning: variable ‘res’ set but not used [-Wunused-but-set-variable] ../lib/tevent/tevent_signal.c: In function ‘signal_pipe_handler’: ../lib/tevent/tevent_signal.c:183:10: warning: variable ‘res’ set but not used [-Wunused-but-set-variable] The simplest thing to do is remove the variables and cast the function return to void. There is already a comment above each call. Signed-off-by: Martin Schwenke <martin@meltin.net> Signed-off-by: Stefan Metzmacher <metze@samba.org>
Fix bug 7462 - Non-standard SA_RESETHAND is used in ...lib/tevent/tevent_signal.c Make SA_RESETHAND conditional on its existance. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Mon Aug 1 22:03:45 CEST 2011 on sn-devel-104
tevent: Do not use talloc_autofree_context
s3: signals are processed twice in child. Signed-off-by: Bo Yang <boyang@samba.org>
tevent: prefix types and defined with tevent_ and TEVENT_ This fixes the build warnings on some build-farm hosts. metze
NULL is not a valid event context. Jeremy.
lib/tevent: a cleaner fix for be4ac227842530d484659f2db683453366326d8b segv Revert 23abcd2318c69753aa2a144e1dc0f9cf9efdb705 and fix logic bug. The current code loops through the event contexts, when it sees a different one, it notifies the current one (ev) and updates ev to point to the new one. This is dumb, because: (1) ev starts as NULL, so this code crashes, and (2) The final context will not be notified. The correct fix for this is to update ev to the new one, then notify it. Volker's fix works because we currently always have one event context. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
tevent: make sure we don't set errno within the signal handler function. metze
Another part of the fix for bug 6651 - smbd SIGSEGV when breaking oplocks. SA_INFO_QUEUE_COUNT *MUST* be a power of 2, in order for the ring buffer wrap to work correctly at the 32 bit boundary. Thanks to Petr Vandrovec <petr@vandrovec.name> for this.
tevent: Fix a segfault upon the first signal When the first signal arrives, tevent_common_signal_handler() crashed: "ev" is initialized to NULL, so the first "write(ev->pipe_fds[1], &c, 1);" dereferences NULL. Rusty, Tridge, please check. Also, can you tell me a bit more about the environment you tested this in? I'd be curious to see where this survived. Thanks, Volker
lib/tevent: handle tevent_common_add_signal on different event contexts. I don't know if this is a problem in real life. The code assumes there's only one tevent_context; all signals will notify the first event context. That's counter-intuitive if you ever use more than one, and there's nothing else in this code which prevents it AFAICT. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
lib/tevent: fix race with signals and tevent_common_add_signal We carefully preserve the old signal handler, but we replace it before we've set up everything; in particular, if we fail setting up the pipe_hack we could write a NUL char to stdout (fd 0), instead of calling the old signal handler. Replace the signal handler as the very last thing we do. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
lib/tevent: remove spectacularly complicated manual subtraction To be completely honest, I don't quite know whether to laugh or cry at this one: 1 + (0xFFFFFFFF & ~(s.seen - s.count)) == 1 + (~(s.seen - s.count)) # s.seen, s.count are uint32_t == s.count - s.seen # -A == ~A + 1 Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
tevent: avoid using reserved c++ word. Guenther
Fix for bug 6651 - smbd SIGSEGV when breaking oplocks. Based on a patch submitted by Petr Vandrovec <petr@vandrovec.name>. Multiple pending signals with siginfo_t's weren't being handled correctly leading to smbd abort with kernel oplock signals. Jeremy
lib/tevent: change to LGPLv3+ metze
Fix a warning and a bug: pipe(2) can fail
Add two variable assignments to shut up gcc