Compiler not compiling properly, causing weird errors

Jarrett Billingsley kb3ctd2 at yahoo.com
Sat Dec 8 20:03:07 PST 2007


"Bisse" <dj.bisse at gmail.com> wrote in message 
news:fjfl47$1f7c$1 at digitalmars.com...
> I'm using the latest stable version of DMD (1.015) along with Bud 3.04 and
> Derelict. I'm making an application using SDL and OpenGL and it's been 
> working
> great so far, except that i'm getting horribly weird compiler-related 
> errors.
>
> For example, I can be working on one part of the application, and suddenly 
> an
> entirely different part of it starts not working. Mostly it's Access
> violations, but it can be other weird stuff too. After having encountered
> about 20 too many of these weird errors and solving them the same way 
> every
> time, this is what I now do mostly every time I compile, and EVERY time I 
> get
> any sort of error: I delete all the files created by the compiler - .obj,
> .exe, .map, .ksp, .rsp, and whatever else it makes. Then I recompile. 
> Poof,
> the error is gone. It will also solve errors like the linker complaining 
> it
> can't find a certain symbol, and similiar.
>
> I'll also sometimes get errors which force me to restructure/rewrite my 
> code.
> For example, after half an hour I managed to pinpoint an Access violation 
> to
> being caused by a function being CALLED - irrelevant of the argument sent 
> to
> it, at certain points in the code, the function would simply crash the
> application if called. I didn't use it very often so taking the code out 
> of
> the function and CTRL-C'ing it into where I used it removed the crash 
> entirely.
>
> It's gotten to the point where I simply can't trust the compiler to 
> compile my
> program correctly without putting arvitrary bugs into it - When I get an 
> error
> I can't be sure if it's my fault or the compiler's fault. Please, if 
> anyone
> knows what could cause this, or has experienced anything similiar, i'll be
> really happy for all the help I can get

First of all, the "latest stable version" is something of a myth.  1.024 is, 
as far as I can tell, perfectly stable, or at least no less stable than any 
version before it.  Newer versions also have more bugs fixed.  You can get 
the newest version by looking at the change log and clicking on the 
appropriate version.

Secondly, your odd problems -- crashing in the middle of functions for no 
apparent reason -- are you using the -cov flag?  I've had some issues with 
DMD emitting bad code for the coverage counters, trying to increment bogus 
memory locations instead of the correct counter.  Of course, I haven't been 
able to ever make a reproduceable test case, and it only seems to happen 
with large programs..

Lastly, I haven't heard of crashes being caused by it, but keeping object 
files around when using DMD is probably not the best idea.  There are 
usually linking issues.  It seems to vastly prefer compiling everything all 
at once every time (and it's not slow either).  To that end you'd probably 
be better served by using either the -full or -clean flags with Bud. 




More information about the Digitalmars-d-bugs mailing list