Thread overview
[Issue 15947] [REG 2.069.0?] simple multithreaded program + "-profile=gc" = crash
Apr 21, 2016
Ivan Kazmenko
Apr 21, 2016
Vladimir Panteleev
Apr 21, 2016
Ivan Kazmenko
Apr 21, 2016
Ivan Kazmenko
Apr 06, 2017
Mihails Strasuns
April 21, 2016
https://issues.dlang.org/show_bug.cgi?id=15947

--- Comment #1 from Ivan Kazmenko <gassa@mail.ru> ---
Interestingly, a modified version does not crash:

-----prfail2.d-----
import std.concurrency;
void someWork () {auto x = [1];}
void main () {spawn (&someWork); someWork ();}
-----

I was curious if this guarantees that the spawned thread finishes before the main thread, but the third example, also crashing, seems to contradict that:

-----prfail3.d-----
import std.concurrency;
void someWork () {auto x = [1];}
void main () {
    spawnLinked (&someWork);
    try {receive ((int) {});}
    catch (LinkTerminated o) {}
}
-----

--
April 21, 2016
https://issues.dlang.org/show_bug.cgi?id=15947

Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thecybershadow@gmail.com

--- Comment #2 from Vladimir Panteleev <thecybershadow@gmail.com> ---
Issue 14511?

--
April 21, 2016
https://issues.dlang.org/show_bug.cgi?id=15947

Ivan Kazmenko <gassa@mail.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://issues.dlang.org/sh
                   |                            |ow_bug.cgi?id=14511

--
April 21, 2016
https://issues.dlang.org/show_bug.cgi?id=15947

--- Comment #3 from Ivan Kazmenko <gassa@mail.ru> ---
(In reply to Vladimir Panteleev from comment #2)
> Issue 14511?

The details are different, but perhaps the cause is the same.

I was hesitant to put this as a comment for 14511 because "-profile" and "-profile=gc" are of unknown relation to me, and 14511 seems to be about "-profile" initially.

--
April 06, 2017
https://issues.dlang.org/show_bug.cgi?id=15947

Mihails Strasuns <mihails.strasuns.contractor@sociomantic.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mihails.strasuns.contractor
                   |                            |@sociomantic.com

--- Comment #4 from Mihails Strasuns <mihails.strasuns.contractor@sociomantic.com> ---
This sample is sufficient to reproduce the crash for me with -profile=gc :

---
void main ( )
{
    import core.thread;

    auto t = new Thread({
        auto x = new int;
    }).start();
}
```

--
April 06, 2017
https://issues.dlang.org/show_bug.cgi?id=15947

--- Comment #5 from github-bugzilla@puremagic.com ---
Commit pushed to stable at https://github.com/dlang/druntime

https://github.com/dlang/druntime/commit/08835c01cf2d64a06c53739223edba55cc23db2f Simple multithreaded program + "-profile=gc" = crash

Fixes issue 15947 (https://issues.dlang.org/show_bug.cgi?id=15947)
Fixes issue 14511 (https://issues.dlang.org/show_bug.cgi?id=14511)

Root problem was trying to increment non-existent AA field upon merging profile stats. The code was also simplified to remove unnecessary condition.

--
May 04, 2017
https://issues.dlang.org/show_bug.cgi?id=15947

--- Comment #6 from github-bugzilla@puremagic.com ---
Commit pushed to master at https://github.com/dlang/druntime

https://github.com/dlang/druntime/commit/08835c01cf2d64a06c53739223edba55cc23db2f Simple multithreaded program + "-profile=gc" = crash

--
August 07, 2017
https://issues.dlang.org/show_bug.cgi?id=15947

--- Comment #7 from github-bugzilla@puremagic.com ---
Commit pushed to newCTFE at https://github.com/dlang/druntime

https://github.com/dlang/druntime/commit/08835c01cf2d64a06c53739223edba55cc23db2f Simple multithreaded program + "-profile=gc" = crash

--