[Issue 18208] ddemangle RangeError@src/core/demangle.d(230)

2018-02-26 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18208

Timothee Cour  changed:

   What|Removed |Added

   Severity|normal  |major

--


[Issue 18208] ddemangle RangeError@src/core/demangle.d(230)

2018-02-26 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18208

--- Comment #2 from Timothee Cour  ---
further reduced:


```
  auto
mangled="_D4vibe4data4bson14BsonSerializer__T18endWriteArrayEntryTSQCeQCc13serialization__T9SubTraitsTSQDoQDmQBk__T6TraitsTAfSQElQEjQCh13DefaultPolicyVS6dproto10attributes6PackedS0VSQBeQBa10ProtoFieldS2a5_666c6f6174i6ZQDzTfZQFdZQHbMFNaNbNiNfmZv";
  import core.demangle;
  auto dst=new char[50];
  auto ret=demangle(mangled, dst);
  import std.stdio;
  writeln(ret);

```

```
core.exception.RangeError@core/demangle.d(230): Range violation

0   lldbdplugin 0x00010bbd1839
object.Throwable.TraceInfo core.runtime.defaultTraceHandler(void*) + 137
1   lldbdplugin 0x00010bbeaf7a _d_createTrace + 58
2   lldbdplugin 0x00010bbebb74 _d_throw_exception +
132
3   lldbdplugin 0x00010bbcf71e onRangeError + 158
4   lldbdplugin 0x00010bbd01e7 _d_arraybounds + 7
5   lldbdplugin 0x00010bbc947b pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.append(const(char)[]) +
251
6   lldbdplugin 0x00010bbca270 pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseLName() + 400
7   lldbdplugin 0x00010bbca30f pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseLName() + 559
8   lldbdplugin 0x00010bbcb324 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseQualifiedName() +
68
9   lldbdplugin 0x00010bbca482 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) + 114
10  lldbdplugin 0x00010bbcc8dd pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseTemplateArgs() +
141
11  lldbdplugin 0x00010bbcd073 pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseTemplateInstanceName(bool)
+ 323
12  lldbdplugin 0x00010bbccea7 pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseMangledName(bool,
ulong) + 487
13  lldbdplugin 0x00010bbcd4c2 pure nothrow @safe
char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.doDemangle!(core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseMangledName).doDemangle()
+ 130
14  lldbdplugin 0x00010bbc2774 pure nothrow @safe
char[] core.demangle.demangle(const(char)[], char[]) + 84
15  lldbdplugin 0x00010ba9ed3e void
dtools.lldbdplugin.__unittest__Users_timothee_git_clone__timotheecour__dtools_dtools_lldbdplugin_d_115_1()
+ 78
16  lldbdplugin 0x00010ba9ffda
dtools.lldbdplugin.__unittest + 10
17  lldbdplugin 0x00010bbd1ff7 int
core.runtime.runModuleUnitTests().__foreachbody2(object.ModuleInfo*) + 23
18  lldbdplugin 0x00010bbf3fa1 int
rt.minfo.moduleinfos_apply(scope int
delegate(immutable(object.ModuleInfo*))).__foreachbody2(ref
rt.sections_elf_shared.DSO) + 49
19  lldbdplugin 0x00010bbf4ac9 int
rt.sections_elf_shared.DSO.opApply(scope int delegate(ref
rt.sections_elf_shared.DSO)) + 57
20  lldbdplugin 0x00010bbf3f4b int
rt.minfo.moduleinfos_apply(scope int delegate(immutable(object.ModuleInfo*))) +
27
21  lldbdplugin 0x00010bbe529e int
object.ModuleInfo.opApply(scope int delegate(object.ModuleInfo*)) + 30
22  lldbdplugin 0x00010bbd1ee2 runModuleUnitTests +
130
23  lldbdplugin 0x00010bbeb4ea _d_run_main + 442
24  lldbdplugin 0x00010ba9e654 main + 36

```

--


[Issue 18208] ddemangle RangeError@src/core/demangle.d(230)

2018-02-26 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18208

Timothee Cour  changed:

   What|Removed |Added

 OS|Linux   |All

--


[Issue 18208] ddemangle RangeError@src/core/demangle.d(230)

2018-01-27 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18208

Timothee Cour  changed:

   What|Removed |Added

 CC||timothee.co...@gmail.com

--- Comment #1 from Timothee Cour  ---
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   0x000104b1fece _d_arrayboundsp +
110
5   ddemangle   0x000104b18ad7 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.append(const(char)[]) +
483
6   ddemangle   0x000104b18c0d pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.put(const(char)[]) +
129
7   ddemangle   0x000104b1d28a pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseValue(char[],
char) + 1574
8   ddemangle   0x000104b1ded8 pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseTemplateArgs() +
652
9   ddemangle   0x000104b1e69e pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseTemplateInstanceName(bool)
+ 282
10  ddemangle   0x000104b1e9be pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseSymbolName() + 162
11  ddemangle   0x000104b1eca0 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseQualifiedName() +
68
12  ddemangle   0x000104b1ad82 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) +
3558
13  ddemangle   0x000104b1bdcf pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]).__lambda4()
+ 19
14  ddemangle   0x000104b1bccb pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]).parseBackrefType(scope
char[] delegate() pure @safe) + 263
15  ddemangle   0x000104b1a036 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) + 154
16  ddemangle   0x000104b1c8ac pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseFuncArguments() +
760
17  ddemangle   0x000104b1ebd2 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseFunctionTypeNoReturn(bool)
+ 374
18  ddemangle   0x000104b1ecaa pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseQualifiedName() +
78
19  ddemangle   0x000104b1ad82 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) +
3558
20  ddemangle   0x000104b1a1d2 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseType(char[]) + 566
21  ddemangle   0x000104b1c8ac pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseFuncArguments() +
760
22  ddemangle   0x000104b1ebd2 pure @safe char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseFunctionTypeNoReturn(bool)
+ 374
23  ddemangle   0x000104b1ee82 pure @safe void
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.parseMangledName(bool,
ulong) + 374
24  ddemangle   0x000104b1f469 pure nothrow @safe
char[]
core.demangle.Demangle!(core.demangle.NoHooks).Demangle.doDe