Weird behaviour when using -release in dmd

Mikko Aarnos via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jun 6 03:10:24 PDT 2014


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


More information about the Digitalmars-d-learn mailing list