[Issue 18208] ddemangle RangeError at src/core/demangle.d(230)
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Jan 28 00:45:01 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18208
Timothee Cour <timothee.cour2 at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |timothee.cour2 at gmail.com
--- Comment #1 from Timothee Cour <timothee.cour2 at 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 at 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
```
--
More information about the Digitalmars-d-bugs
mailing list