- Lỗi 20 năm tuổi của GTA San Andreas lộ diện trên Windows 11 24H2
- Đã có báo cáo về lỗi máy bay Skimmer biến mất trong GTA San Andreas trên Windows 11 24H2
- Vấn đề vẫn không được khắc phục ngay cả khi dùng SilentPatch
- Trên Windows 11 23H2 không xảy ra lỗi này
- Tất cả người dùng đã cập nhật lên Windows 11 24H2 đều gặp lỗi này
Điều tra lỗi
Có gì đã xảy ra?
- Khi cài SilentPatch, game bị treo
- Phát hiện hiện tượng bị kẹt trong một vòng lặp nhỏ ở
CPlane::PreRender
- Tốc độ cánh quạt của máy bay được đặt cao bất thường
- Tốc độ cánh quạt được tính theo tỷ lệ với độ cao của máy bay
Tại sao và bằng cách nào?
- Thiếu tham số cần thiết trong định nghĩa
vehicles.ide của Skimmer
- Trong Vice City, Skimmer được định nghĩa là thuyền
- Sang San Andreas, nó được đổi thành máy bay nhưng không được thêm các tham số cần thiết
Nguyên nhân gốc rễ thực sự
- Vấn đề xảy ra do cách sử dụng stack đã thay đổi trong Windows 11 24H2
LeaveCriticalSection bắt đầu dùng nhiều không gian stack hơn
- Trước đây
fgets và LeaveCriticalSection không ghi đè lên không gian stack, nhưng giờ thì có
Vì sao đến bây giờ lỗi này mới xuất hiện?
- Các thay đổi trong Windows 11 24H2 đã làm thay đổi không gian stack
- Vấn đề phát sinh do game sử dụng biến cục bộ chưa được khởi tạo
- Trên các nền tảng khác, lỗi này đã được sửa từ trước
Nếu muốn sửa lỗi này trong game?
- Bản hotfix SilentPatch tiếp theo sẽ bao gồm bản vá mã nguồn
- Cũng có thể khắc phục bằng cách chỉnh sửa thủ công tệp
vehicles.ide
Lời cuối
- Lỗi này thú vị ở chỗ nó gắn trực tiếp với một bản phát hành OS cụ thể
- Nó cho thấy thay đổi trong bố cục stack có thể ảnh hưởng đến khả năng tương thích
- Cần kiểm tra dữ liệu đầu vào và không nên bỏ qua các cảnh báo khi biên dịch
1 bình luận
Ý kiến Hacker News
-fsanitize=undefined,addressđể bắt hành vi không xác định khi chạy