Had a quick look at the source code. You have a potential infinite loop in this code in hider.cpp
Code:
//simple locking library
static bool locked=false;
static void lock()
{
while(locked);
locked=true;
}
if locked is true upon entry, then this is an infinite loop because locked is not declared volatile. An optimizing compiler will thus only fetch memory once, but not repeatedly in the loop.
The disassembly confirms this (see screenshot).