[phobos] std.parallelism's unit tests randomly hang on win32

Walter Bright walter at digitalmars.com
Wed May 4 10:37:15 PDT 2011


Does it work as a single threaded program?

On 5/4/2011 6:51 AM, David Simcha wrote:
> I went a slightly different route and tried to reduce the problem to as small 
> a test case as possible, like I would normally do for a compiler bug.  So far 
> I've managed to reduce it to ~560 lines.  I've discovered this one's more 
> unstable (i.e. the results change a lot more in response to slight 
> perturbations) than I thought.  Just changing the layout of the Task struct 
> (deleting member variables that are no longer used anywhere) makes it go from 
> unit test failures to access violations. Adding or removing try/catch blocks 
> or empty destructors in some places can completely prevent the bug from 
> manifesting.  On Linux, if I perturb things slightly by changing the layout of 
> Task, I get exceptions thrown from core.sync.
>
> This looks like some kind of memory/stack corruption bug but due to its 
> nondeterminism (only a few thread interleavings seem to take the proper 
> codepath and I'm not sure which ones) and its very indirect manifestation 
> (memory corruption; the low order bit overwriting thing was, I think, just a 
> manifestation of a deeper problem), I am somewhat at a loss for how to debug 
> it.  I've scrutinized the concurrency related aspects and still can't find any 
> bugs there.  However, I can't prove it's not a concurrency bug since running 
> in single threaded mode prevents certain code paths from being taken.  Unless 
> I get some advice that changes things, I think my next move is to compare the 
> disassemblies for cases that work to those for cases that don't.
>


More information about the phobos mailing list