www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 2238] New: Internal DMD data corruption

reply d-bugmail puremagic.com writes:
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 digitalmars.com
        ReportedBy: 2korden 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.


-- 
Jul 19 2008
next sibling parent "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
<d-bugmail puremagic.com> wrote in message 
news:bug-2238-3 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 digitalmars.com
        ReportedBy: 2korden 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?
Jul 19 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2238


2korden gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|1.033                       |1.031





DMD1.029 gives correct error message, but DMD1.031+ doesn't so it's a
regression and Windows only (thanks Christian).


-- 
Jul 19 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2238


bugzilla digitalmars.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID





It isn't corrupt data. dmd will compress the identifiers when they get too
long, you're seeing the compressed version (because the linker just spits out
what it sees).


-- 
Aug 29 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2238


2korden gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|minor                       |enhancement
             Status|RESOLVED                    |REOPENED
         Resolution|INVALID                     |
            Summary|Internal DMD data corruption|Linker shows long identifier
                   |                            |names in a not human
                   |                            |readable compressed form on
                   |                            |Windows





Ok, I agree that it's not a bug, but it is an annoying. There could be some
mapping from a compressed name too full one, and linker should output correct
mangled name. Its output supposed to be read by human, isn't it? It is supposed
to help user in tracking the problem, not for confusing him.

Besides, showing external data in internal representation isn't very good as it
breaks incapsulation :)


-- 
Aug 30 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2238






Bump! Just hit by this one again. How am I supposed to decypher (and fix)
errors like:

 Error 42: Symbol Undefined
_D3stl4utiбcont6Vector40__TЂ‡ЊTC2ui7Ђ„ќrol7CяэZЂ‡Ґ9findFirstMFЂќ°SЂЖр8IteraЂѓ‰
 Error 42: Symbol Undefined
_D3stl4utiбcont6Vector40__TЂ‡ЊTC2ui7Ђ„ќrol7CяэZЂ‡Ґ3endMFZSЂЖО8IteraЂѓ‰


-- 
Dec 08 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2238






---
Created an attachment (id=441)
 --> (http://d.puremagic.com/issues/attachment.cgi?id=441)
Test case for unhelpful behaviour

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 25 2009
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2238


simon <s.d.hammett googlemail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |s.d.hammett googlemail.com





---
I think this is a bug.

dmd is hitting an error, outputting no error message, leaving behind a corrupt
.obj and then just to add to the confusion is going on to run the link step,
resulting in the erroneous linker errors.

This situation is less than ideal.
At the least dmd should exit with 'unknown error'.

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