Jump to page: 1 2
Thread overview
[Issue 14578] [ddemangle] core.exception.InvalidMemoryOperationError@(0) handling large symbol list
May 12, 2015
Martin Nowak
May 12, 2015
Vladimir Panteleev
May 14, 2015
Iain Buclaw
May 14, 2015
Iain Buclaw
May 14, 2015
ag0aep6g@gmail.com
May 22, 2015
Walter Bright
May 22, 2015
Iain Buclaw
Jun 03, 2015
Iain Buclaw
Jun 15, 2015
Iain Buclaw
May 12, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |code@dawg.eu

--- Comment #1 from Martin Nowak <code@dawg.eu> ---
Fails on
_D3std3uni53__T11TrieBuilderTbTuTS3std3uni14__T5clampVmi7Z5clampZ11TrieBuilder8putRangeMFNeuubZ12__dgliteral4MFNaNbNiNfZAxa
while trying to decode the function type of FNeuubZ12__dgliteral4MFNaNbNiNfZAxa
or so.

--
May 12, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thecybershadow@gmail.com

--- Comment #2 from Vladimir Panteleev <thecybershadow@gmail.com> ---
Can you get a stack trace?

http://wiki.dlang.org/InvalidMemoryOperationError

--
May 14, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ibuclaw@gdcproject.org
           Severity|normal                      |regression

--- Comment #3 from Iain Buclaw <ibuclaw@gdcproject.org> ---
(gdb) bt
#0  onInvalidMemoryOperationError (pretend_sideffect=0x0) at
src/core/exception.d:536
#1  0x00000000004dd558 in _d_arrayshrinkfit (ti=0x5275f0 <TypeInfo_Aa.init$>,
arr=...) at src/rt/lifetime.d:684
#2  0x00000000004c6906 in object.assumeSafeAppend!(char).assumeSafeAppend(ref
inout(char[])) (arr=0x773518) at ./../../src/druntime/import/object.di:662
#3  0x00000000004c5f5e in std.stdio.File.ByLineImpl!(char,
char).ByLineImpl.popFront() (this=0x773500) at
./../../src/phobos/std/stdio.d:1677
#4  0x00000000004c5d1b in std.stdio.File.ByLine!(char, char).ByLine.popFront()
(this=0x7fffffffda08) at ./../../src/phobos/std/stdio.d:1624
#5  0x00000000004a62be in D main (args=...) at ddemangle.d:79

(gdb) up
#1  0x00000000004dd558 in _d_arrayshrinkfit (ti=0x5275f0 <TypeInfo_Aa.init$>,
arr=...) at src/rt/lifetime.d:684

(gdb) p info
$1 = {base = 0x7ffff7ee8400, size = 1024, attr = 10}

(gdb) p newsize
$2 = 1023

(gdb) p tinext
$3 = (object.TypeInfo *) 0x5279c0 <TypeInfo_a.init$>


Going to upgrade this to regression: https://github.com/D-Programming-Language/druntime/commit/0b72987df17354c83bc302672f4f132fe03db65a https://github.com/D-Programming-Language/druntime/commit/e25cab10d763b36b9c63c62e3713134a137e2760

It throws because newsize + 2 overflows 1024, so assumeSafeAppend fails.

--
May 14, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

--- Comment #4 from Iain Buclaw <ibuclaw@gdcproject.org> ---
OK, got a reduced test:

---
import std.stdio;
void main()
{
    foreach (line; stdin.byLine())
    {
    }
}
---

Only require two lines of stdin with the following constraints:

#1 Line:  Length >= 510 && Length <= 1021
#2 Line:  Length == 1023

--
May 14, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

ag0aep6g@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ag0aep6g@gmail.com

--- Comment #5 from ag0aep6g@gmail.com ---
(In reply to Iain Buclaw from comment #4)
> OK, got a reduced test:
> 
> ---
> import std.stdio;
> void main()
> {
>     foreach (line; stdin.byLine())
>     {
>     }
> }
> ---
> 
> Only require two lines of stdin with the following constraints:
> 
> #1 Line:  Length >= 510 && Length <= 1021
> #2 Line:  Length == 1023

Duplicate of issue 14005 and in turn of issue 13856?

--
May 22, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla@digitalmars.com

--- Comment #6 from Walter Bright <bugzilla@digitalmars.com> ---
(In reply to Iain Buclaw from comment #3)
> Going to upgrade this to regression: https://github.com/D-Programming-Language/druntime/commit/ 0b72987df17354c83bc302672f4f132fe03db65a https://github.com/D-Programming-Language/druntime/commit/ e25cab10d763b36b9c63c62e3713134a137e2760
> 
> It throws because newsize + 2 overflows 1024, so assumeSafeAppend fails.

I don't get what those changes have to do with the last sentence.

--
May 22, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

--- Comment #7 from Iain Buclaw <ibuclaw@gdcproject.org> ---
(In reply to Walter Bright from comment #6)
> (In reply to Iain Buclaw from comment #3)
> > Going to upgrade this to regression: https://github.com/D-Programming-Language/druntime/commit/ 0b72987df17354c83bc302672f4f132fe03db65a https://github.com/D-Programming-Language/druntime/commit/ e25cab10d763b36b9c63c62e3713134a137e2760
> > 
> > It throws because newsize + 2 overflows 1024, so assumeSafeAppend fails.
> 
> I don't get what those changes have to do with the last sentence.

__setArrayAllocLength returns false if newlength+padding exceeds the size allocated to the array.  Before, it just blissfully ignored this assertion and let the program continue.

What's interesting in the context of this failure, however, is that newlength == oldlength.

--
May 22, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

Steven Schveighoffer <schveiguy@yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |schveiguy@yahoo.com

--- Comment #8 from Steven Schveighoffer <schveiguy@yahoo.com> ---
(In reply to Iain Buclaw from comment #4)
> OK, got a reduced test:
> 
> ---
> import std.stdio;
> void main()
> {
>     foreach (line; stdin.byLine())
>     {
>     }
> }
> ---
> 
> Only require two lines of stdin with the following constraints:
> 
> #1 Line:  Length >= 510 && Length <= 1021
> #2 Line:  Length == 1023

I can't reproduce this.
I made a file with 2 lines, one is 520 bytes, the other is 1023 bytes (I tried
adding and subtracting one character to the second line in case you were
including newlines in that requirement).

Still works without asserting. This is with 2.067 on OSX.

--
June 02, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

--- Comment #9 from Steven Schveighoffer <schveiguy@yahoo.com> ---
I think this might be a duplicate of https://issues.dlang.org/show_bug.cgi?id=13856

I still cannot reproduce this.

--
June 02, 2015
https://issues.dlang.org/show_bug.cgi?id=14578

--- Comment #10 from Steven Schveighoffer <schveiguy@yahoo.com> ---
I finally reproduced with 2.067 and 2.067.1, it's definitely Linux specific. However, this is fixed in the HEAD version (at least using your reduced test case). Can you confirm whether this bug is fixed in HEAD for you, Iain?

--
« First   ‹ Prev
1 2