dmd crash help
Don
nospam at nospam.com
Thu Feb 4 00:54:43 PST 2010
strtr wrote:
> strtr Wrote:
>
>> dmd(1.048/55/56) crashed on me:
>> AppName: dmd.exe AppVer: 0.0.0.0 ModName: unknown
>> ModVer: 0.0.0.0 Offset: 00000002
>> There is a lot of crash data but I do not know where to start looking.
>> I've also tried finding which part of the code is responsible, but I haven't found it yet.
>
> Everything is working again and I have found this piece of code which chokes the compiler.
>
> module main;
>
> //Digital Mars D Compiler v1.056
> //bud_win_3.04.exe -full -cleanup
>
> enum ENUM
> {
> N0 = 1, //N0 = x; crashes for some values of x, ie. 1 and 10. and not for others ie. 3.
> N1,
> N2,
> N3,
> N4,
> N5,
> N6,
> N7,
> N8,
> N9,
> N10,
> N11,
> N12,
> N13,
> N14,
> N15,
> N16,
> N17,
> N18
> }
>
>
> const char[][ ENUM.max + 1 ] ENUM_NAME =
> [
> ENUM.N0 : "N0",
> ];
>
> void main()
> {
> char[] text = `Hi`;
>
> switch(text)
> {
> //case `N0`: //this works
> case ENUM_NAME[ENUM.N0]: //this doesn't
> //return ENUM.N0;
> default:
> break;
> }
> }
>
> I will post it together with my previous reported enum incomprehensibility bug if it can't be further minimized.
Excellent! I can reproduce it.
The D2 version of this code (char[] text = `Hi`.dup;) segfaults in
Expression::arraySyntaxCopy() in expression.c, with evidence of memory
corruption. The D1 version does *not* segfault there. In fact the code
compiles with the debug version of DMD1!
I think the array literal isn't getting initialized properly.
More information about the Digitalmars-d-learn
mailing list