안녕하세요
현재 FA 분야에서 사용중인 PC가
V3 업데이트 완료 시점에 PC가 다운 되는 현상이 다발하고 있습니다.
분야 특성상 PC 다운은 설비 다운으로 이어저 큰 손실을 가져 오고 있습니다.
약 3달의 주기로 서로 다른 PC에서 발생을 하고 있습니다.
Ahnlab 에 문의를 하였을때는 아래와 같은 답변이 왔고
하기와 같이 MS답변을 핑계로 CPU 문제로 넘겼습니다.
아래 답변에서 몇가지 문의 사항이 있습니다.
- CPU문제가 확실 한것입니까?
2. MicroCode Update 방법 및 최신 MicroCode 인지 확인하는 방법은 어떻게 되는 지요?
(WindowsXP-KB936357-v2-x86-KOR.exe 업데이트는 이미 실행해봄, 현재버전보다 하위 버전으로 업데이트 불가)
- MS 사 측에서는 CPU 문제라고 하셨는데 현재 i7-960을 사용 하고 있는데 문제가 되지 않는 CPU는 어떤것이 있는 지요?
- Filter 드라이버는 무엇인가요? 제거 방법은 어떻게 되나요?
- CPU를 바꾸면 완벽히 해결 되는 것인가요(PC가 100여대가 넘습니다. 무작정 바꿀수 없습니다.)
답변 부탁드리겠습니다.
PC 사양
OS : Microsoft Windows XP Pro Sp3
CPU : i7-960
MainBoard : [ASUS]P6T Deluxe V2 (IntelX58) Ibora
V3 : V3 8.0 (APC)
Ahnlab 답변 1
안녕하세요. AhnLab 솔루션지원팀 윤기엽입니다.
문의하신 BSOD 증상 관련하여 답변을 드립니다.
보내주신 덤프파일을 분석해본 결과 문제가 발생하는 원인은 Tcpip 드라이버의 내부 동기화 객체(Kernel SpinLock)가 알 수 없는 원인으로 동기화가 되지 않아서 발생한 문제이며,이는 CPU의 오류에 의해 발생된 것으로 추정하고 있습니다.
이전에도 동일한 문제로 접수된 건이 있었으며 이에 대한 MS 분석 내용을 전달해드립니다.
================================================================================
[원인 분석]
이미 해제된 메모리 영역을 다시 한 번 해제하려던 BugCheck이 발생하였습니다. 이 메모리 영역은 BlockedPortList 에 포함된 Entry로서 해제될 때 반드시 SpinLock을 얻어야 합니다. 하지만 TCPIP 드라이버의 Address Object Table의 SpinLock을 얻지 않은 채로 Cached된 BlockedPortList에 Access하여 문제가 발생하였습니다. CPU 정보로 보았을 때 여기서는 CPU의 상태를 체크해 보는 것이
좋을 것 같습니다. 왜냐하면 SpinLock을 얻으려고 할 때 오동작 되었을 가능성이 있습니다.
[조치 사항]
1.문제가 발생한 컴퓨터가 불특정하게 1대씩 발생한다면, 해당 머신의 CPU Microcode를 최신 버전으로 업데이트하거나 교체한 후 모니터링 하세요.
2.문제가 계속 발생한다면, Filter 드라이버가 있는 상태에서의 문제 발생 주기와 Filter 드라이버 제거 후 문제 발생 주기를 비교하여 어느 정도 문제 발생에 영향을 주는지 체크해 볼 필요가 있습니다.
================================================================================
결론을 말씀드리자면 CPU를 교체한 후 동일증상이 발생하는지 확인해 봐야 할 것 같습니다.
그럼, 금일도 좋은 하루 되시기를 바랍니다.
감사합니다.
추가적인 문의사항의 경우 ******@ahnlab.com 으로 메일 회신하여 주시기 바랍니다.
Ahnlab 답변2
안녕하세요. AhnLab 솔루션지원팀 윤기엽입니다.
문의하신 BSOD 관련하여 답변을 드립니다.
기존에 현재 케이스와 동일한 덤프가 접수되었었으며 콜스택 중간에 V3의 네트워크 모듈인 AMonTDnt.sys이
포함되어 있었기 때문에 V3문제로 인식되어 문제제기가 되었었습니다.
하지만 V3의 네트워크 모듈을 로드되지 않도록 세팅한 조건에서도 동일한 문제가 발생하였고, 콜스택 중간에 MS모듈 이외의
드라이버가 없는 것으로 볼 때, 다음의 두가지를 예상했습니다.
- MS 모듈인 Tcpip에서 적절한 처리를 하지 못하여 문제 발생
- 콜스택에선 보이지 않으나 어떤 모듈이 해당 메모리를 강제로 해제하여 문제 발생
그러나 위 2번의 경우라 해도 V3쪽과는 무관한 모듈이기에(테스트 당시 V3관련 모듈은 로드되지 않은 상태임) 해당 덤프를 Microsoft에 전달하여 아래와 같은 답변을 받았습니다.
================================================================================
[원인 분석]
이미 해제된 메모리 영역을 다시 한 번 해제하려던 BugCheck이 발생하였습니다. 이 메모리 영역은 BlockedPortList 에 포함된 Entry로서 해제될 때 반드시 SpinLock을 얻어야 합니다. 하지만 TCPIP 드라이버의 Address Object Table의 SpinLock을 얻지 않은 채로 Cached된 BlockedPortList에 Access하여 문제가 발생하였습니다. CPU 정보로 보았을 때 여기서는 CPU의 상태를 체크해 보는 것이
좋을 것 같습니다. 왜냐하면 SpinLock을 얻으려고 할 때 오동작 되었을 가능성이 있습니다.
[조치 사항]
1.문제가 발생한 컴퓨터가 불특정하게 1대씩 발생한다면, 해당 머신의 CPU Microcode를 최신 버전으로 업데이트하거나 교체한 후 모니터링 하세요.
2.문제가 계속 발생한다면, Filter 드라이버가 있는 상태에서의 문제 발생 주기와 Filter 드라이버 제거 후 문제 발생 주기를 비교하여 어느 정도 문제 발생에 영향을 주는지 체크해 볼 필요가 있습니다.
================================================================================
유선상으로 말씀드렸듯이 덤프분석 내용 중 IMAGE_NAME에 AMonTDnt.sys가 기록되었다고 해서 무조건 해당 드라이버의 문제라고 볼 수는 없으며 동일한 덤프내용을 MS와 AhnLab에서 여러번 분석해본 결과 V3 모듈과의 연관성이 밝혀지지 않았으므로 정확한 조치 사항을 전달해 드릴 수는 없습니다.
그럼, 금일도 좋은 하루 되시기를 바랍니다.
감사합니다.
추가적인 문의사항의 경우 ******@ahnlab.com 으로 메일 회신하여 주시기 바랍니다.
MEMORY.DMP 파일 분석 정보
5: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
BAD_POOL_CALLER (c2)
The current thread is making a bad pool request. Typically this is at a bad IRQL level or double freeing the same allocation, etc.
Arguments:
Arg1: 00000007, Attempt to free pool which was already freed
Arg2: 00000cd4, (reserved)
Arg3: 02020013, Memory contents of the pool block
Arg4: 8939e7a8, Address of the block of pool being deallocated
Debugging Details:
POOL_ADDRESS: 8939e7a8 Nonpaged pool
FREED_POOL_TAG: TCPt
BUGCHECK_STR: 0xc2_7_TCPt
DEFAULT_BUCKET_ID: DRIVER_FAULT
PROCESS_NAME: svchost.exe
LAST_CONTROL_TRANSFER: from 8054d583 to 804fbf43
STACK_TEXT:
b2e27b1c 8054d583 000000c2 00000007 00000cd4 nt!KeBugCheckEx+0x1b
b2e27b6c b2f1522b 8939e7a8 00000000 89816818 nt!ExFreePoolWithTag+0x2a3
b2e27b98 b2f0356f 00001389 00816818 89816818 tcpip!BlockTCPPorts+0x1b7
b2e27bb4 b2edf56d 898167a8 89816818 89643300 tcpip!TCPDispatchDeviceControl+0x10e
b2e27bec b2e9865c 89c05480 898167a8 00000000 tcpip!TCPDispatch+0x127
b2e27c08 b2e9dd83 89b70588 898167a8 898167a8 AMonTDnt!CFrmNtPassthruRequest+0x4c [U:\AhnLab\System\Common\Public\Monster_V3.0\Trunk\Src\AMonTDxx\anfdtdnt.c @ 141]
b2e27c1c b2e9e18d 89b70588 898167a8 89816818 AMonTDnt!CSpliterDispatchDeviceControl+0x33 [U:\AhnLab\System\Common\Public\Monster_V3.0\Trunk\Src\AMonTDxx\cdispatch.c @ 294]
b2e27c40 804f119f 89c05480 898167a8 806e9410 AMonTDnt!CSpliterDefaultDispatch+0x1ad [U:\AhnLab\System\Common\Public\Monster_V3.0\Trunk\Src\AMonTDxx\cdispatch.c @ 613]
b2e27c50 8058198e 89816818 89643300 898167a8 nt!IopfCallDriver+0x31
b2e27c64 8058281d 89c05480 898167a8 89643300 nt!IopSynchronousServiceTail+0x70
b2e27d00 8057b298 0000163c 00002c58 00000000 nt!IopXxxControlFile+0x5c5
b2e27d34 8054367c 0000163c 00002c58 00000000 nt!NtDeviceIoControlFile+0x2a
b2e27d34 7c93e514 0000163c 00002c58 00000000 nt!KiFastCallEntry+0xfc
WARNING: Frame IP not in any known module. Following frames may be wrong.
0230f548 00000000 00000000 00000000 00000000 0x7c93e514
STACK_COMMAND: kb
FOLLOWUP_IP:
AMonTDnt!CFrmNtPassthruRequest+4c [U:\AhnLab\System\Common\Public\Monster_V3.0\Trunk\Src\AMonTDxx\anfdtdnt.c @ 141]
b2e9865c 8945f4 mov dword ptr [ebp-0Ch],eax
SYMBOL_STACK_INDEX: 5
SYMBOL_NAME: AMonTDnt!CFrmNtPassthruRequest+4c
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: AMonTDnt
IMAGE_NAME: AMonTDnt.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 4e0de6f8
FAILURE_BUCKET_ID: 0xc2_7_TCPt_AMonTDnt!CFrmNtPassthruRequest+4c
BUCKET_ID: 0xc2_7_TCPt_AMonTDnt!CFrmNtPassthruRequest+4c
Followup: MachineOwner