On 11/08/2013 01:30 PM, Daniel P. Berrange wrote: > On Thu, Nov 07, 2013 at 09:15:43PM +0800, Gao feng wrote: >> I met a problem that container blocked by seteuid/setegid >> which is call in lxcContainerSetID on UP system and libvirt >> compiled with --with-fuse=yes. >> >> I looked into the glibc's codes, and found setxid in glibc >> calls futex() to wait for other threads to change their >> setxid_futex to 0(see setxid_mark_thread in glibc). >> >> since the process created by clone system call will not >> share the memory with the other threads and the context >> of memory doesn't changed until we call execl.(COW) >> >> So if the process which created by clone is called before >> fuse thread being stated, the new setxid_futex of fuse >> thread will not be saw in this process, it will be blocked >> forever. >> >> Maybe this problem should be fixed in glibc, but I send >> this patch as a quick fix. > > Can you show a stack trace of the threads/processes deadlocking >
Daniel, chould you apply this patch? since this may not be fixed in glibc quickly and we should conside libvirt works with buggy glibc. -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list