This took me multiple days to work out what the issue was. The problem here appears to be that wine, proton, cafe etc. only supports 32 logical cores.
Therefore, having 128 logical cores is going to cause issues, and evidently page faults.
The fix in short: Remove any files named MultiProcessor Support.8BX
from your wine prefix, and Photoshop will no longer page fault, since it will run on one core now.
The solution for me was here in a post from 2008…
https://community.spiceworks.com/topic/18778-photoshop-problem
Running on stock wine does not reveal the error, however on steam or proton, the error was more clear:
(You won’t see this error using stock wine, however it is the same issue)
02dc:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 128 logical cores, but only 32 supported!
02dc:fixme:ntdll:create_logical_proc_info skipping logical processor 33
02dc:fixme:ntdll:create_logical_proc_info skipping logical processor 34
02dc:fixme:ntdll:create_logical_proc_info skipping logical processor 35
02dc:fixme:ntdll:create_logical_proc_info skipping logical processor 36
02dc:fixme:ntdll:create_logical_proc_info skipping logical processor 37
02dc:fixme:ntdll:create_logical_proc_info skipping logical processor 38
02dc:fixme:ntdll:create_logical_proc_info skipping logical processor 39
wine: Unhandled page fault on write access to 0065006C at address 0999226D (thread 0114), starting debugger...
Unhandled exception: page fault on write access to 0x0065006c in 32-bit code (0x
0999226d).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
EIP:0999226d ESP:0328d83c EBP:0328d870 EFLAGS:00010213( R- -- I -A- -C)
EAX:0065006c EBX:0328d9f1 ECX:0328da39 EDX:00000020
ESI:00003818 EDI:18c70320
Stack dump:
0x0328d83c: 1c45d808 00000000 0328dafc 0328db0c
0x0328d84c: 00000001 00000000 00000000 0000000a
0x0328d85c: 00000027 ffffff70 0328da64 099d98b8
0x0328d86c: 00000000 0328d898 004f113c 0328d9f1
0x0328d87c: 0328da39 0328d9a9 18c00020 ffffffb8
0x0328d88c: 00000167 00000000 00000000 0328d908
Backtrace:
=>0 0x0999226d EntryPoint+0x10eed() in multiprocessor support.8bx (0x0328d870)
1 0x004f113c in photoshop (+0xf113c) (0x0328d898)
...
30 0x0157823c in photoshop (+0x117823c) (0x0328f668)
31 0x6eda541c AdjustWindowRect+0x343fc() in user32 (0x0328f698)
34 0x6ed6af81 AppendMenuA+0xfeb1() in user32 (0x0328f7e8)
38 0x01549a04 in photoshop (+0x1149a04) (0x0328fe9c)
39 0x0162c037 ??0_Mutex@std@@QAE@W4_Uninitialized@1@@Z+0xa19() in photoshop (0
x0328ff30)
40 0x7b62e090 ActivateActCtx+0x23560() in kernel32 (0x0328ff48)
41 0x7bc5da97 A_SHAFinal+0x3d3f7() in ntdll (0x0328ff5c)
42 0x7bc5e240 A_SHAFinal+0x3dba0() in ntdll (0x0328ffec)
0x0999226d multiprocessor support.8bx+0x1226d: movl %ebx,0x0(%eax)
Modules:
Module Address Debug info Name (114 modules)
PE 00140000-00194000 Deferred shlwapi
PE 001a0000-001ff000 Deferred mscms
The error lies in: 0x0999226d multiprocessor support.8bx+0x1226d: movl %ebx,0x0(%eax)
multiprocessor support.8bx for 32 logical cores is OK
multiprocessor support.8bx for 128 logical cores is NOT OK
Ideally, using taskset
would be the best way to control a process’s CPU affinity, however the program still page faults.
The good news is, we can simply tell Photoshop, Illustrator, InDesign, etc. to disable MultiProcessor support, by removing MultiProcessor Support.8BX
.
# go to your wine prefixes and remove the files named MultiProcessor Support.8BX
cd ~/.wine/drive_c/Program Files/Adobe
find | grep -i MultiProcessor
Here are my MultiProcessor plugins, I deleted them all:
[user@hostname Program Files]$ find | grep -i MultiProcessor
./Adobe Photoshop CS6/Required/Plug-Ins/Extensions/MultiProcessor Support.8BX.bak
./Adobe Bridge CS6/Plug-Ins/MultiProcessor Support.8BX.bak
./Adobe Bridge CS6/apd/plugins/MultiProcessor Support.8BX.bak
You can delete them, or simply rename them.
Photoshop will only run on one logical thread now, however it will work.