게임즐기기/Civil FLT━

[P3D] Windows 10 Compatibility flag issue로 인한 Prepar3D 실행 오류

반쪽날개 2017. 9. 24. 01:20

 

 

Prepar3D를 실행하다 보면, 평소에는 잘 실행되다 가끔 아무런 이유 없이 로딩 과정에서 오류가 발생하는 문제가 발생하곤 합니다.

 

Prepar3D를 정상적으로 종료한 후 설정(cfg 파일 등)을 변경하거나 아무런 애드온도 설치하지 않았는데,

뜬금없이 오류 메시지가 표시되다 보니 당황스럽기 그지없더랍니다.

 

Prepar3D 공식 포럼 등지에서 이 현상의 원인과 해결방법을 찾아보았으나 명쾌한 답변은 찾을 수 없었고

Windows 10을 재설치할 심산으로 레지스트리를 헤집는 도중 뭔가 수상한 것을 발견하게 됩니다.

 

 

 

 

 

전날까지만 해도 잘 작동되었던 Prepar3D가 다음날에는 오류를 일으키며 실행이 되지 않는 황당한 현상...

그 사이에 컴퓨터를 사용하지도 새로운 애드온을 설치하지도 않았는데 이런 문제가 발생한다면 어딘가 심각한 문제가 있는 것 같습니다.

 

 

 

 

 

cfg 파일을 수정해 Prepar3D가 오류를 일으키며 실행되지 않을 때 콘텐츠 에러 리포트 파일을 생성하게 한 후

에러 로그를 살펴보니 dll.xml 파일을 제대로 로드하지 못해 오류가 발생했다는 것을 알게 되었고

dll.xml을 열어 등록해놓은 두 개의 모듈을 하나씩 제거해가며 Prepar3D가 정상적으로 로딩되는지 확인합니다.

 

그 결과 FSTramp 관련 모듈인 FSTrampX.dll 파일을 불러오지 않으면 Prepar3D가 정상적으로 실행되었고

이때까지는 FSTramp가 문제인 줄 알고 FSTramp를 수차례 재설치해보기도 하고 백신 프로그램으로 dll파일을 검사해보기도 했지만

역시 FSTramp 모듈을 dll.xml에 등록하면 로딩 시 오류가 뜨며 실행이 되지 않더랍니다.

 

FSTramp는 플래닝 및 항로, 입출항 절차를 확인하는데 사용하는 중요한 프로그램으로

이 프로그램이 없으면 국제선은 비행하기 힘들 정도인지라 FSTramp를 포기할 수 없어 결국 운영체제를 재설치하기에 이릅니다.

(심한 경우에는 운영체제 및 Prepar3D 그리고 애드온 재설치를 마치고 Prepar3D를 최초로 실행하는데도 이런 문제가 발생해 멘붕(!)했던 적도 있었습니다.)

 

 

 

 

 

하지만 문제의 근본적인 원인은 다른 곳에 있었으니...

이 문제는 Prepar3D의 문제가 아닌 Windows 10의 Compatibility flag issue로 인해 발생한 문제였습니다.

 

간혹 Prepar3D를 실행하면 FSTrampX.dll을 IgnoreFreeLibrary에 넣어버리던데,

운영체제가 호환성 플래그를 설정해버린 탓에 Prepar3D가 해당 DLL파일을 불러오려 해도 그렇게 하지 못하고 결국 오류 메시지를 표시합니다.

 

 

이 문제를 해결하는 방법은 다음과 같습니다.

 

1. 윈도우키 + R 을 눌러 실행 창 호출

 

2. 실행 창에 regedit 입력 후 엔터

 

3. 다음과 같은 경로로 이동 (레지스트리 편집기에 아래 주소를 붙여넣기 해도 이동 가능)

   HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

 

4. $ IgnoreFreeLibrary<FSTrampX.dll> 이라 표시된 키 삭제

   (이름은 Prepar3D가 설치된 경로의 Prepar3D.exe 로 표시)

   (데이터는 $ IgnoreFreeLibrary<FSTrampX.dll> 로 표시)

 

 

해당 키를 삭제하면 다시 정상적으로 Prepar3D를 실행할 수 있으며

만약 또다시 오류가 발생하면 위 방법을 통해 문제를 해결할 수 있습니다.

 

 

제 경우 dll.xml에 등록된 모듈이 FSUIPC와 FSTramp 뿐인지라 이 둘 중 FSTramp의 모듈이 Windows 10의 호환성 플래그에 등록돼버렸지만,

FSTramp가 설치되어있지 않더라도 dll.xml에 다른 애드온의 모듈이 등록된 경우, 해당 모듈이 호환성 플래그에 등록되어 문제를 일으키기도 합니다.

 

즉, FSTramp 이외에도 dll 모듈을 사용하는 애드온이라면 다들 이 문제가 발생할 가능성이 있고

실제로 Prepar3D 공식 포럼을 둘러본 결과, 다양한 dll 모듈들이 해당 오류의 희생양(!)이 되고 있음을 알 수 있었습니다.

 

이 때문에 이 문제는 Prepar3D나 관련 애드온 때문이 아니라 Windows 10 때문인 것으로 결론짓게 되었구요.

 

 

 

 

 

인위적인 상황을 만들어 이 문제가 발생하는 원인을 분석해본 결과

Prepar3D를 실행하여 종료한 후 프로그램이 메모리에서 완전히 빠져나가기 전에 다시 Prepar3D를 실행한 경우 이 문제가 발생함을 알 수 있었습니다.

물론, 메모리 반환 전에 다시 실행했다 해도 몇 번 정도는 정상적으로 실행될 수도 있지만, 이러한 상황이 계속되면 문제가 발생할 가능성이 커집니다.

 

어쨌거나 이 문제를 말끔하게 해결하는 방법은 지금 찾아낸 방법이 유일합니다.

이 문제를 영구적으로 해결할 방법을 계속 연구해봐야겠지만,

일단은 이 문제로 인해 운영체제를 재설치하거나 시스템을 복원해야 하는 번거로움을 덜었다는 것만으로도 큰 수확이지 않나 싶네요.

 

 

...이것 때문에 멀쩡한 운영체제를 수십번 갈아엎은 걸 생각하면...ㅜㅜ;;;