Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Sep 2018 14:38:38 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 231517] fts: causes error in valgrind
Message-ID:  <bug-231517-227@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D231517

            Bug ID: 231517
           Summary: fts: causes error in valgrind
           Product: Base System
           Version: 11.2-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: koue@chaosophia.net

Hi,

Calling 'fts_close' immediately after 'fts_open' causes error in valgrind:

$ valgrind --track-origins=3Dyes --tool=3Dmemcheck --leak-check=3Dyes
--show-reachable=3Dyes ./ftstest
=3D=3D76510=3D=3D Memcheck, a memory error detector
=3D=3D76510=3D=3D Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward =
et al.
=3D=3D76510=3D=3D Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyr=
ight info
=3D=3D76510=3D=3D Command: ./ftstest
=3D=3D76510=3D=3D=20
=3D=3D76510=3D=3D Conditional jump or move depends on uninitialised value(s)
=3D=3D76510=3D=3D    at 0x4EA2297: fts_close (in /lib/libc.so.7)
=3D=3D76510=3D=3D    by 0x4008D9: main (in /root/fts/ftstest)
=3D=3D76510=3D=3D  Uninitialised value was created by a heap allocation
=3D=3D76510=3D=3D    at 0x4C245B1: malloc (in
/usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so)
=3D=3D76510=3D=3D    by 0x4EA1F01: fts_open (in /lib/libc.so.7)
=3D=3D76510=3D=3D    by 0x40089E: main (in /root/fts/ftstest)
=3D=3D76510=3D=3D=20
=3D=3D76510=3D=3D=20
=3D=3D76510=3D=3D HEAP SUMMARY:
=3D=3D76510=3D=3D     in use at exit: 0 bytes in 0 blocks
=3D=3D76510=3D=3D   total heap usage: 5 allocs, 5 frees, 2,647 bytes alloca=
ted
=3D=3D76510=3D=3D=20
=3D=3D76510=3D=3D All heap blocks were freed -- no leaks are possible
=3D=3D76510=3D=3D=20
=3D=3D76510=3D=3D For counts of detected and suppressed errors, rerun with:=
 -v
=3D=3D76510=3D=3D ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 fr=
om 0)



ftstest.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D

#include <fts.h>
#include <stdio.h>
#include <sys/stat.h>

int
main(void) {
        FTS *fts;
        FTSENT *e;
        char *path =3D "/etc";
        char * const path_argv[] =3D { path, NULL };

        if ((fts =3D fts_open(path_argv, FTS_LOGICAL, NULL)) =3D=3D NULL) {
                printf("fts_open error: %s\n", path);
                return (1);
        }
        fts_close(fts);
        return (0);
}



If 'fts_read' is called before 'fts_close' no complaints from vagrind.

+       while ((e =3D fts_read(fts)) !=3D NULL) {
+               printf("name: %s, mtime: %ld\n", e->fts_name,
e->fts_statp->st_mtime);
+       }

I don't know if its related but I found same issue in GNU maillist:
https://lists.gnu.org/archive/html/bug-gnulib/2018-05/msg00117.html

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-231517-227>