On Tuesday, 27 November 2012 at 01:01:10 UTC, s0beit wrote:
I recently had this problem, and I think I've solved it for now
if anyone is still looking for a fix ... it's really ghetto but
it seems to work for me.

extern (Windows) BOOL DllMain(HMODULE hModule, ULONG ulReason,
LPVOID pvReserved)
{
        if(ulReason == DLL_PROCESS_ATTACH)
        {
                DllMainReal(hModule);

                core.memory.GC.collect(); //collect garbage before the return

                asm
                {
                        mov EAX, 1;
                        ret; // Don't give the garbage collector the chance to 
make
things messy
                }
        }

        return TRUE;
}

Actually completely disregard, what was actually happening was me being stupid. The reason why it didn't fault here is because I totally screwed up the stack and I believe that caused the exception handler to trigger when the DllMain call was finished. I don't know why this would prevent my module from crashing, but it did. It also halted execution of the rest of my code, go figure. No solution for this still. I'll keep working on it, but right now all I've got to go on is invalid memory access in one of the GC's Free functions.

Reply via email to