[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