[libvirt] heisenbug in command.c

Daniel P. Berrange berrange at redhat.com
Mon Mar 19 10:19:52 UTC 2012


On Fri, Mar 16, 2012 at 04:42:42PM -0500, Serge Hallyn wrote:
> On 03/16/2012 03:52 PM, Jim Paris wrote:
> >Serge Hallyn wrote:
> >>On 03/16/2012 11:50 AM, Eric Blake wrote:
> >>>On 03/16/2012 10:36 AM, Serge Hallyn wrote:
> >>>>Hi,
> >>>>
> >>>>It seems I've run into quite the heisenbug, reported at
> >>>>https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/922628
> >>>>
> >>>>It manifests itself as virPidWait returning status=4 for iptables (which
> >>>>should never exit with status=4).
> >>>
> >>>Maybe iptables isn't documented as exiting with $? of 4, but that's what
> >>>is happening.  The libvirt code in question is quite clear that it
> >>>grabbed an accurate exit status from the child process.
> >>>
> >>
> >>Well, yes.  I figured that either (1) iptables actually got -EINTR
> >>from the kernel and passed that along as its exit code, or (2)
> >>something went wrong with memory being overwritten in libvirt,
> >>however unlikely. Stranger things have happened.  If (1), I was
> >>wondering if it was being ignored on purpose.
> >
> >Why do you bring up EINTR at all?  Just because EINTR is 4?
> 
> Yup.
> 
> >  That
> >seems very much unrelated.
> 
> I didn't think so, but looks like you're right :)
> 
> >This is from iptables:
> >
> >enum xtables_exittype {
> >         OTHER_PROBLEM = 1,
> >         PARAMETER_PROBLEM,
> >         VERSION_PROBLEM,
> >         RESOURCE_PROBLEM,
> >         XTF_ONLY_ONCE,
> >         XTF_NO_INVERT,
> >         XTF_BAD_VALUE,
> >         XTF_ONE_ACTION,
> >};
> >
> >So it looks like iptables is returning RESOURCE_PROBLEM (which could
> >explain why it's intermittent).
> 
> That makes a lot more sense then, yes.  When scripting a bunch of
> parallel iptables rules adds (followed by waits), I do once in
> awhile get
> 
> iptables: Resource temporarily unavailable.
> 
> (and sometimes a -EINVAL message)
> 
> though 'wait' still says status was 0.  I've never gotten 4.  The
> next run then succeeds.
> 
> This still however sounds like src/util/iptables.c might ought to
> re-run the command if it gets 4.

Or do we need some serialization of commands at a higher level perhaps ?


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list