Weird behaviour when using -release in dmd

Rene Zwanenburg via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jun 6 07:21:37 PDT 2014


On Friday, 6 June 2014 at 10:10:25 UTC, Mikko Aarnos wrote:
> Hello all, I have a program which works perfectly when compiled 
> without -release:
>
> parser "a implies b equivalent not b implies not a"
> Input: ((a implies b) equivalent ((not b) implies (not a)))
> CNF: (((((not a) or b) or (not b)) and (((not a) or b) or a)) 
> and (((b or (not a
> )) or a) and ((b or (not a)) or (not b))))
> Time(in ms) = 0
>
> However, when I add -release, this happens:
>
> parser "a implies b equivalent not b implies not a"
> object.Error: assert(0) or HLT instruction
> ----------------
> 0x0040220C
> 0x0040208F
> 0x0040206B
> 0x00403AAF
> 0x004084C8
> 0x0040849B
> 0x004083B4
> 0x0040454B
> 0x74F0338A in BaseThreadInitThunk
> 0x774A9F72 in RtlInitializeExceptionChain
> 0x774A9F45 in RtlInitializeExceptionChain
>
> Does anybody here have any idea what could cause this? The 
> error seems to happen in a completely innocent part of code 
> without any reason so I haven't the faintest idea what could 
> cause it. I can post the source code if necessary, it's not 
> long (under 1000 lines including unit tests) but it's probably 
> pretty hard to read on some parts, mainly the parser.
>
> -Mikko Aarnos

Please try compiling with -g (generate debug info). The magic 
numbers should turn into a stack trace, so you know where the 
assert is triggered.


More information about the Digitalmars-d-learn mailing list