[Bug 231517] fts: causes error in valgrind
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Thu Sep 20 14:38:40 UTC 2018
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=231517
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 at FreeBSD.org
Reporter: koue at chaosophia.net
Hi,
Calling 'fts_close' immediately after 'fts_open' causes error in valgrind:
$ valgrind --track-origins=yes --tool=memcheck --leak-check=yes
--show-reachable=yes ./ftstest
==76510== Memcheck, a memory error detector
==76510== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==76510== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==76510== Command: ./ftstest
==76510==
==76510== Conditional jump or move depends on uninitialised value(s)
==76510== at 0x4EA2297: fts_close (in /lib/libc.so.7)
==76510== by 0x4008D9: main (in /root/fts/ftstest)
==76510== Uninitialised value was created by a heap allocation
==76510== at 0x4C245B1: malloc (in
/usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so)
==76510== by 0x4EA1F01: fts_open (in /lib/libc.so.7)
==76510== by 0x40089E: main (in /root/fts/ftstest)
==76510==
==76510==
==76510== HEAP SUMMARY:
==76510== in use at exit: 0 bytes in 0 blocks
==76510== total heap usage: 5 allocs, 5 frees, 2,647 bytes allocated
==76510==
==76510== All heap blocks were freed -- no leaks are possible
==76510==
==76510== For counts of detected and suppressed errors, rerun with: -v
==76510== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
ftstest.c
=========
#include <fts.h>
#include <stdio.h>
#include <sys/stat.h>
int
main(void) {
FTS *fts;
FTSENT *e;
char *path = "/etc";
char * const path_argv[] = { path, NULL };
if ((fts = fts_open(path_argv, FTS_LOGICAL, NULL)) == 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 = fts_read(fts)) != 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
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list