On Thu, Jul 3, 2014 at 1:23 PM, Ben Pfaff <b...@nicira.com> wrote: > On Sun, Jun 29, 2014 at 08:37:25PM -0700, Ansis Atteka wrote: >> From: Ansis <ansisatt...@gmail.com> > > Fix up the patch author? > >> The child process (the one being monitored) could die before it was able >> to call fork_notify_startup() function. If such situation arises, then >> parent process (the one monitoring child process) would also terminate >> with a fatal log message: >> >> ...|EMER|fork child died before signaling startup (killed (...)) >> >> This patch changes that beahvior by always restarting child process >> if it was able to start up at least once in the past. However, if >> child was not able to start up even the first time, then monitor process >> would still terminate, because that would most likely indicate a >> persistent programming error. >> >> To reproduce use following script: >> >> while : ; do kill -SIGSEGV `cat /var/run/openvswitch/ovs-vswitchd.pid`; done >> >> Signed-Off-By: Ansis Atteka <aatt...@nicira.com> >> Issue: 1273550 > > Clang does not like this: > > ../lib/daemon-unix.c:338:13: error: variable 'retval' is used > uninitialized > whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] > if (child_ready) { > ^~~~~~~~~~~ > ../lib/daemon-unix.c:347:13: note: uninitialized use occurs here > if (retval == daemon_pid || !child_ready) { > ^~~~~~ > ../lib/daemon-unix.c:338:9: note: remove the 'if' if its condition is > always > true > if (child_ready) { > ^~~~~~~~~~~~~~~~~ > ../lib/daemon-unix.c:332:19: note: initialize the variable 'retval' to > silence > this warning > int retval; > ^ > = 0 > 1 error generated. > > I can kind of see its point. This use of uninitialized data will > never be a real problem, because !child_ready will always be true if > retval is uninitialized, but it still reads better (and pleases Clang) > if the test condition is reversed: > if (!child_ready || retval == daemon_pid) { > > I think that the previous code logged something at VLL_EMER level if > the monitor process exited. I think the new version does not; it > would be nice if it did. You might use VLOG_FATAL instead of exit(1) > to get that effect.
I sent V2 patch that addresses all your comments. Thanks for review! _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev