류짱:Beyond MySelf

응용 프로그램 오류 : 응용 프로그램을 제대로 초기화하지 못했습니다 본문

Microsoft/Windows Platform

응용 프로그램 오류 : 응용 프로그램을 제대로 초기화하지 못했습니다

リュちゃん 2010. 10. 26. 16:38

터미널 로그온 시도 시 리소스가 부족하다는 오류가 발생하였으나 콘솔로는 로그 온이 되어 원인 파악을 위해 Debugging tool을 실행 하니 아래와 같은 오류가 발생 하였습니다. 또한 바탕 화면의 다른 많은 응용 프로그램들도 실행이 안되 는 현상이 발생하여 지원을 하였습니다.

[증상]

1. 터미널로 서버 로그 온 시도 시 리소스가 부족하다는 메시지와 함께 터미널 접속 실패
2. 콘솔로 로그온 후 실행 파일 클릭 시 아래와 같은 오류 발생과 함께 프로그램이 실행 되지 않음

이벤트 형식:         정보

이벤트 원본:         Application Popup

이벤트 범주:         없음

이벤트 ID:            26

날짜:                    2010-1x-xx

시간:                    오후 xxxxxx

사용자:                 N/A

컴퓨터:   xxxxxxx

설명:

응용 프로그램 팝업: rundll32.exe - 응용 프로그램 오류 : 응용 프로그램을 제대로 초기화하지 못했습니다(0xc0000142). 응용 프로그램을 마치려면 [확인]을 클릭하십시오.


[환 경]

Windows server 2003 EE x86 + SP2
Physical Memory : 16G, /PAE 옵션 on

[확인 사항]
문제 발생 시점에 서버의 작업 관리자에서 커널 리소스 확인 결과 Paged pool의 사용량이 161정도 였고 Nonpaged pool의 사용량이 약 60M 정도 였음.

[해결 방법]

응용 프로그램이 제대로 실행 되지 않고 커널 리소스는 충분 하다고 판단 되어 Desktop heap 부족을 의심 하였는 데 새벽 부터 실행 중이 던  backup 프로그램 중지한 후 모든 증상이 사라 졌습니다.-_____-;

 

일단 발생 했던 문제는 해결이 되었는데 뭐가 원인 이었을 까? 궁금해서 해당 서버의 paged pool과 nonpaged pool 의 최대 값을 Windows debugging tool을 이용해서 확인 해 보았습니다.

아니나 다를 까 서버의 paged pool의 최대 값이 164M 였습니다.  문제 발생 당시 paged pool의 사용량이 161~2M 정도였으니......

결국  paged pool이 부족해서 터미널 로그 온도 안되고 콘솔 로그 온 후 응용 프로그램 실행 시 오류가 발생 했던 것으로 추정 되어집니다.

통상적으로 paged pool의 사용량이 Max값에 도달 하게 되면 event 333이나 2020이 발생 하는데 이 서버에서는 event id 2020은 한 번도 발생하지 않고 paged pool의 최대 값이 164M 일거라고는 짐작하지 못했었는데...

lkd> !vm 1

 

*** Virtual Memory Usage ***

             Physical Memory:     4192566 (  16770264 Kb)

             Page File: \??\C:\pagefile.sys

               Current:  24670208 Kb  Free Space:  24336472 Kb

               Minimum:  24670208 Kb  Maximum:     24670208 Kb

             Available Pages:     2389112 (   9556448 Kb)

             ResAvail Pages:      2689242 (  10756968 Kb)

             Locked IO Pages:         176 (       704 Kb)

             Free System PTEs:     113653 (    454612 Kb)

             ******* 21 system cache map requests have failed ******

             Free NP PTEs:          32766 (    131064 Kb)

             Free Special NP:           0 (         0 Kb)

             Modified Pages:            6 (        24 Kb)

             Modified PF Pages:        11 (        44 Kb)

             NonPagedPool Usage:     9237 (     36948 Kb)

             NonPagedPool Max:      65535 (    262140 Kb)

             PagedPool 0 Usage:     29626 (    118504 Kb)

             PagedPool 1 Usage:      1411 (      5644 Kb)

             PagedPool 2 Usage:      1396 (      5584 Kb)

             PagedPool 3 Usage:      1445 (      5780 Kb)

             PagedPool 4 Usage:      1457 (      5828 Kb)

             PagedPool Usage:       35335 (    141340 Kb)

             PagedPool Maximum:     41984 (    167936 Kb)

            

 

그럼 Paged pool의 최대 값을 변경 할 수는 없을 까요?
아래 KB를 보면 Paged pool의 Max 값을 변경 할 수 있는 방법이 있습니다. 그러나 물리적 메모리가 64G인 머신에
PAE가 설정된 시스템의 Paged Pool 사이즈를 최대로 설정하는 것은 권장 사항이 아닙니다.

Caution The 0xFFFFFFFF PagedPoolSize setting is not recommended for use on 32-bit Windows Server 2003-based computers that have 64GB of RAM
. This will potentially bring the Free System PTE entry down and can cause continuous reboot of the computer. For this configuration, carefully choose a value based on the requirements and available resources.

Paged pool
를 증가시키면 또 다른 커널 리소스의 상대적으로 부족해 질 수 있기 떄문에 시스템마다 커널 리소스의 상태를 점검한 후에 Paged Pool 사이즈의 조정해야 합니다.

서버가 시스템의 페이지된 풀에서 메모리를 할당할 수 없다
http://support.microsoft.com/kb/312362/en-us