From: Michal M. <mm...@su...> - 2006-01-12 07:43:38
Attachments:
swig-1.3.27-write-loop.patch
|
Hi, it seems that swig ignores write() and fwrite() errors (eg. full disc). With fwrite(), it even goes into an endless loop, because it assumes that -1 is error (see Writen() in Source/DOH/fio.c), while fwrite() sets an error flag instead. We noticed this behaviour when an NFS server crashed while a client was building on a where swig was used. The attached patch against swig-1.3.27 should fix the endless loop. Write error are still left undetected (*), but swig at leas exits in a finite time. You can try this to test the bug: - run swig on a fs with limited space / quota - ln -s /dev/full foo_wrap.c - LD_PRELOAD an so that changes fwrite() and ferror() (*) In most scenarios (out of disc space, unreachable NFS mount, ...), the build will be aborted just some time later by the compiler / linker / etc, so this is not a big issue. best regards Michal Marek SuSE CR |
From: William S F. <ws...@fu...> - 2006-01-30 22:31:10
|
Michal Marek wrote: > Hi, > > it seems that swig ignores write() and fwrite() errors (eg. full disc). > With fwrite(), it even goes into an endless loop, because it assumes > that -1 is error (see Writen() in Source/DOH/fio.c), while fwrite() sets > an error flag instead. We noticed this behaviour when an NFS server > crashed while a client was building on a where swig was used. > > The attached patch against swig-1.3.27 should fix the endless loop. > Write error are still left undetected (*), but swig at leas exits in a > finite time. You can try this to test the bug: > > - run swig on a fs with limited space / quota > - ln -s /dev/full foo_wrap.c > - LD_PRELOAD an so that changes fwrite() and ferror() > > (*) In most scenarios (out of disc space, unreachable NFS mount, ...), > the build will be aborted just some time later by the compiler / linker > / etc, so this is not a big issue. > > Looks like a similar modification went into the release candidate. You can check using the 1.3.28rc1 release candidate at http://www.swig.org/swig-1.3.28rc1.tar.gz or cvs version. William |