Re: debian (1.2.22-3~bpo8+1) package build failure

Eric Wong <[email protected]>
Newsgroups gmane.comp.search.xapian.devel
Message-ID <20160816234055.GA29362@starla>
Olly Betts <[email protected]> wrote:
> On Sat, Aug 06, 2016 at 03:43:48AM +0000, Eric Wong wrote:
> > Eric Wong <[email protected]> wrote:
> > > I'm trying to test a trivial patch to set FD_CLOEXEC on the
> > > flintlock lockfd when using F_OFD_SETLK
> > 
> > Fwiw, this is the patch I was originally going to test.
> > (but now I see maybe my F_SETFD might only need to be
> >  called on F_OFD_SETLK success)   Description at bottom.
> > 
> > --- a/backends/flint_lock.cc
> > +++ b/backends/flint_lock.cc
> > @@ -108,6 +108,10 @@ FlintLock::lock(bool exclusive, string & explanation) {
> >  	return ((errno == EMFILE || errno == ENFILE) ? FDLIMIT : UNKNOWN);
> >      }
> >  
> > +#ifdef FD_CLOEXEC
> > +    (void)fcntl(lockfd, F_SETFD, FD_CLOEXEC);
> > +#endif
> > +
> 
> This is fixed in master and 1.4.0, which set CLOEXEC for all relevant
> FDs.  Those changes weren't backported as they were rather pervasive
> and we'd had no user reports of issues due to this, but since the
> CLOEXEC changes we now we lock in process on a modern Linux kernel and
> that change got backported - as you've noticed that can cause more major
> issues without CLOEXEC, and I think we ought to backport CLOEXEC for the
> lock file to 1.2.x.

Thanks for the response.   Is this the svn/1.2 branch in
the git repo?  Currently at:

	commit 76e09ea726d9666462567b5839899fc53f53cebe
	("Fix typo in POD docs for Search::Xapian")

Did you get a chance to look into the build failure?
No worries if not, I've been busy, too; I'm just happy
that https://public-inbox.org/git/
(git mailing list archives with Xapian)
seems to be holding up :)

> I'd suggest comparing backends/flint_lock.cc with the version on git
> master - the CLOEXEC-related changes are easy to see, and a bit more
> rigorous than your patch (CLOEXEC is applied when the lock file is
> opened, at least on platforms which support that, which means there's
> no window in which fork()+exec() can occur in another thread while
> the FD is unprotected).
> 
> Arguably we ought to avoid using OFD locks if we don't have CLOEXEC
> (then we use a child process to hold the lock, which also means that
> fork()+exec() doesn't end up with a locked FD open).  Currently
> only Linux supports OFD locks, and has CLOEXEC so right now it's
> not an issue.  OFD locks have been proposed for POSIX standardisation,
> but since CLOEXEC is in POSIX.1-2008, I suspect any platform which adds
> support for OFD locks would actually support CLOEXEC anyway.

Yes, I doubt anybody would implement OFD before CLOEXEC :)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.