[PATCH] ntdll: Add a futex-based condition variable implementation.

Brendan McGrath brendan at redmandi.com
Wed Nov 28 13:30:55 CST 2018


I couldn't find a bug specific to this issue so I have just raised one:

https://bugs.winehq.org/show_bug.cgi?id=46208

"When using wine-devel v3.21, Elite Dangerous is unstable and will usually freeze before finishing the opening video (but will sometimes get as far as shader compilation).

When attaching a debugger, it looks like all processes are waiting for an event.

The program needs to be killed with a 'kill -9'.

The workaround is to run Elite with 'taskset -c 0', but it also appears to progress further if you run with 'WINEDEBUG=+relay'.

This leads me to believe the issue is one of timing (as opposed to multi-threading).

When using wine-staging v3.21, Elite has no such problems and runs perfectly.

A git bi-sect led me to find that the reason for this was a single patch:
https://github.com/wine-staging/wine-staging/tree/master/patches/ntdll-futex-condition-var

Applying just this patch to wine-devel v3.21 results in the game running fine."


Obviously the workarounds have a detrimental effect on performance.

I haven't looked any further in to why the futex implementation works better with
Elite over the current implementation - but I'm happy to do so if desired.

On 28/11/18 8:57 pm, Alexandre Julliard wrote:
> Brendan McGrath <brendan at redmandi.com> writes:
>
>> It's required for Elite Dangerous to run (and I thought it would be nice
>> to have included in wine v4.0)
> Why is it required? Is there a bug about this?
>



More information about the wine-devel mailing list