http://bugs.winehq.org/show_bug.cgi?id=58335
--- Comment #84 from Dmitry Timoshkov dmitry@baikal.ru --- (In reply to Dmitry Timoshkov from comment #83)
(In reply to Dmitry Timoshkov from comment #82)
(In reply to Dmitry Timoshkov from comment #81)
I'd guess that something is wrong with user_shared_data->ProcessorFeatures[PF_XSAVE_ENABLED] flags: https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/ntdll/unix/ signal_x86_64.c?ref_type=heads#L2754 which leads to execution of xsave64 instead of fxsave64.
As a quick check does replacing 'jz 2f' by 'jmp 2f' on line 2755 help?
According to some limited testing this does help.
Changing condition at https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/ntdll/unix/system. c?ref_type=heads#L528 from if (features[PF_AVX_INSTRUCTIONS_AVAILABLE] && features[PF_XSAVE_ENABLED]) init_xstate_features( &data->XState ); to if (features[PF_XSAVE_ENABLED]) init_xstate_features( &data->XState ); helps as well (without changing jz to jmp). It looks like xstate->EnabledFeatures should be always correctly initilalized to contain flags (1 << XSTATE_LEGACY_FLOATING_POINT) | (1 << XSTATE_LEGACY_SSE) regardless of AVX support.
And xstate->CompactionEnabled too.