digitalmars.D - Are these Valgrind warnings (from std.array and std.csv) worry-some,
I'm trying to debug a problem, but saw these Valgrind warnings (from std.array and std.csv): ==1676== ==1676== Warning: invalid file descriptor -1 in syscall close() ==1676== Warning: invalid file descriptor -1 in syscall close() ==1676== Conditional jump or move depends on uninitialised value(s) ==1676== at 0x11149E3: core.internal.gc.impl.conservative.gc.Gcx.sweep() (in ./lt) ==1676== by 0x11162BE: core.internal.gc.impl.conservative.gc.Gcx.fullcollect(bool, bool, bool) (in ./lt) ==1676== by 0x1114058: core.internal.gc.impl.conservative.gc.Gcx.smallAlloc(ulong, ref ulong, uint, const(TypeInfo)) (in ./lt) ==1676== by 0x111A024: core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC mallocNoSync(ulong, uint, ref ulong, const(TypeInfo)), core.internal.gc.impl.conservative.gc.mallocTime, core.internal.gc.impl.conservative.gc.numMallocs, ulong, uint, ulong, const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo)) (in ./lt) ==1676== by 0x1111ABD: core.internal.gc.impl.conservative.gc.ConservativeGC.qalloc(ulong, uint, scope const(TypeInfo)) (in ./lt) ==1676== by 0x10891B6: gc_qalloc (in ./lt) ==1676== by 0x108C195: _aaGetX (in ./lt) ==1676== by 0x108BDA0: _aaGetY (in ./lt) ==1676== by 0xC30E5D: std.csv.CsvReader!(immutable(char)[][immutable(char)[]], 1, std.algorithm.iteration.joiner!(std.algorithm.iteration.FilterResult!(common._readDailyBarsFromCS (immutable(char)[], ref long).__lambda9, std.stdio.File.ByLineImpl!(char, char).ByLineImpl).FilterResult, immutable(char)[]).joiner(std.algorithm.iteration.FilterResult!(common._readDailyBarsFromCS (immutable(char)[], ref long).__lambda9, std.stdio.File.ByLineImpl!(char, char).ByLineImpl).FilterResult, immutable(char)[]).Result, dchar, immutable(char)[][]).CsvReader.prime() (csv.d:1182) ==1676== by 0xC30CFA: std.csv.CsvReader!(immutable(char)[][immutable(char)[]], 1, std.algorithm.iteration.joiner!(std.algorithm.iteration.FilterResult!(common._readDailyBarsFromCS (immutable(char)[], ref long).__lambda9, std.stdio.File.ByLineImpl!(char, char).ByLineImpl).FilterResult, immutable(char)[]).joiner(std.algorithm.iteration.FilterResult!(common._readDailyBarsFromCS (immutable(char)[], ref long).__lambda9, std.stdio.File.ByLineImpl!(char, char).ByLineImpl).FilterResult, immutable(char)[]).Result, dchar, immutable(char)[][]).CsvReader.popFront() (csv.d:1154) ... ==1676== ==1676== Warning: invalid file descriptor -1 in syscall close() ==1676== Use of uninitialised value of size 8 ==1676== at 0x111BB96: core.internal.gc.impl.conservative.gc.Gcx.mark!(false, true, true).mark(core.internal.gc.impl.conservative.gc.Gcx.ScanRang !(false).ScanRange) (in ./lt) ==1676== by 0x1116AB5: core.internal.gc.impl.conservative.gc.Gcx.markParallel(bool) (in ./lt) ==1676== by 0x1115FCF: core.internal.gc.impl.conservative.gc.Gcx.fullcollect(bool, bool, bool) (in ./lt) ==1676== by 0x1114058: core.internal.gc.impl.conservative.gc.Gcx.smallAlloc(ulong, ref ulong, uint, const(TypeInfo)) (in ./lt) ==1676== by 0x111A024: core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC mallocNoSync(ulong, uint, ref ulong, const(TypeInfo)), core.internal.gc.impl.conservative.gc.mallocTime, core.internal.gc.impl.conservative.gc.numMallocs, ulong, uint, ulong, const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo)) (in ./lt) ==1676== by 0x1111ABD: core.internal.gc.impl.conservative.gc.ConservativeGC.qalloc(ulong, uint, scope const(TypeInfo)) (in ./lt) ==1676== by 0x10891B6: gc_qalloc (in ./lt) ==1676== by 0xD26B9B: std.array.Appender!(immutable(char)[]).Appender.ensureAddabl (ulong).__lambda9() (array.d:3576) ==1676== by 0xD26AB1: std.array.Appender!(immutable(char)[]).Appender.ensureAddable(ulong) (array.d:3576) ==1676== by 0x954102: std.array.Appender!(immutable(char)[]).Appender.put!(char[]).put(char[ ).bigDataFun(ulong) (array.d:3679) ==1676== by 0x953FF8: std.array.Appender!(immutable(char)[]).Appender.put!(char[]).put(char[]) (array.d:3682) ==1676== by 0x953FB5: std.array.Appender!(immutable(char)[]).Appender.put!(dchar).put(dchar) (wchar_.d:38) ==1676== ==1676== Conditional jump or move depends on uninitialised value(s) ==1676== at 0x111BBA3: core.internal.gc.impl.conservative.gc.Gcx.mark!(false, true, true).mark(core.internal.gc.impl.conservative.gc.Gcx.ScanRang !(false).ScanRange) (in ./lt) ==1676== by 0x1116AB5: core.internal.gc.impl.conservative.gc.Gcx.markParallel(bool) (in ./lt) ==1676== by 0x1115FCF: core.internal.gc.impl.conservative.gc.Gcx.fullcollect(bool, bool, bool) (in ./lt) ==1676== by 0x1114058: core.internal.gc.impl.conservative.gc.Gcx.smallAlloc(ulong, ref ulong, uint, const(TypeInfo)) (in ./lt) ==1676== by 0x111A024: core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC mallocNoSync(ulong, uint, ref ulong, const(TypeInfo)), core.internal.gc.impl.conservative.gc.mallocTime, core.internal.gc.impl.conservative.gc.numMallocs, ulong, uint, ulong, const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo)) (in ./lt) ==1676== by 0x1111ABD: core.internal.gc.impl.conservative.gc.ConservativeGC.qalloc(ulong, uint, scope const(TypeInfo)) (in ./lt) ==1676== by 0x10891B6: gc_qalloc (in ./lt) ==1676== by 0xD26B9B: std.array.Appender!(immutable(char)[]).Appender.ensureAddabl (ulong).__lambda9() (array.d:3576) ==1676== by 0xD26AB1: std.array.Appender!(immutable(char)[]).Appender.ensureAddable(ulong) (array.d:3576) ==1676== by 0x954102: std.array.Appender!(immutable(char)[]).Appender.put!(char[]).put(char[ ).bigDataFun(ulong) (array.d:3679) ==1676== by 0x953FF8: std.array.Appender!(immutable(char)[]).Appender.put!(char[]).put(char[]) (array.d:3682) ==1676== by 0x953FB5: std.array.Appender!(immutable(char)[]).Appender.put!(dchar).put(dchar) (wchar_.d:38) ==1676== I'm wondering if these warnings should be fixed, and how? And in general: should the D std lib be Valgrind warning free? Thanks.
Jul 21 2023
On Friday, 21 July 2023 at 16:38:12 UTC, mw wrote:And in general: should the D std lib be Valgrind warning free?By default no, because D's Garbage Collector does some low-level things that trips up valgrind. With dmd 2.105, there is new valgrind support though. https://dlang.org/changelog/2.105.0.html#druntime.valgrind Then you shouldn't get any warnings, other than those from your own code.
Jul 21 2023