2012-08-09 5 views
7

최근 Windows의 예외 처리에 대한 다음 내용을 읽었습니다."이중 스택 오류"란 무엇입니까?

이중 스택 오류와 같은 처리되지 않은 예외의 경우 운영 체제는 처리되지 않은 예외 필터 나 JIT 디버거를 호출하지 않고 즉시 응용 프로그램을 종료합니다.

이중 스택 오류 란 무엇입니까? 일반적인 스택 오류와 다른 점은 무엇입니까?

답변

7

이 문구는 아마도 Codeproject article에서 온 것입니다. 해당 사이트는 기술적 인 검토로 잘 알려져 있지 않습니다. "이중 오류"의 진정한 의미는 운영 체제 커널과 관련이 있습니다. 사용자 모드 오류 자체에 응답하는 커널의 오류 처리기 자체에 오류가있는 경우 이중 오류가 발생합니다. 어떤 것이 치명적이며 커널 패닉을 불러옵니다. Windows에서 블루 스크린. 또한 프로세서에 존재하는 것, x86 코어는 "트리플 폴트 (triple fault)"를 겪을 때 코드 실행을 중단합니다. 나쁜 여기에, 그가 자신의 문서에서 설명하는을 의미하는 것이 조건이다

아무것도 곳 등 UnhandledExceptionFilter를 등록으로 인해 스택 오버 플로우 및 충돌에 대한 응답으로 실행되는 코드 프로그램 폭탄,(), Windows가 SO에서 복구를 시도하는 스레드에게 제공하는 마지막 스택 비트를 사용합니다. 어느 쪽이 많지는 않지만, 7080 바이트 미만의 8192 바이트 (2 페이지)가 사용 가능합니다. 그런 코드가 그 예약을 소비하면 쇼는 끝나고 더 이상 함수 호출을 할 수 없습니다. 커널은 액세스 위반을 발생시키고 무조건 프로세스를 종료합니다.

그 작은 예약은 관리 코드가 SO에서 살아남을 수없는 이유이기도하므로 CLR은 예외를 반영하기에는 너무 많은 스택 공간이 필요하므로 즉시 시도하지 않고 프로그램을 종료합니다. 가드 페이지에 대한 일반적인 backgrounder 기사, 기본 메커니즘, is here.

관련 문제