I'm currently, very unsuccessfully, tracking down a crash on the unix side that only happens on Gitlab, and although I'm still unable to reproduce it, it then would be useful to have gdb to attach on segfault when I will.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5367
GStreamer uses _SC_NPROCESSORS_CONF to determine 'max-threads'. On the
Steam Deck, this is configured to be 16 (which is double its number
of logical cores).
_SC_NPROCESSORS_CONF also disregards a process's CPU affinity, thus it
can create more threads than is useful, which ultimately wastes memory
resources.
Using affinity to set 'max-threads' addresses both these problems.
--
v6: winegstreamer: Set MAX_THREADS to 4 for i386.
winegstreamer: Use thread_count to determine 'max-threads' value.
winegstreamer: Use process affinity to calculate thread_count.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5923
Rémi Bernon (@rbernon) commented about dlls/winegstreamer/unixlib.c:
> return STATUS_UNSUCCESSFUL;
> }
>
> + if (SUCCEEDED(NtQueryInformationProcess( GetCurrentProcess(),
> + ProcessAffinityMask, &process_mask, sizeof(process_mask), NULL )))
> + thread_count = popcount(process_mask);
> + else
> + thread_count = 0;
```suggestion:-4+0
if (!NtQueryInformationProcess(GetCurrentProcess(),
ProcessAffinityMask, &process_mask, sizeof(process_mask), NULL)))
thread_count = popcount(process_mask);
else
thread_count = 0;
```
SUCCEEDED is for HRESULT, Nt API returns NTSTATUS and we often just check that it's 0. Also note the style fixes (no space in paren here, continuation indent is 8 spaces).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5923#note_74517