On Wed, Apr 13, 2016 at 03:53:27PM -0600, Eric Blake wrote:
> > +    if (mask == -1) {
> > +      perror ("umask");
> 
> perror() is NOT async-safe (it manipulates stdio, and could permanently
> wedgelock the child if you happened to fork() while some other thread
> was also using stdio).  Safe error reporting in a fork()d child is
> basically impossible; the best you can do is write() something back to
> the parent and let the parent do the error reporting. :(

Yup, I hate POSIX too.  I'll change these to a write() call.

> > +  if (waitpid (pid, &status, 0) == -1) {
> > +    perrorf (g, "waitpid");
> > +    return -1;
> > +  }
> 
> Doesn't this need to loop on EINTR, rather than immediately giving up?

I think that's a systematic error throughout libguestfs.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html

_______________________________________________
Libguestfs mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libguestfs

Reply via email to