The licence change is fine with me. On 22 May 2013 23:25, "Pádraig Brady" <p...@draigbrady.com> wrote:
> On 05/22/2013 06:49 PM, Eric Blake wrote: > > I am trying to fix a bug in libvirt where a child process deadlocked > > because it called initgroups() in between fork and exec when the parent > > was multithreaded; it turns out that looking up group membership > > information requires a mutex, but if some other thread in the parent > > owns that mutex at the time of the fork, then the child will no longer > > have that thread around to ever release the mutex. The solution is to > > not call initgroups, but to instead split the use of the underlying > > pieces of what initgroups does - a call to getgrouplist prior to forking > > (requires the mutex, but pre-fork is safe) and a call to setgroups after > > forking (no lookup required, therefore no mutex involved and no deadlock > > possible). I ended up writing my own wrapper around getgrouplist, and > > only then discovered that gnulib's mgetgroups module does a better job > > at the task, except for one bit: mgetgroups is currently GPLv3 but > > libvirt wants LGPLv2+. > > > > Since getgrouplist is implemented in glibc as LGPLv2+, is there any > > objection to relicensing the following modules as LGPLv2+? > > > > For my argument on the xalloc-oversized module, observe that malloca.h > > (part of the LGPLv2+ malloca module) has effectively inlined the > > contents of lib/xalloc-oversized.h, so while the larger xalloc module > > will never be LGPL (it calls exit), the mere use of checking for > > oversized allocation has already been intentionally isolated for safe > > use in LGPL code. > > > > For my own contributions to these modules, I'm okay with relaxing to > > LGPLv2+. I've cc'd all other contributors as tracked by gnulib.git's > > history (I'm not sure if coreutils.git would turn up any earlier authors > > from before we promoted mgetgroups from coreutils to gnulib). > > I rewrote mgetgroups at one stage in coreutils. > I'm fine with the relicense. > > James Youngman (CC'd) rewrote it to use getgrouplist if available: > http://git.sv.gnu.org/gitweb/?p=coreutils.git;a=commit;h=49f7eba > > cheers, > Pádraig. > > > I did track the history of xalloc-oversized changes further back from > when the > > macro was part of the larger xalloc.h (pre-split contributors marked in > > '()'). Module maintainers are denoted with *. > > > > getgroups [LGPLv3+] => *Jim, *Eric, Bruno, Paul > > getugroups [GPLv3+] => *Jim, Eric, Paul, Bruno, Lasse > > mgetgroups [GPLv3+] => *Jim, *Eric, Bruno > > xalloc-oversized [GPLv3+] => [*all] Eric, Paul, Jim, (Bruno) > > > > Also, I plan on submitting a doc patch on the gnulib initgroups.texi > > page warning about the portability pitfall of trying to use it to change > > the the id of a child process of a multithreaded parent. > > > >