User mode 에서 Stack Overflow


Kernel mode 에서 정해진 Stack 보다 많은 Stack 을 사용하면 System 이 Crash 됩니다. 즉 x86 에서 12kb 의 kernel stack 보다 많은 메모리를 사용하려고 하면 Bugcheck 0x7F 가 발생하면서 System 이 Crash 됩니다. (12kb 의 영역 이후의 한 Page 가 접근할 수 없는 메모리로 설정되어 있습니다.)

User mode 에서도 마찬가지로 Stack overflow 가 발생할 수 있습니다.

Stack overflow - code c00000fd

이 값을 가지고 검색을 해보니 아래와 같은 좋은 글을 발견할 수 있었습니다.

Stack Overflow에 대한 Debugging

http://byung.egloos.com/4809522

 

그리고 MSDN 에 다음과 같이 설명이 되어 있네요

Debugging a Stack Overflow

http://msdn.microsoft.com/en-us/library/cc267849.aspx

 

이 문제 발생 시 TIB 에서 StackBase 와 StackLimt 값을 확인하고 StackLimt 을 시작으로 해서 Stack 을 확인해 보면 보통 Stack overflow 또는 재귀호출 또는 비 정상적으로 큰 Local 변수 할당 등의 문제가 나올 수 있을 것 같습니다.

Kernel mode 만 하다가 간만에 User mode 를 볼 수 있는 신선한 경험이었습니다.


Skip to main content