[dmd-beta] D2 2.058 beta

Martin Nowak dawg at dawgfoto.de
Sat Feb 11 01:11:22 PST 2012


On Sat, 11 Feb 2012 09:09:51 +0100, Walter Bright <walter at digitalmars.com>  
wrote:

>
>
> On 2/10/2012 11:12 AM, Masahiro Nakagawa wrote:
>> On Sat, Feb 11, 2012 at 3:49 AM, Walter Bright <walter at digitalmars.com
>> <mailto:walter at digitalmars.com>> wrote:
>>
>>
>>
>>     On 2/10/2012 8:59 AM, Masahiro Nakagawa wrote:
>>
>>         Following code works on dmd 2.057, but causing segmentation  
>> fault on
>>         dmd 2.058 beta.
>>
>>         -----
>>         struct S
>>         {
>>            void foo(V)(in V v)
>>            {
>>            }
>>
>>            void foo(Args...)(auto ref const Args args)
>>            {
>>                foreach (i, T; Args)
>>                    foo(args[i]);
>>            }
>>         }
>>
>>         void main()
>>         {
>>            S s;
>>            s.foo(10);
>>         }
>>         ----
>>
>>         Does anyone report this issue?
>>         This bug is critical for my msgpack-d and related libraries.
>>
>>
>>     This compiles for me without error. When it runs, I get a stack  
>> overflow.
>>     The reason looks clear - foo(Args) is recursively calling itself. I  
>> don't
>>     think it's a bug in dmd.
>>
>>
>> I retried above code using new beta on two environments.
>>
>> Mac OS X 10.6.8 causes segmentation fault, but
>> Scientific Linux release 6.0 64bit works fine.
>>
>> Does D allow above code?
>
> Do you mean the compiler seg faults or the compiled program seg faults?

/usr/bin/ld: Warning: size of symbol `_D3bug1S10__T3fooTiZ3fooMFxiZv'  
changed from 64 in bug.o to 55 in bug.o
Both instantiations have the same mangling. The linkers seem to chose  
different ones.


More information about the dmd-beta mailing list