[Issue 2238] New: Internal DMD data corruption

Jarrett Billingsley kb3ctd2 at yahoo.com
Sat Jul 19 14:29:29 PDT 2008


<d-bugmail at puremagic.com> wrote in message 
news:bug-2238-3 at http.d.puremagic.com/issues/...
> http://d.puremagic.com/issues/show_bug.cgi?id=2238
>
>           Summary: Internal DMD data corruption
>           Product: D
>           Version: 1.033
>          Platform: PC
>        OS/Version: Windows
>            Status: NEW
>          Severity: minor
>          Priority: P4
>         Component: DMD
>        AssignedTo: bugzilla at digitalmars.com
>        ReportedBy: 2korden at gmail.com
>
>
> Compiling the code:
>
> main.d
> ~~~~~~
> import math.Matrix;
>
> void main()
> {
>    auto a = new Matrix44F();
>    Matrix44F.add(a, a);
> }
>
> math/Matrix.d
> ~~~~~~~~~~~~~
> module math.Matrix;
>
> class Matrix44F
> {
>    static M add(M)(M a, M b);
> }
>
> produces the following DMD output:
> Error 42: Symbol Undefined
> _D4math6Mбrix9х44F32__T3addTCЂ–ЎZЂ„ќFЂ—ќЂ˜ґЂ—˜
>
> Looks like some internal data corruption takes place...
> Changing nearly anything (return type value, number of arguments, module 
> name
> etc.) makes problem disappear.

DMDWin compresses long(er) symbol names in order to fit them in the 
extremely restrictive limits of the OMF format, so the above symbol looks 
pretty typical for templates on DMDWin.  It's odd that it doesn't seem to be 
resolving correctly though.  Maybe one part of the compiler is lz77 
compressing the template symbol names and another is MD5 hashing them? 




More information about the Digitalmars-d-bugs mailing list