On 03/09/2013 04:09 PM, Eric Blake wrote: > On 03/09/2013 08:12 AM, Eric Blake wrote: >> Just a heads up that I'm trying to fix a bug in diversion handling, >> exposed by 'make check', but which only shows on mingw or other >> platforms where rename() can't change the name of an open file. Most >> Unix systems are unaffected, and I doubt many people test on mingw, >> which is probably why no one has reported it even though I think the bug >> has been present for months. >> >> I'm still trying to ascertain whether released m4 has the bug, or >> whether it is a regression introduced by a recent gnulib update. But >> the gdb session shows what is happening - if a diversion is large enough >> to spill to a file, the act of closing it prior to the rename happens to >> trigger a path that accidentally unlink()s the file. I hope to have the >> patch posted by Monday. > > More details - it looks like this has been around for a long time - > gnulib has used _O_TEMPORARY when opening files on mingw, which has the > effect of deleting the file on the first fclose(). But m4 needs the > file to exist even after we close it, which means we should not be using > _O_TEMPORARY. I'm trying to figure out whether the patch needs to be in > gnulib, m4, or both.
Fixed as of this commit, although I'm still seeing some issues in gnulib when building for mingw. https://lists.gnu.org/archive/html/m4-patches/2013-03/msg00003.html -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature