May 02, 2019
After updating my dmd toolchain to the latest git master today, I started getting strange random program lockups.  At first I thought it was caused by passing the wrong druntime options (--DRT-*) that's incompatible with the latest druntime, but then I started seeing messages of this sort:

	core.sync.exception.SyncError@(0): Unable to unlock mutex.

The program in question uses std.parallelism.parallel to parallelize a bunch of I/O-heavy tasks.  It has been working fine for many months now. Did something break recently in std.parallelism or the core.sync.* utilities that it presumably uses under the hood?


T

-- 
Just because you can, doesn't mean you should.
May 05, 2019

On 03/05/2019 01:57, H. S. Teoh wrote:
> After updating my dmd toolchain to the latest git master today, I started getting strange random program lockups.  At first I thought it was caused by passing the wrong druntime options (--DRT-*) that's incompatible with the latest druntime, but then I started seeing messages of this sort:
> 
> 	core.sync.exception.SyncError@(0): Unable to unlock mutex.
> 
> The program in question uses std.parallelism.parallel to parallelize a bunch of I/O-heavy tasks.  It has been working fine for many months now. Did something break recently in std.parallelism or the core.sync.* utilities that it presumably uses under the hood?
> 

Parallel marking by the GC has recently been merged into master which might create a couple of extra threads. Is this causing the failures? Please try disabling it with --DRT-gcopt=parallel:0