c#/오류

[오류 / WPF / xaml] c00000fd 오류

루다대디 2024. 2. 8. 11:14

오류내용

xaml 디자이너가 로드되지않고 아래와 같은 오류 발생

 

MainWindow.xaml.cs 생성자

InitializeComponent(); 안에서 터져버려서 캐치가 안됐다...

한참 구글링을 해본결과 여러가지 문제로 나올 수 있는 오류였다


오류 원인

 

일단 일반적으로 스택 오버플로우(Stack Overflow)를 나타내는 Windows 운영 체제의 예외 코드이다.

즉, 어디선가 아래와 같은 이유로
무한루프에 빠져 스택이 너무 많아지거나, 메모리 손상이 생겼다는 것이다.

 

1. 무한 재귀 호출

    재귀 함수가 무한 루프에 빠져 스택 오버플로우를 발생시킬 수 있다.

2. 이벤트 핸들러 문제

     이벤트 핸들러에서 또 다른 이벤트를 발생시켜 무한루프에 빠질 수 있다.

3. 데이터 바인딩 문제

     데이터 바인딩이 무한 루프에 빠져 스택 오버플로우를 유발 할 수 있다.

4. 메모리 누수

    메모리 누수가 발생하여 시스템 자원이 고갈되어 스택오버플로우가 발생할 수 있다.


오류 해결방안

해결방법은 간단함

그냥 어디선가 스택오버플로우가 발생하는 코드를 찾아서 수정하면된다

재귀함수나 무한루프 반복문이 있다면 그걸 먼저 점검 해보는 것을 추천


 

하지만, 내 코드를 아무리 뒤져봐도 무한루프라고는 찾아 볼 수가 없었다..

재귀함수도 존재하지 않았다..

한참 찾았는데

아래 블로그에 올렸던 LogClass에서 터지고 있었음...

 

생성자에서 DeleteOldLogs 함수를 호출하는데
해당 함수에서 로그를 삭제할때 Exception이 발생하였고,
아마도 instance를 호출할때마다 생성자를 새로 생성하다보니

계속계속계속 터져나가다가 스택오버플로우가 발생한것같다.

 

결국 무한루프나 계속 호출되는 재귀함수가 아니더라도
감당되지 않을만큼 터져나가면 발생할 수도 있는듯...