https://bugs.winehq.org/show_bug.cgi?id=45121
--- Comment #4 from Filip Volejnik f.volejnik@gmail.com --- Created attachment 61834 --> https://bugs.winehq.org/attachment.cgi?id=61834 Patch for ptid mapping (by zfigura)
Coming from esync/dxvk discord, steam seems to search for it's other process (with open_process calls) with ptid decreasing by 4, in a loop, in some cases. This causes the high idle CPU usage. Zfigura authored this as a test to see if it helps - and it does, for us who tested it there. I'm not sure if this is upstreamable, but it's worth as a source of info, at least.
Sample of the problematic behavior (taken with WINEDBG=+server): 0034: open_process( pid=0033, access=00000400, attributes=00000000 ) 0034: open_process() = 0 { handle=0128 } 0034: open_process( pid=0033, access=00000040, attributes=00000002 ) 0034: open_process() = 0 { handle=01b0 } 003e: open_process( pid=0033, access=00000040, attributes=00000002 ) 003e: open_process() = 0 { handle=01b0 } 0034: open_process( pid=0033, access=00000400, attributes=00000000 ) 0034: open_process() = 0 { handle=01a8 } 0040: open_process( pid=0033, access=00000400, attributes=00000000 ) 0040: open_process() = 0 { handle=0248 } 0040: open_process( pid=000e, access=00000410, attributes=00000000 ) 0040: open_process() = 0 { handle=034c } 0040: open_process( pid=0010, access=00000410, attributes=00000000 ) 0040: open_process() = 0 { handle=034c } 0040: open_process( pid=0013, access=00000410, attributes=00000000 ) 0040: open_process() = 0 { handle=034c } 0040: open_process( pid=001e, access=00000410, attributes=00000000 ) 0040: open_process() = 0 { handle=034c } 0040: open_process( pid=0023, access=00000410, attributes=00000000 ) 0040: open_process() = 0 { handle=034c } 0040: open_process( pid=0033, access=00000410, attributes=00000000 ) 0040: open_process() = 0 { handle=034c } 0040: open_process( pid=0033, access=00000040, attributes=00000002 ) 0040: open_process() = 0 { handle=039c } 003e: open_process( pid=0033, access=00000040, attributes=00000002 ) 003e: open_process() = 0 { handle=039c } 005c: open_process( pid=0033, access=00001000, attributes=00000000 ) 005c: open_process() = 0 { handle=0388 } ....
This goes on forever