2012-08-09 35 views
7

Gần đây tôi đã đọc phần sau về xử lý ngoại lệ của Windows."Lỗi ngăn xếp kép" là gì?

Trong một số trường hợp ngoại lệ chưa được xử lý, chẳng hạn như lỗi ngăn xếp kép, hệ điều hành sẽ ngay lập tức chấm dứt ứng dụng mà không gọi bộ lọc ngoại lệ chưa được xử lý hoặc trình gỡ lỗi JIT.

Lỗi ngăn xếp kép là gì? Làm thế nào nó khác với một lỗi ngăn xếp thường xuyên?

Trả lời

7

Cụm từ này có thể đến từ số Codeproject article này. Trang web đó không nổi tiếng về đánh giá kỹ thuật. Ý nghĩa thực sự của "lỗi kép" có liên quan đến hạt nhân hệ điều hành, bạn nhận được một lỗi kép khi trình xử lý lỗi của hạt nhân đáp ứng với chính lỗi chế độ người dùng bị lỗi. Đó là gây tử vong và gọi một hoảng loạn hạt nhân. Màn hình xanh trên Windows. Ngoài ra một cái gì đó mà tồn tại trong bộ vi xử lý, một lõi x86 ngừng thực thi mã khi nó bị một "lỗi ba".

Không có gì xấu ở đây, những gì anh ta có nghĩa là để mô tả trong bài viết của mình là điều kiện xảy ra bom chương trình do tràn ngăn xếp và mã chạy theo sự cố, chẳng hạn như đã đăng ký với UnhandledExceptionFilter(), tiêu thụ bit cuối cùng của ngăn xếp mà Windows đưa ra một luồng để cố gắng phục hồi từ một SO. Mà không phải là nhiều, 8192 byte (hai trang) với ít hơn 7080 byte có thể sử dụng. Nếu mã như vậy tiêu thụ dự trữ đó thì chương trình kết thúc, không thể thực hiện được các cuộc gọi chức năng nào khác. Hạt nhân làm tăng sự vi phạm truy cập và kết thúc quá trình vô điều kiện.

Dự trữ nhỏ đó cũng là lý do mã được quản lý không thể tồn tại SO, CLR cần quá nhiều không gian để phản ánh ngoại lệ, vì vậy ngay lập tức chấm dứt chương trình mà không cần thử. Bài viết chung về nền tảng trên trang bảo vệ, cơ chế cơ bản, is here.

Các vấn đề liên quan