블리자드의 자체 충돌 처리기는 이후 프로세스를 중단하며 Summary: BREAKPOINT. 사용자에게는 충돌 대화창에
Kernel32.dll을 참조하는 오류 코드 127로 표시됩니다 .
핵심적인 사실은 충돌이 그래픽 레이어가 초기화되기 전에 발생한다는 점입니다. 즉, D3D12, VKD3D, Vulkan 디바이스 생성이 전혀 일어나지 않습니다 . 이는 GPU 드라이버나 DXVK 문제가 아님을 명확히 보여줍니다.
패치 3.1.0은 diablo_iv_loader.dll에 적용된 패커와 안티탬퍼 암호화를 업데이트했습니다 . 새로운 패커는 INT3 브레이크포인트를 의도적인 안티디버그 및 역공학 방지 수단으로 삽입하는 난독화 기법을 사용합니다. 윈도우에서는 예외 디스패처가 이를 투명하게 처리하지만, Wine/Proton에서는 작동에 실패하는 것입니다
.
PROTON_HIDE_NVIDIA_GPU=1, DRI_PRIME=1 같은 실행 매개변수나 DXVK 설정 변경은 효과가 없습니다. 충돌이 GPU 코드 실행 전에 발생하기 때문입니다 dstorage.dll 파일 삭제 또는 이름 변경도 이번 문제를 해결하지 못합니다 해결 방법은 두 가지뿐입니다: (a) 블리자드가 INT3 브레이크포인트 없이 Wine의 예외 처리와 호환되도록 로더를 다시 패키징하거나, (b) 특정 브레이크포인트를 가로채서 처리하는 Wine/Proton 수준의 패치를 만드는 것입니다. 로더가 난독화되고 안티탬퍼 보호되어 있기 때문에 이러한 패치를 만드는 것은 어렵고 불안정합니다.
diablo_iv_loader.dll의 Wine/Proton 브레이크포인트 문제를 해결하기 위한 별도의 긴급 패치를 준비 중이라고 밝혔습니다 이번 사건은 PC 게임에서 반복되는 문제를 강조합니다. 개발자들은 Wine/Proton 같은 호환성 레이어에 대한 테스트 없이 안티탬퍼 및 패커 시스템을 일상적으로 업데이트합니다. 안티탬퍼 소프트웨어는 비표준 환경에서 다르게 동작하도록 설계되어 있으며, 새로운 패커 버전이나 추가 INT3 검사 같은 작은 변경이 게임 자체에 코드 변경이 없더라도 Proton 호환성을 조용히 깨뜨릴 수 있습니다 .