“เกมพังเพราะ Microsoft ‘ใส่ชื่อไว้ในลิสต์’ — เมื่อ DXGI Detour ทำ ARM64 Crash แบบไร้คำอธิบาย”
นักพัฒนาเกม Space Station 14 ได้แชร์ประสบการณ์การดีบักสุดโกลาหลบน Windows ARM64 ที่นำไปสู่การค้นพบว่า Microsoft แอบใส่ชื่อ executable ของเกมไว้ใน “ลิสต์พิเศษ” ซึ่งทำให้ระบบ DXGI บน Windows 11 ติดตั้ง detour เข้าไปในฟังก์ชัน GetDC() และทำให้เกม crash ทันทีเมื่อเปิดหน้าต่างที่สอง
เรื่องเริ่มจากการพอร์ตเกมไปยัง ARM64 โดยใช้ SDL3 และ ANGLE เพื่อรองรับ OpenGL บน Windows ARM64 แต่เมื่อรันเกมผ่าน launcher ที่รวมทั้ง x64 และ ARM64 กลับพบว่าเกม crash โดยไม่มี log ใด ๆ เลย หลังจากใช้ WinDbg ดีบักอย่างหนัก พบว่า crash เกิดใน USER32!GetDC ซึ่งเป็นฟังก์ชันพื้นฐานของ Win32
เมื่อเจาะลึกลงไป พบว่า DXGI!My_GetDC ได้ติดตั้ง detour เข้าไปใน GetDC() เพื่อบังคับใช้ “flip model” ซึ่งเป็นฟีเจอร์ใหม่ของ Windows 11 ที่ใช้เพื่อเพิ่มประสิทธิภาพการแสดงผลใน windowed mode โดยเฉพาะกับเกมเก่า แต่ปัญหาคือฟีเจอร์นี้ไม่เคยถูกทดสอบกับเกม ARM64 มาก่อน
สิ่งที่น่าตกใจคือ crash เกิดเฉพาะเมื่อ executable มีชื่อว่า SS14.Loader.exe เท่านั้น หากเปลี่ยนชื่อไฟล์ เกมจะไม่ crash ซึ่งหมายความว่า Microsoft ใช้ “ลิสต์ชื่อเกม” ที่ฝังอยู่ใน Windows เพื่อบังคับใช้ฟีเจอร์นี้กับบางเกมโดยเฉพาะ และ Space Station 14 ถูกใส่เข้าไปโดยไม่รู้ตัว
นักพัฒนาพยายามหาทางแก้ เช่น ปิดฟีเจอร์ใน Settings หรือเปลี่ยนชื่อไฟล์ แต่ก็เจอข้อจำกัดจาก Steamworks ที่ไม่รองรับ ARM64 ทำให้ไม่สามารถใช้ชื่ออื่นได้ในระบบจริง สุดท้ายจึงต้องเลื่อนการรองรับ Windows ARM64 ออกไปจนกว่าบั๊กจะถูกแก้ หรือจนกว่าจะเปลี่ยน renderer ไปใช้ DirectX แทน OpenGL
ข้อมูลสำคัญจากข่าว
เกม Space Station 14 crash บน Windows ARM64 เมื่อใช้ชื่อไฟล์ SS14.Loader.exe
Crash เกิดในฟังก์ชัน USER32!GetDC ซึ่งถูก DXGI ติดตั้ง detour เข้าไป
Detour นี้เป็นส่วนหนึ่งของฟีเจอร์ “Optimizations for windowed games” บน Windows 11
ฟีเจอร์นี้บังคับใช้ “flip model” เพื่อเพิ่มประสิทธิภาพการแสดงผล
การดีบักและการค้นพบ
ใช้ WinDbg ดีบัก พบว่า stack trace แสดง DXGI!My_GetDC เป็นจุดเริ่มของปัญหา
การเปลี่ยนชื่อ executable ทำให้เกมไม่ crash อีก
Microsoft ใช้ลิสต์ชื่อเกมเพื่อบังคับใช้ฟีเจอร์นี้กับบางเกมโดยเฉพาะ
ฟีเจอร์นี้ไม่เคยถูกทดสอบกับเกม ARM64 มาก่อน
ข้อมูลเสริมจากภายนอก
“flip model” เป็นเทคนิคใหม่ที่ใช้ใน DirectX เพื่อแทน bitblt model แบบเก่า
ANGLE ใช้ SWAP_EFFECT_SEQUENTIAL ซึ่งไม่รองรับ flip model โดยตรง
OpenGL บน Windows ARM64 ใช้ Mesa บน D3D12 ซึ่งมีบั๊กด้านกราฟิก
WinDbg บน ARM64 ยังมีข้อจำกัดในการดีบัก .NET และ C# stack trace
https://slugcat.systems/post/25-09-21-dxgi-debugging-microsoft-put-me-on-a-list/
นักพัฒนาเกม Space Station 14 ได้แชร์ประสบการณ์การดีบักสุดโกลาหลบน Windows ARM64 ที่นำไปสู่การค้นพบว่า Microsoft แอบใส่ชื่อ executable ของเกมไว้ใน “ลิสต์พิเศษ” ซึ่งทำให้ระบบ DXGI บน Windows 11 ติดตั้ง detour เข้าไปในฟังก์ชัน GetDC() และทำให้เกม crash ทันทีเมื่อเปิดหน้าต่างที่สอง
เรื่องเริ่มจากการพอร์ตเกมไปยัง ARM64 โดยใช้ SDL3 และ ANGLE เพื่อรองรับ OpenGL บน Windows ARM64 แต่เมื่อรันเกมผ่าน launcher ที่รวมทั้ง x64 และ ARM64 กลับพบว่าเกม crash โดยไม่มี log ใด ๆ เลย หลังจากใช้ WinDbg ดีบักอย่างหนัก พบว่า crash เกิดใน USER32!GetDC ซึ่งเป็นฟังก์ชันพื้นฐานของ Win32
เมื่อเจาะลึกลงไป พบว่า DXGI!My_GetDC ได้ติดตั้ง detour เข้าไปใน GetDC() เพื่อบังคับใช้ “flip model” ซึ่งเป็นฟีเจอร์ใหม่ของ Windows 11 ที่ใช้เพื่อเพิ่มประสิทธิภาพการแสดงผลใน windowed mode โดยเฉพาะกับเกมเก่า แต่ปัญหาคือฟีเจอร์นี้ไม่เคยถูกทดสอบกับเกม ARM64 มาก่อน
สิ่งที่น่าตกใจคือ crash เกิดเฉพาะเมื่อ executable มีชื่อว่า SS14.Loader.exe เท่านั้น หากเปลี่ยนชื่อไฟล์ เกมจะไม่ crash ซึ่งหมายความว่า Microsoft ใช้ “ลิสต์ชื่อเกม” ที่ฝังอยู่ใน Windows เพื่อบังคับใช้ฟีเจอร์นี้กับบางเกมโดยเฉพาะ และ Space Station 14 ถูกใส่เข้าไปโดยไม่รู้ตัว
นักพัฒนาพยายามหาทางแก้ เช่น ปิดฟีเจอร์ใน Settings หรือเปลี่ยนชื่อไฟล์ แต่ก็เจอข้อจำกัดจาก Steamworks ที่ไม่รองรับ ARM64 ทำให้ไม่สามารถใช้ชื่ออื่นได้ในระบบจริง สุดท้ายจึงต้องเลื่อนการรองรับ Windows ARM64 ออกไปจนกว่าบั๊กจะถูกแก้ หรือจนกว่าจะเปลี่ยน renderer ไปใช้ DirectX แทน OpenGL
ข้อมูลสำคัญจากข่าว
เกม Space Station 14 crash บน Windows ARM64 เมื่อใช้ชื่อไฟล์ SS14.Loader.exe
Crash เกิดในฟังก์ชัน USER32!GetDC ซึ่งถูก DXGI ติดตั้ง detour เข้าไป
Detour นี้เป็นส่วนหนึ่งของฟีเจอร์ “Optimizations for windowed games” บน Windows 11
ฟีเจอร์นี้บังคับใช้ “flip model” เพื่อเพิ่มประสิทธิภาพการแสดงผล
การดีบักและการค้นพบ
ใช้ WinDbg ดีบัก พบว่า stack trace แสดง DXGI!My_GetDC เป็นจุดเริ่มของปัญหา
การเปลี่ยนชื่อ executable ทำให้เกมไม่ crash อีก
Microsoft ใช้ลิสต์ชื่อเกมเพื่อบังคับใช้ฟีเจอร์นี้กับบางเกมโดยเฉพาะ
ฟีเจอร์นี้ไม่เคยถูกทดสอบกับเกม ARM64 มาก่อน
ข้อมูลเสริมจากภายนอก
“flip model” เป็นเทคนิคใหม่ที่ใช้ใน DirectX เพื่อแทน bitblt model แบบเก่า
ANGLE ใช้ SWAP_EFFECT_SEQUENTIAL ซึ่งไม่รองรับ flip model โดยตรง
OpenGL บน Windows ARM64 ใช้ Mesa บน D3D12 ซึ่งมีบั๊กด้านกราฟิก
WinDbg บน ARM64 ยังมีข้อจำกัดในการดีบัก .NET และ C# stack trace
https://slugcat.systems/post/25-09-21-dxgi-debugging-microsoft-put-me-on-a-list/
🧠 “เกมพังเพราะ Microsoft ‘ใส่ชื่อไว้ในลิสต์’ — เมื่อ DXGI Detour ทำ ARM64 Crash แบบไร้คำอธิบาย”
นักพัฒนาเกม Space Station 14 ได้แชร์ประสบการณ์การดีบักสุดโกลาหลบน Windows ARM64 ที่นำไปสู่การค้นพบว่า Microsoft แอบใส่ชื่อ executable ของเกมไว้ใน “ลิสต์พิเศษ” ซึ่งทำให้ระบบ DXGI บน Windows 11 ติดตั้ง detour เข้าไปในฟังก์ชัน GetDC() และทำให้เกม crash ทันทีเมื่อเปิดหน้าต่างที่สอง
เรื่องเริ่มจากการพอร์ตเกมไปยัง ARM64 โดยใช้ SDL3 และ ANGLE เพื่อรองรับ OpenGL บน Windows ARM64 แต่เมื่อรันเกมผ่าน launcher ที่รวมทั้ง x64 และ ARM64 กลับพบว่าเกม crash โดยไม่มี log ใด ๆ เลย หลังจากใช้ WinDbg ดีบักอย่างหนัก พบว่า crash เกิดใน USER32!GetDC ซึ่งเป็นฟังก์ชันพื้นฐานของ Win32
เมื่อเจาะลึกลงไป พบว่า DXGI!My_GetDC ได้ติดตั้ง detour เข้าไปใน GetDC() เพื่อบังคับใช้ “flip model” ซึ่งเป็นฟีเจอร์ใหม่ของ Windows 11 ที่ใช้เพื่อเพิ่มประสิทธิภาพการแสดงผลใน windowed mode โดยเฉพาะกับเกมเก่า แต่ปัญหาคือฟีเจอร์นี้ไม่เคยถูกทดสอบกับเกม ARM64 มาก่อน
สิ่งที่น่าตกใจคือ crash เกิดเฉพาะเมื่อ executable มีชื่อว่า SS14.Loader.exe เท่านั้น หากเปลี่ยนชื่อไฟล์ เกมจะไม่ crash ซึ่งหมายความว่า Microsoft ใช้ “ลิสต์ชื่อเกม” ที่ฝังอยู่ใน Windows เพื่อบังคับใช้ฟีเจอร์นี้กับบางเกมโดยเฉพาะ และ Space Station 14 ถูกใส่เข้าไปโดยไม่รู้ตัว
นักพัฒนาพยายามหาทางแก้ เช่น ปิดฟีเจอร์ใน Settings หรือเปลี่ยนชื่อไฟล์ แต่ก็เจอข้อจำกัดจาก Steamworks ที่ไม่รองรับ ARM64 ทำให้ไม่สามารถใช้ชื่ออื่นได้ในระบบจริง สุดท้ายจึงต้องเลื่อนการรองรับ Windows ARM64 ออกไปจนกว่าบั๊กจะถูกแก้ หรือจนกว่าจะเปลี่ยน renderer ไปใช้ DirectX แทน OpenGL
✅ ข้อมูลสำคัญจากข่าว
➡️ เกม Space Station 14 crash บน Windows ARM64 เมื่อใช้ชื่อไฟล์ SS14.Loader.exe
➡️ Crash เกิดในฟังก์ชัน USER32!GetDC ซึ่งถูก DXGI ติดตั้ง detour เข้าไป
➡️ Detour นี้เป็นส่วนหนึ่งของฟีเจอร์ “Optimizations for windowed games” บน Windows 11
➡️ ฟีเจอร์นี้บังคับใช้ “flip model” เพื่อเพิ่มประสิทธิภาพการแสดงผล
✅ การดีบักและการค้นพบ
➡️ ใช้ WinDbg ดีบัก พบว่า stack trace แสดง DXGI!My_GetDC เป็นจุดเริ่มของปัญหา
➡️ การเปลี่ยนชื่อ executable ทำให้เกมไม่ crash อีก
➡️ Microsoft ใช้ลิสต์ชื่อเกมเพื่อบังคับใช้ฟีเจอร์นี้กับบางเกมโดยเฉพาะ
➡️ ฟีเจอร์นี้ไม่เคยถูกทดสอบกับเกม ARM64 มาก่อน
✅ ข้อมูลเสริมจากภายนอก
➡️ “flip model” เป็นเทคนิคใหม่ที่ใช้ใน DirectX เพื่อแทน bitblt model แบบเก่า
➡️ ANGLE ใช้ SWAP_EFFECT_SEQUENTIAL ซึ่งไม่รองรับ flip model โดยตรง
➡️ OpenGL บน Windows ARM64 ใช้ Mesa บน D3D12 ซึ่งมีบั๊กด้านกราฟิก
➡️ WinDbg บน ARM64 ยังมีข้อจำกัดในการดีบัก .NET และ C# stack trace
https://slugcat.systems/post/25-09-21-dxgi-debugging-microsoft-put-me-on-a-list/
0 Comments
0 Shares
17 Views
0 Reviews