Blizzard嘅Crash Handler之後會終止程序,出 Summary: BREAKPOINT 嘅錯誤訊息。用家見到就係 Error Code 127,個Crash Dialog仲會提到 Kernel32.dll 。
最重要嘅一點:呢個Crash發生喺 Graphics層初始化之前 — 連D3D12、VKD3D或者Vulkan Device都未開。呢個發現完全排除咗GPU Driver或者DXVK有問題嘅可能性。
Patch 3.1.0更新咗 diablo_iv_loader.dll 嘅Packer同反篡改加密。新Packer用咗混淆技術,刻意插入INT3中斷點嚟做反Debug同反逆向工程。Windows底下Exception Dispatcher可以靜雞雞食咗佢,但Wine/Proton就搞唔掂,結果就Game Over 。
PROTON_HIDE_NVIDIA_GPU=1、DRI_PRIME=1 或者改DXVK Config全部冇用,因為Crash喺任何GPU Code行之前就發生咗。dstorage.dll — 呢招之前Patch用嚟搞掂Startup Crash係有效嘅,但今次完全唔Work 。唯一嘅Fix得兩個:(a) Blizzard重新Packing個Loader,令佢唔好喺Wine底下行INT3 Breakpoint;或者(b) 整一個Wine/Proton層面嘅Patch,截住同Handle呢個特定嘅Breakpoint。但因為Loader俾人混淆加密過,整呢個Patch相當困難同脆弱。
diablo_iv_loader.dll 喺Wine/Proton底下嘅Breakpoint問題。截至7月2日,呢個Fix仲未推出,Bug Report帖已經有655個回覆,論壇流量繼續上升。呢單嘢揭示咗PC Gaming一個成日出現嘅問題:開發商成日更新反篡改同Packer系統,但完全唔會針對Wine/Proton呢啲相容性層嚟測試。反篡改軟體本身就係專登喺非標準環境底下有唔同表現,所以細微嘅改動 — 新Packer版本或者多加一個INT3 Check — 就算Game本身冇改過Code,都可以靜雞雞整死Proton相容性。
同樣嘅Pattern喺Denuvo Activation度都出現過,Linux用家因為換太多次Proton版本而被Lock Out 。每次Fix都係要靠Valve Reactive咁Patch Proton,或者Developer出新Binary Update。而且呢啲嘢全部都要等到用家發現咗同Report咗先會搞。Diablo IV呢次特別大鑊,因為佢影響到Steam Deck — 一個官方有支援、之前完全正常嘅平台。