[PATCH] libbacktrace: fix fd leak tests on systems with extra descriptors

Ian Lance Taylor iant@google.com
Fri Aug 13 16:52:53 GMT 2021


On Fri, Aug 13, 2021 at 12:05 AM Sergei Trofimovich <slyich@gmail.com> wrote:
>
> On Thu, 12 Aug 2021 16:16:04 -0700
> Ian Lance Taylor <iant@google.com> wrote:
>
> > On Thu, Aug 12, 2021 at 3:34 PM Sergei Trofimovich via Gcc-patches
> > <gcc-patches@gcc.gnu.org> wrote:
> > >
> > > From: Sergei Trofimovich <siarheit@google.com>
> > >
> > > I noticed test failures when ran gcc test suite from under mc shell.
> > > mc opens fd=9 and exposes it to child processes. As a result a few
> > > tests failes:
> > >     FAIL: b2test_buildid
> > >     FAIL: btest_gnudebuglink
> > >     FAIL: btest
> > >     FAIL: btest_lto
> > >     FAIL: btest_alloc
> > >     FAIL: ctestg
> > >     FAIL: ctesta
> > >     FAIL: ctestg_alloc
> > >     FAIL: ctesta_alloc
> > >     FAIL: dwarf5
> > >     FAIL: dwarf5_alloc
> > >
> > > Instead of trying to close file descripts in range test polls for
> > > first available file descriptor by creating it via dup(1).
> > >
> > > libbacktrace/
> > >
> > >         * btest.c (check_open_files): Use last free file descriptor as a
> > >         signal for flie descriptor leak.
> >
> > This isn't a useful replacement, as this will pass as long as
> > libbacktrace closes the first file descriptor that it opens.  It won't
> > check whether libbacktrace left any other file descriptors open.
> >
> > Perhaps at program startup we could fstat descriptors up to 10 and
> > record whether they are valid, and then skip those files in
> > check_open_files.
>
> Oh, great point! Completely missed it. Changed the patch to poll for present
> file descriptors with fcntl(fd, F_GETFD) to compare before/after.

I believe that we currently run some of the tests on Windows systems.
Do you know if fcntl(fd, F_GETFD) will work there?

Ian


More information about the Gcc-patches mailing list