https://issues.dlang.org/show_bug.cgi?id=18208
Timothee Cour <timothee.co...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |timothee.co...@gmail.com --- Comment #1 from Timothee Cour <timothee.co...@gmail.com> --- just ran into that why doing: git clone https://github.com/dlang-community/D-Scanner && cd D-Scanner && dub build && nm bin/dscanner|ddemangle After reduction here's a symbol that triggers (see below). In addition to fixing this bug, we should make demangle inner loop protected via a try/catch so that demangle keeps going till end of stdin, and then rethrow error at the end (at least as an option ddemangle --keep-going-on-error) ``` echo _D3std4conv__T10emplaceRefTSQBa12experimental5lexer__T14TokenStructureThVAyaa305_0a20202020737472696e6720636f6d6d656e743b0a20202020737472696e6720747261696c696e67436f6d6d656e743b0a0a20202020696e74206f70436d702873697a655f7420692920636f6e73742070757265206e6f7468726f77204073616665207b0a202020202020202069662028696e646578203c2069292072657475726e202d313b0a202020202020202069662028696e646578203e2069292072657475726e20313b0a202020202020202072657475726e20303b0a202020207d0a0a20202020696e74206f70436d702872656620636f6e737420747970656f66287468697329206f746865722920636f6e73742070757265206e6f7468726f77204073616665207b0a202020202020202072657475726e206f70436d70286f746865722e696e646578293b0a202020207d0aZQYoTQZtTQZxZQBAoFKQBAhKQBAmZ1S11__xopEqualsFKxSQBCjQBCj__TQBCiTQBCaTQBCfTQBCkZQBDcFKQBCvKQBDaZQCoKxQCbZb | ddemangle core.exception.RangeError@src/core/demangle.d(230): Range violation ---------------- 4 ddemangle 0x0000000104b1fece _d_arrayboundsp + 110 5 ddemangle 0x0000000104b18ad7 pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.append(const(char)[]) + 483 6 ddemangle 0x0000000104b18c0d pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.put(const(char)[]) + 129 7 ddemangle 0x0000000104b1d28a pure @safe void core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseValue(char[], char) + 1574 8 ddemangle 0x0000000104b1ded8 pure @safe void core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseTemplateArgs() + 652 9 ddemangle 0x0000000104b1e69e pure @safe void core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseTemplateInstanceName(bool) + 282 10 ddemangle 0x0000000104b1e9be pure @safe void core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseSymbolName() + 162 11 ddemangle 0x0000000104b1eca0 pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseQualifiedName() + 68 12 ddemangle 0x0000000104b1ad82 pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) + 3558 13 ddemangle 0x0000000104b1bdcf pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]).__lambda4() + 19 14 ddemangle 0x0000000104b1bccb pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]).parseBackrefType(scope char[] delegate() pure @safe) + 263 15 ddemangle 0x0000000104b1a036 pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) + 154 16 ddemangle 0x0000000104b1c8ac pure @safe void core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseFuncArguments() + 760 17 ddemangle 0x0000000104b1ebd2 pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseFunctionTypeNoReturn(bool) + 374 18 ddemangle 0x0000000104b1ecaa pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseQualifiedName() + 78 19 ddemangle 0x0000000104b1ad82 pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) + 3558 20 ddemangle 0x0000000104b1a1d2 pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) + 566 21 ddemangle 0x0000000104b1c8ac pure @safe void core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseFuncArguments() + 760 22 ddemangle 0x0000000104b1ebd2 pure @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseFunctionTypeNoReturn(bool) + 374 23 ddemangle 0x0000000104b1ee82 pure @safe void core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseMangledName(bool, ulong) + 374 24 ddemangle 0x0000000104b1f469 pure nothrow @safe char[] core.demangle.Demangle!(core.demangle.NoHooks).Demangle.doDemangle!(core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseMangledName).doDemangle() + 49 25 ddemangle 0x0000000104b182ed pure nothrow @safe char[] core.demangle.demangle(const(char)[], char[]) + 121 26 ddemangle 0x0000000104b07508 nothrow @safe const(char)[] ddemangle.demangleMatch!(char[]).demangleMatch(std.regex.Captures!(char[]).Captures) + 92 27 ddemangle 0x0000000104b0746c nothrow @safe void std.regex.replaceAll!(ddemangle.demangleMatch, char[], std.regex.internal.ir.Regex!(char).Regex).replaceAll(char[], std.regex.internal.ir.Regex!(char).Regex).__lambda3!(std.regex.Captures!(char[]).Captures, std.array.Appender!(char[]).Appender).__lambda3(std.regex.Captures!(char[]).Captures, std.array.Appender!(char[]).Appender) + 80 28 ddemangle 0x0000000104b07309 @safe void std.regex.replaceMatchesInto!(std.regex.replaceAll!(ddemangle.demangleMatch, char[], std.regex.internal.ir.Regex!(char).Regex).replaceAll(char[], std.regex.internal.ir.Regex!(char).Regex).__lambda3, std.array.Appender!(char[]).Appender, char[], std.regex.RegexMatch!(char[]).RegexMatch).replaceMatchesInto(ref std.array.Appender!(char[]).Appender, char[], std.regex.RegexMatch!(char[]).RegexMatch) + 301 29 ddemangle 0x0000000104b05718 @safe char[] std.regex.replaceAllWith!(std.regex.replaceAll!(ddemangle.demangleMatch, char[], std.regex.internal.ir.Regex!(char).Regex).replaceAll(char[], std.regex.internal.ir.Regex!(char).Regex).__lambda3, std.regex.matchAll, char[], std.regex.internal.ir.Regex!(char).Regex).replaceAllWith(char[], std.regex.internal.ir.Regex!(char).Regex) + 268 30 ddemangle 0x0000000104b05602 @trusted char[] std.regex.replaceAll!(ddemangle.demangleMatch, char[], std.regex.internal.ir.Regex!(char).Regex).replaceAll(char[], std.regex.internal.ir.Regex!(char).Regex) + 54 31 ddemangle 0x0000000104b055bc @safe char[] ddemangle.ddemangle!(char[]).ddemangle(char[]) + 96 32 ddemangle 0x0000000104adf8a6 _Dmain + 470 33 ddemangle 0x0000000104b31c13 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll().__lambda1() + 39 34 ddemangle 0x0000000104b31aa3 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) + 31 35 ddemangle 0x0000000104b31b7e void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll() + 138 36 ddemangle 0x0000000104b31aa3 void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate()) + 31 37 ddemangle 0x0000000104b31a11 _d_run_main + 485 38 ddemangle 0x0000000104adfa1f main + 15 39 libdyld.dylib 0x00007fff53874144 start + 0 40 ??? 0x0000000000000000 0x0 + 0 ``` --