2007~2011/IIS2009. 4. 3. 00:01

IIS 6.0  W3WP.EXE Worker Process 가 Crash 빈도가 높아졌습니다. 오류 급증 시 자동 보호 기능을 설정해 놨는데...

새벽에 연속해서 오류가 발생하여 서비스 중지되기라도 하면 ..... 어휴..... 

월 39,900원에 모시는 보험이라도 가입하고 싶은 그 심정 공감합니다. 



[환경]

IIS 6.0

 

 

[현상]

간헐적으로 IIS Worker Process Crash 되며, “오류 급증 자동 보호 기능” 활성화로 인해 해당 풀 서비스가 중지되어 웹 서비스가 중지되었습니다.

 

 

[원인]

ABCUpload4 모듈에 이미 Free 된 잘못된 heap 주소 공간을 사용하여 메모리 할당(RtlAllocateHeap)을 호출하여 문제가 발생하였습니다. 이는 수집된 5개의 user dump 에서 모두 동일한 상태를 확인할 있습니다.

 

 

[해결방안]

ABCUpload4 모듈을 잘못 사용하지 않았는지 레퍼런스를 확인하거나 모듈 자체에 오류가 있는 것은 아닌지 해당 개발자 또는 vendor 문의하여 확인이 필요합니다. 

 

 

[분석결과]

1. 이벤트 로그 확인

이벤트 형식:      경고

이벤트 원본:      W3SVC

이벤트 범주:      없음

이벤트 ID:         1011

컴퓨터:  LAIGOSERVER

설명:

응용 프로그램 풀 'AppPool #LAIGO' 사용되는 프로세스에 World Wide Web 게시 서비스와의 심각한 통신 오류가 있습니다프로세스 ID '3322'입니다. 데이터 필드에 오류 번호가 있습니다.

 

이벤트 형식:      경고

이벤트 원본:      W3SVC

이벤트 범주:      없음

이벤트 ID:         1009

사용자:             N/A

컴퓨터:  LAIGOSERVER

설명:

응용 프로그램 풀 'AppPool #LAIGO' 사용되는 프로세스가 예기치 않게 종료되었습니다프로세스 ID '2384'입니다. 프로세스 종료 코드는 '0x80'입니다.

 

2. 데이터 수집

 . Debug Diagnostics Tool 1.1 사용하여 IIS Crash 설정으로 W3WP.EXE Process Crash 에 대한 덤프 수집 완료

 

3. W3WP.EXE(AppPool #LAIGO) 메모리 덤프 분석

 

0:004> r

eax=00000008 ebx=03900000 ecx=7c9696d6 edx=00000000 esi=00000080 edi=00000000

eip=7c969ffa esp=030c1170 ebp=030c138c iopl=0         nv up ei pl zr na pe nc

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246

ntdll!RtlAllocateHeap+0x24:

7c969ffa 0b4310          or      eax,dword ptr [ebx+10h] ds:0023:03900010=????????

 

 

0:004> !address 03900010

    038f2000 : 038f2000 - 0001e000

                    Type     00000000

                    Protect  00000001 PAGE_NOACCESS

                    State    00010000 MEM_FREE

                    Usage    RegionUsageFree

 

 

0:004> kb

ChildEBP RetAddr  Args to Child             

030c138c 038c8bd4 03900000 00000008 00000080 ntdll!RtlAllocateHeap+0x24

WARNING: Stack unwind information not available. Following frames may be wrong.

030c13d4 038c5ed6 00000001 00000080 19930520 ABCUpload4!DllGetClassObject+0x27107

030c1400 038c5801 030c1588 030fef2c 030c15a4 ABCUpload4!DllGetClassObject+0x24409

030c144c 038c564e 030c1588 030fef2c 030c15a4 ABCUpload4!DllGetClassObject+0x23d34

030c147c 038c21d0 030c1588 030fef2c 030c15a4 ABCUpload4!DllGetClassObject+0x23b81

030c14a4 7c968752 030c1588 030fda1c 030c15a4 ABCUpload4!DllGetClassObject+0x20703

030c14c8 7c968723 030c1588 030fda1c 030c15a4 ntdll!ExecuteHandler2+0x26

030c1570 7c96855e 030c1000 030c15a4 030c1588 ntdll!ExecuteHandler+0x24

030c1570 7c969ffa 030c1000 030c15a4 030c1588 ntdll!KiUserExceptionDispatcher+0xe

030c1a8c 038c8bd4 03900000 00000008 00000080 ntdll!RtlAllocateHeap+0x24

030c1ad4 038c5ed6 00000001 00000080 19930520 ABCUpload4!DllGetClassObject+0x27107

030c1b00 038c5801 030c1c88 030fef2c 030c1ca4 ABCUpload4!DllGetClassObject+0x24409

030c1b4c 038c564e 030c1c88 030fef2c 030c1ca4 ABCUpload4!DllGetClassObject+0x23d34

030c1b7c 038c21d0 030c1c88 030fef2c 030c1ca4 ABCUpload4!DllGetClassObject+0x23b81

030c1ba4 7c968752 030c1c88 030fda1c 030c1ca4 ABCUpload4!DllGetClassObject+0x20703

030c1bc8 7c968723 030c1c88 030fda1c 030c1ca4 ntdll!ExecuteHandler2+0x26

030c1c70 7c96855e 030c1000 030c1ca4 030c1c88 ntdll!ExecuteHandler+0x24

030c1c70 7c969ffa 030c1000 030c1ca4 030c1c88 ntdll!KiUserExceptionDispatcher+0xe

030c218c 038c8bd4 03900000 00000008 00000080 ntdll!RtlAllocateHeap+0x24

030c21d4 038c5ed6 00000001 00000080 19930520 ABCUpload4!DllGetClassObject+0x27107

 

 

0:004> lmvm abcupload4

start    end        module name

038a0000 038f2000   ABCUpload4 C (export symbols)       ABCUpload4.dll

    Loaded symbol image file: ABCUpload4.dll

    Image path: C:\WINDOWS\system32\ABCUpload4.dll

    Image name: ABCUpload4.dll

    Timestamp:        Wed Sep 12 20:31:25 2001 (3B9F478D)

    CheckSum:         00000000

    ImageSize:        00052000

    File version:     4.1.0.2

    Product version:  4.1.0.2

    File flags:       0 (Mask 3F)

    File OS:          4 Unknown Win32

    File type:        2.0 Dll

    File date:        00000000.00000000

    Translations:     0409.04b0

    CompanyName:      ƆƆ瘏Ȥÿ䯷̄

    ProductName:      ABCUpload

    InternalName:     ABCUpload

    OriginalFilename: ABCUpload.DLL

    ProductVersion:   4, 1, 0, 2

    FileVersion:      4, 1, 0, 2

    FileDescription:  ABCUpload

    LegalCopyright:   Copyright WebSupergoo 2001


본 덤프 분석 결과는 마이크로소프트 기술지원 자료를 참조하여 재구성 하였습니다.



[참고자료]

IIS 상태 코드

http://support.microsoft.com/kb/318380



작성자 : Lai Go / 작성일자 : 2009.04.02

Posted by Lai Go