[libvirt] [PATCH 2/2] virt-login-shell joins users into lxc container.

Daniel P. Berrange berrange at redhat.com
Wed Jul 31 19:22:38 UTC 2013


On Wed, Jul 31, 2013 at 01:15:51PM -0600, Eric Blake wrote:
> On 07/31/2013 12:57 PM, Daniel P. Berrange wrote:
> 
> >> +    if (virFork(&cpid) < 0)
> >> +	goto cleanup;
> >> +
> ...
> >> +	}
> >> +
> >> +	if ((ngroups = virGetGroupList(uid, gid, &groups)) < 0)
> >> +	    return EXIT_FAILURE;
> > 
> > virGetGroupList isn't safe to call after fork(). Need to
> > move it earlier in this function.
> 
> Technically, it is only unsafe to call after fork() if the parent
> process was multi-threaded.  But as virt-login-shell is single-threaded,
> we can get away with it here.

I work on the assumption that all programs are multi-threaded, or will
be at some point in their future, even if the developer doesn't think
they are/willbe. You never know when some function/library you call
may secretly create a thread behind your back. For example, virsh was
single threaded, until we put in the special background thread to run
the event loop in.

Regards,
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