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

Walter Bright walter at digitalmars.com
Wed May 4 11:13:43 PDT 2011


I guess I'm asking if there is a way to execute all those paths in a single 
threaded manner, in order to flush out any suspected code gen bugs.

On 5/4/2011 10:39 AM, David Simcha wrote:
> Yes, it works as a single threaded program, but there are a lot of code paths 
> that are never taken unless a worker thread finishes a job before the 
> submitter thread needs the result (which obviously can't happen in 
> single-threaded mode).  Therefore, this does not prove that the issue is a 
> concurrency bug.
>
> On Wed, May 4, 2011 at 1:37 PM, Walter Bright <walter at digitalmars.com 
> <mailto:walter at digitalmars.com>> wrote:
>
>     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.
>
>     _______________________________________________
>     phobos mailing list
>     phobos at puremagic.com <mailto:phobos at puremagic.com>
>     http://lists.puremagic.com/mailman/listinfo/phobos
>
>
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/phobos/attachments/20110504/ac6e1ca7/attachment-0001.html>


More information about the phobos mailing list