Scary Windows issues

Simon Marlow simonmarhaskell at gmail.com
Wed Aug 30 10:11:49 EDT 2006


Esa Ilari Vuokko wrote:

> The other one is the various concurrency tests that fail.  The machine
> in which I run these is P4 with hyperthreading, and in my experience
> hyperthreading does bring out threading-related bugs that won't appear
> on normal single core machines.
> 

I have fixed a few things that were affecting these tests, and disabled some 
tests that were inappropriate.  I'm left with

    conc014(ghci,threaded1,threaded2)
    conc015(ghci,threaded1)
    conc017(ghci,threaded1,threaded2)

these all fail because in the threaded RTS on Windows, threadDelay is not 
interruptible like it is on Unix.  I do intend to fix this (but not for 6.6), so 
I should probably mark these as expected failures.

Now, the worrying this is I'm left with some tests that do this:

conc007.exe: getMBlocks: VirtualAlloc MEM_COMMIT failed: The parameter is incorrect.

(I improved the error message).  With a given RTS build it is always the same 
tests that fail in this way, but if I tweak the RTS or use a debugging RTS, the 
error goes away or moves to a different test.  I haven't managed to reproduce it 
with a debugging RTS at all, which is frustrating.  It appears to have nothing 
to do with -threaded, though - these failures happen with the normal way too.

conc007 & conc012 seem to trigger it more than other tests.

Esa - do you see this?  Any ideas?

Cheers,
	Simon

>    conc012(threaded2)
> Exception (stack overflow) in a thread.  This actually plain crashes.
> 
>    conc014(normal,opt,optasm,prof,profasm,ghci,threaded1,threaded2)
>    conc015(normal,opt,optasm,prof,profasm,ghci,threaded1,threaded2)
>    conc017(normal,opt,optasm,prof,profasm,ghci,threaded1,threaded2)
> Async exceptions. These crash in diffrent ways, depending on WAY.
> 
>    conc023(normal,ghci,threaded1,threaded2)
> QSemN. This one corrupts heap somehow and crashes in diffrent ways -
> I have seen various crashes from panics to just read/write out of
> heap.
>    conc053(threaded1,threaded2)
> QSemN+stm
> 
>    conc037(threaded1,threaded2)
>    conc038(threaded1,threaded2)
> These just have ffi import Windows doesn't have - sleep.  Is adding
> CPP, and conditionally importing windows.h/Sleep a good way to fix
> them?
> 
>    conc056(threaded1,threaded2)
> 
> 
> The async exception and QSemN problems are somewhat beyond me to debug,
> if everyone else is busy, I'll try to debug those but I'd appreciate if
> someone more experienced would look into them.  I've been running some of
> the exception failures in debug mode and using various RTS flags and
> reading the code, but I can't spot anything wrong in the code.
> 
> Let me know if I can help somehow.
> 
> Best regards,
> --Esa



More information about the Cvs-ghc mailing list