Thread overview
[Issue 10317] New: Regression (2.063): Recursive error within Phobos
Jun 09, 2013
Andrej Mitrovic
Jun 10, 2013
Andrej Mitrovic
Jun 10, 2013
Andrej Mitrovic
Jun 10, 2013
Andrej Mitrovic
Jun 10, 2013
Andrej Mitrovic
[Issue 10317] (2.063): Recursive error within Phobos
Jun 10, 2013
Andrej Mitrovic
June 09, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317

           Summary: Regression (2.063): Recursive error within Phobos
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: regression
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: andrej.mitrovich@gmail.com


--- Comment #0 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-06-09 07:21:42 PDT ---
-----
module test;

import std.algorithm;

struct Set(E)
{
    E[] sortedElements() inout
    {
        E[] elems = payload.keys;
        sort(elems);  // Causes error
        return elems;
    }

    int[E] payload;
}

enum E { a, b }

struct S
{
    Set!E e;
}

void main()
{
    S s;
}
-----

2.062:
$ dmd test.d

2.063
$ dmd test.d
C:\DMD\dmd2\windows\bin\..\..\src\phobos\std\format.d(2009): Error: template
instance std.traits.CharTypeOf!(E) recursive expansion

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317



--- Comment #1 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-06-09 17:31:33 PDT ---
Btw, when building with MSC the error never shows up, the compiler just spins the CPU forever. I guess this is a bug of its own.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317


Andrei Alexandrescu <andrei@erdani.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrei@erdani.com


--- Comment #2 from Andrei Alexandrescu <andrei@erdani.com> 2013-06-09 18:18:15 PDT ---
Simplified:

import std.algorithm;

enum E { a, b }

void main()
{
    auto a = new E[100];
    sort(a);
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317



--- Comment #3 from Andrei Alexandrescu <andrei@erdani.com> 2013-06-09 19:08:51 PDT ---
I looked into this, here's how far I got:

On
https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm.d#L8130,
"static if (is(typeof(text(r))))" is evaluated. That's what's causing the
crash. The question is what's causing the bug. I don't know; instantiating
typeof(text(r)) works properly in tests.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317



--- Comment #4 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-06-09 19:12:35 PDT ---
(In reply to comment #3)
> I looked into this, here's how far I got:
> 
> On
> https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm.d#L8130,
> "static if (is(typeof(text(r))))" is evaluated. That's what's causing the
> crash. The question is what's causing the bug. I don't know; instantiating
> typeof(text(r)) works properly in tests.

What I'm wondering: when does text(r) ever not work? Is there an actual
test-case for this?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317



--- Comment #5 from Andrei Alexandrescu <andrei@erdani.com> 2013-06-09 19:14:03 PDT ---
(In reply to comment #4)
> (In reply to comment #3)
> > I looked into this, here's how far I got:
> > 
> > On
> > https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm.d#L8130,
> > "static if (is(typeof(text(r))))" is evaluated. That's what's causing the
> > crash. The question is what's causing the bug. I don't know; instantiating
> > typeof(text(r)) works properly in tests.
> 
> What I'm wondering: when does text(r) ever not work? Is there an actual
> test-case for this?

Hmm, good point. I don't know. I think at this time we have a textual representation for everything.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317



--- Comment #6 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-06-09 19:43:52 PDT ---
(In reply to comment #5)
> Hmm, good point. I don't know. I think at this time we have a textual representation for everything.

Ok, I'll whip up a quick test and a phobos pull, so we can at least avoid blocking the .2 release.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317



--- Comment #7 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-06-09 19:47:10 PDT ---
(In reply to comment #6)
> (In reply to comment #5)
> > Hmm, good point. I don't know. I think at this time we have a textual representation for everything.
> 
> Ok, I'll whip up a quick test and a phobos pull, so we can at least avoid blocking the .2 release.

https://github.com/D-Programming-Language/phobos/pull/1343

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317



--- Comment #8 from github-bugzilla@puremagic.com 2013-06-10 09:41:21 PDT ---
Commits pushed to master at https://github.com/D-Programming-Language/phobos

https://github.com/D-Programming-Language/phobos/commit/8f5f220194c313dad1cdc36db797ecbee78844d0
Fix Issue 10317 - Remove text(range) check and avoid recursive instantiation
bug.

https://github.com/D-Programming-Language/phobos/commit/28189ff131e9003d1b0ed5a148f43d65f1823c87 Merge pull request #1343 from AndrejMitrovic/Fix10317

Issue 10317 - Remove text(range) check and avoid recursive instantiation bug.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10317


Andrej Mitrovic <andrej.mitrovich@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Regression (2.063):         |(2.063): Recursive error
                   |Recursive error within      |within Phobos
                   |Phobos                      |
           Severity|regression                  |normal


--- Comment #9 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-06-10 11:35:58 PDT ---
The library fix is in place, but we still have to figure out why 2.062 doesn't exhibit the same behavior even though it has the same library code. So I'm downgrading this to a normal bug to avoid blocking the .2 release

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------