October 01, 2017
https://bugzilla.gdcproject.org/show_bug.cgi?id=273

--- Comment #10 from Iain Buclaw <ibuclaw@gdcproject.org> ---
(In reply to Iain Buclaw from comment #9)
> So far I've narrowed it down to the commit *before* updating to 2.072 (bad)
> and the commit *after* updating to 2.075 (good).
> 
> Chances am it may just be libphobos 2.071 that is bad, but will continue to dig a bit further.

Yep, the first good commit is the updating phobos/druntime to 2.072.

-- 
You are receiving this mail because:
You are watching all bug changes.
October 01, 2017
https://bugzilla.gdcproject.org/show_bug.cgi?id=273

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|Normal                      |Highest
           Severity|normal                      |critical

--- Comment #11 from Iain Buclaw <ibuclaw@gdcproject.org> ---
I think the bug is in our setting of class flags for type Derived.  It seems to be setting 'ClassFlags.noPointers', however it does not set this for the class Base.

This is most curious, as if Base is determined to have pointers, then Derived should have the same flag setting.

Checking the part of the compiler where this logic is maintained.

-- 
You are receiving this mail because:
You are watching all bug changes.
October 01, 2017
https://bugzilla.gdcproject.org/show_bug.cgi?id=273

--- Comment #12 from Iain Buclaw <ibuclaw@gdcproject.org> ---
---
for (ClassDeclaration *bcd = cd; bcd; bcd = bcd->baseClass)
  {
    if (!bcd->members)
      continue;

──> for (size_t i = 0; i < cd->members->dim; i++)
      {
        Dsymbol *sm = (*cd->members)[i];
        if (sm->hasPointers ())
          goto Lhaspointers;
      }
  }
---

It was at this point when palm said hello to face.

First bad commit was: 8bffa3ab8857398ef800fccde153029d289b68fc

https://github.com/D-Programming-GDC/GDC/pull/371

This is actually a horribly horrific horridness of a regression.

Here's a minimal test case that fails in master:

---
void main()
{
    assert((Base.classinfo.m_flags & 2) == 0);    // OK
    assert((Derived.classinfo.m_flags & 2) == 0); // Fail
}

class Derived : Base { }

class Base
{
  Base[] children;
}
---

-- 
You are receiving this mail because:
You are watching all bug changes.
October 01, 2017
On 1 October 2017 at 10:17, Sebastien Alaiwan via D.gnu <d.gnu@puremagic.com> wrote:
> On Saturday, 30 September 2017 at 08:08:29 UTC, Iain Buclaw wrote:
>>
>> --- Comment #4 from Iain Buclaw <ibuclaw@gdcproject.org> ---
>> If there's a specific configuration that defeats the GC's ability to determine live objects from unreferenced, I'd like to know about it.
>
>
> This one is blocking us (luckily, only on one project).
> Any idea for a workaround?
>

Yes, the safe workaround is to have a pointer in the Derived class
(see update in bugzilla thread).


> We can't downgrade to gdc-6 because https://bugzilla.gdcproject.org/show_bug.cgi?id=250 (fixed on master, not backported to gdc-6).
>
> Thanks!
>
> (PS: You're talking about Ubuntu, please note that the testcase comes from
> Debian)
>

They come from the same build source tree. Apply mostly the same patches, and configure options.

It seems however that it is not Debian specific.  Found the cause, and pushing a fix right now. :-)

Regards
Iain.
October 01, 2017
https://bugzilla.gdcproject.org/show_bug.cgi?id=273

--- Comment #13 from Iain Buclaw <ibuclaw@gdcproject.org> ---
https://github.com/D-Programming-GDC/GDC/pull/554

-- 
You are receiving this mail because:
You are watching all bug changes.
October 02, 2017
On Sunday, 1 October 2017 at 21:19:16 UTC, Iain Buclaw wrote:
> Yes, the safe workaround is to have a pointer in the Derived class
>
> [...]
>
> Found the cause, and pushing a fix right now. :-)
>

This is great, thanks to both of you guys!

October 03, 2017
https://bugzilla.gdcproject.org/show_bug.cgi?id=273

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

-- 
You are receiving this mail because:
You are watching all bug changes.
1 2
Next ›   Last »