www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Massive linker error after upgrade to DMD 2.068.1-1

reply "rcorre" <ryan rcorre.net> writes:
After upgrading from DMD 2.068.0-1 to DMD 2.068.1-1, my project 
began producing a large linker error (when built using dub).

I was able to trace it down to a single line:

target = target.adjacent(Diagonals.yes).randomSample(1).front;

target is of type RowCol 
(https://github.com/rcorre/dtiled/blob/master/src/dtiled/coords.d#L36),
which has an `adjacent` property that leverages chain, only, and 
take.

When I comment this line out (or build on a system with DMD 
2.068.0-1), I can build fine. When uncommented, I see (post 
ddemangle):

http://dpaste.com/1PJB35V

I've tried to break this down into a reduced example to prove 
that I can call randomSample on the range returned by 
RowCol.adjacent (http://dpaste.com/13G9WDE). This runs fine, so 
it seems to be a deeper issue with my build environment (full 
project at https://github.com/rcorre/damage_control if you're 
curious).

I don't want to turn this into "please debug my project for me", 
but do people have general hints on how to track down issues like 
this?

Thanks!

Side note: I see src/transition.d in the output, but I don't see 
how it is relevant to the error (it isn't even imported by the 
file causing the error).
Sep 12 2015
parent reply Nicholas Wilson <iamthewilsonator hotmail.com> writes:
On Saturday, 12 September 2015 at 20:05:28 UTC, rcorre wrote:
 After upgrading from DMD 2.068.0-1 to DMD 2.068.1-1, my project 
 began producing a large linker error (when built using dub).

 I was able to trace it down to a single line:

 target = target.adjacent(Diagonals.yes).randomSample(1).front;

 target is of type RowCol 
 (https://github.com/rcorre/dtiled/blob/master/src/dtiled/coords.d#L36),
 which has an `adjacent` property that leverages chain, only, 
 and take.

 When I comment this line out (or build on a system with DMD 
 2.068.0-1), I can build fine. When uncommented, I see (post 
 ddemangle):

 http://dpaste.com/1PJB35V

 I've tried to break this down into a reduced example to prove 
 that I can call randomSample on the range returned by 
 RowCol.adjacent (http://dpaste.com/13G9WDE). This runs fine, so 
 it seems to be a deeper issue with my build environment (full 
 project at https://github.com/rcorre/damage_control if you're 
 curious).

 I don't want to turn this into "please debug my project for 
 me", but do people have general hints on how to track down 
 issues like this?

 Thanks!

 Side note: I see src/transition.d in the output, but I don't 
 see how it is relevant to the error (it isn't even imported by 
 the file causing the error).
there was talk of adding symbol name compression some time ago ( to reduce lib size ( and maybe make ddemangle not fail on long syms?). This might be the cause of your problems i.e. the new compiler emitting references to compressed names but built with the old compiler using the not compressed ones. Try rebuilding everything and see if that fixes it.
Sep 12 2015
parent rcorre <ryan rcorre.net> writes:
On Sunday, 13 September 2015 at 00:21:22 UTC, Nicholas Wilson 
wrote:
 there was talk of adding symbol name compression some time ago 
 ( to reduce lib size ( and maybe make ddemangle not fail on 
 long syms?). This might be the cause of your problems i.e. the 
 new compiler emitting references to compressed names but built 
 with the old compiler using the not compressed ones. Try 
 rebuilding everything and see if that fixes it.
I tried deleting ~/.dub and the .dub folder in every referenced project and rebuilding, but unfortunately no luck.
Sep 15 2015