Thank you.  I will push this soon.

On Mon, Nov 28, 2011 at 11:18:23AM -0800, Ethan Jackson wrote:
> Looks good.
> 
> Ethan
> 
> On Wed, Nov 23, 2011 at 12:15, Ben Pfaff <b...@nicira.com> wrote:
> > On one machine, "/etc/init.d/openvswitch-switch start" failed to start
> > with:
> >
> > ? ovs-vswitchd: fork child failed to signal startup (Success)
> > ? Starting ovs-vswitchd ... failed!
> >
> > "strace" revealed that the fork child was actually segfaulting, but the
> > message output didn't indicate that in any way. ?This commit fixes the
> > log message (but not the segfault itself).
> >
> > Reported-by: Michael Hu <m...@nicira.com>
> > Bug #8457.
> > ---
> > ?lib/daemon.c ? ? ? ? | ? 23 ++++++++++++++---------
> > ?python/ovs/daemon.py | ? 18 ++++++++++++------
> > ?2 files changed, 26 insertions(+), 15 deletions(-)
> >
> > diff --git a/lib/daemon.c b/lib/daemon.c
> > index ef1a24e..3dd5a1a 100644
> > --- a/lib/daemon.c
> > +++ b/lib/daemon.c
> > @@ -250,16 +250,21 @@ fork_and_wait_for_startup(int *fdp)
> > ? ? ? ? ? ? ? ? retval = waitpid(pid, &status, 0);
> > ? ? ? ? ? ? } while (retval == -1 && errno == EINTR);
> >
> > - ? ? ? ? ? ?if (retval == pid
> > - ? ? ? ? ? ? ? ?&& WIFEXITED(status)
> > - ? ? ? ? ? ? ? ?&& WEXITSTATUS(status)) {
> > - ? ? ? ? ? ? ? ?/* Child exited with an error. ?Convey the same error to
> > - ? ? ? ? ? ? ? ? * our parent process as a courtesy. */
> > - ? ? ? ? ? ? ? ?exit(WEXITSTATUS(status));
> > + ? ? ? ? ? ?if (retval == pid) {
> > + ? ? ? ? ? ? ? ?if (WIFEXITED(status) && WEXITSTATUS(status)) {
> > + ? ? ? ? ? ? ? ? ? ?/* Child exited with an error. ?Convey the same error
> > + ? ? ? ? ? ? ? ? ? ? * to our parent process as a courtesy. */
> > + ? ? ? ? ? ? ? ? ? ?exit(WEXITSTATUS(status));
> > + ? ? ? ? ? ? ? ?} else {
> > + ? ? ? ? ? ? ? ? ? ?char *status_msg = process_status_msg(status);
> > + ? ? ? ? ? ? ? ? ? ?VLOG_FATAL("fork child died before signaling startup 
> > (%s)",
> > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status_msg);
> > + ? ? ? ? ? ? ? ?}
> > + ? ? ? ? ? ?} else if (retval < 0) {
> > + ? ? ? ? ? ? ? ?VLOG_FATAL("waitpid failed (%s)", strerror(errno));
> > + ? ? ? ? ? ?} else {
> > + ? ? ? ? ? ? ? ?NOT_REACHED();
> > ? ? ? ? ? ? }
> > -
> > - ? ? ? ? ? ?VLOG_FATAL("fork child failed to signal startup (%s)",
> > - ? ? ? ? ? ? ? ? ? ? ? strerror(errno));
> > ? ? ? ? }
> > ? ? ? ? close(fds[0]);
> > ? ? ? ? *fdp = -1;
> > diff --git a/python/ovs/daemon.py b/python/ovs/daemon.py
> > index 5937877..0d119f2 100644
> > --- a/python/ovs/daemon.py
> > +++ b/python/ovs/daemon.py
> > @@ -245,13 +245,19 @@ def _fork_and_wait_for_startup():
> > ? ? ? ? ? ? ? ? break
> > ? ? ? ? if len(s) != 1:
> > ? ? ? ? ? ? retval, status = _waitpid(pid, 0)
> > - ? ? ? ? ? ?if (retval == pid and
> > - ? ? ? ? ? ? ? ?os.WIFEXITED(status) and os.WEXITSTATUS(status)):
> > - ? ? ? ? ? ? ? ?# Child exited with an error. ?Convey the same error to
> > - ? ? ? ? ? ? ? ?# our parent process as a courtesy.
> > - ? ? ? ? ? ? ? ?sys.exit(os.WEXITSTATUS(status))
> > + ? ? ? ? ? ?if retval == pid:
> > + ? ? ? ? ? ? ? ?if os.WIFEXITED(status) and os.WEXITSTATUS(status):
> > + ? ? ? ? ? ? ? ? ? ?# Child exited with an error. ?Convey the same error to
> > + ? ? ? ? ? ? ? ? ? ?# our parent process as a courtesy.
> > + ? ? ? ? ? ? ? ? ? ?sys.exit(os.WEXITSTATUS(status))
> > + ? ? ? ? ? ? ? ?else:
> > + ? ? ? ? ? ? ? ? ? ?sys.stderr.write("fork child failed to signal "
> > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "startup (%s)\n"
> > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? % ovs.process.status_msg(status))
> > ? ? ? ? ? ? else:
> > - ? ? ? ? ? ? ? ?sys.stderr.write("fork child failed to signal startup\n")
> > + ? ? ? ? ? ? ? ?assert retval < 0
> > + ? ? ? ? ? ? ? ?sys.stderr.write("waitpid failed (%s)\n"
> > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? % os.strerror(-retval))
> > ? ? ? ? ? ? ? ? sys.exit(1)
> >
> > ? ? ? ? os.close(rfd)
> > --
> > 1.7.4.4
> >
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
> >
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to