Summary: | fts: causes error in valgrind | ||
---|---|---|---|
Product: | Base System | Reporter: | Nikola Kolev <koue> |
Component: | kern | Assignee: | freebsd-bugs (Nobody) <bugs> |
Status: | New --- | ||
Severity: | Affects Only Me | CC: | cem, pjfloyd |
Priority: | --- | ||
Version: | 11.2-STABLE | ||
Hardware: | Any | ||
OS: | Any |
Description
Nikola Kolev
2018-09-20 14:38:38 UTC
With a debug build of libc I get ==1494== Conditional jump or move depends on uninitialised value(s) ==1494== at 0x48F29D7: fts_close (lib/libc/gen/fts.c:256) ==1494== by 0x2019B6: main (ftstest.c:17) ==1494== Uninitialised value was created by a heap allocation ==1494== at 0x484CBC4: malloc (vg_replace_malloc.c:397) ==1494== by 0x48F2606: fts_alloc (lib/libc/gen/fts.c:1022) ==1494== by 0x48F2606: fts_open (lib/libc/gen/fts.c:195) ==1494== by 0x20197E: main (ftstest.c:13) fts_open does this struct _fts_private *priv; if ((priv = calloc(1, sizeof(*priv))) == NULL) return (NULL); sp = &priv->ftsp_fts; if ((sp->fts_cur = fts_alloc(sp, "", 0)) == NULL) where the first member of _fts_private is FTS ftsp_fts; meaning p[riv and sp are equivalent addresses. And the error code is if (sp->fts_cur) { for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) { // ERROR It's what p points to that is not initialized: gdb) p p $5 = (FTSENT *) 0x54652d0 (gdb) p sizeof(*p) $6 = 152 (gdb) mo check_memory defined 0x54652d0 152 Address 0x54652D0 len 152 not defined: Uninitialised value at 0x54652D0 was created by a heap allocation ==1649== at 0x484CBC4: malloc (vg_replace_malloc.c:397) ==1649== by 0x48F2606: fts_alloc (lib/libc/gen/fts.c:1022) ==1649== by 0x48F2606: fts_open (lib/libc/gen/fts.c:195) ==1649== by 0x20197E: main (ftstest.c:13) Address 0x54652d0 is 0 bytes inside a block of size 377 alloc'd ==1649== at 0x484CBC4: malloc (vg_replace_malloc.c:397) ==1649== by 0x48F2606: fts_alloc (lib/libc/gen/fts.c:1022) ==1649== by 0x48F2606: fts_open (lib/libc/gen/fts.c:195) ==1649== by 0x20197E: main (ftstest.c:13) [using vgdb and the monitor command] As far as I'm concerned it's a bug in fts_open. |