내 프로그램이 Nvidia nview에서 100% CPU를 소비하는 이유는 무엇입니까?
문제
나는 최근에 프로덕션 환경에서 많은 항목 목록을 스크롤 할 때 때때로 응답하지 않는 Windows 프로그램을 작업하고있었습니다. 물론 그것은 내 데스크탑에서 잘 작동합니다. 생산 환경은 다음과 같습니다.
- 2 개의 모니터가있는 Windows XP 기반 워크 스테이션
- NVIDIA 비디오 드라이버 NVIEW가 활성화되었습니다
주목할만한 것은 프로세스가 종료 될 때 생성 된 Dr Watson 스택 추적입니다.
State Dump for Thread Id 0xef4 eax=00e3fff8 ebx=000000a0 ecx=00e00000 edx=00000000 esi=0003fff8 edi=00e40000 eip=00b920c2 esp=0012bcac ebp=00000000 iopl=0 nv up ei ng nz na pe cy cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000283 \system32\nview.dll - function: nview!NVLoadDatabase 00b920a8 c80b0600 enter 0x60b,0x0 00b920ac 83c30f add ebx,0xf 00b920af 33f6 xor esi,esi 00b920b1 03f9 add edi,ecx 00b920b3 83e3f8 and ebx,0xfffffff8 00b920b6 3bcf cmp ecx,edi 00b920b8 89742414 mov [esp+0x14],esi 00b920bc 734c jnb nview!NVLoadDatabase+0xcaf (00b9210a) 00b920be 8bc1 mov eax,ecx 00b920c0 8b10 mov edx,[eax] 00b920c2 8b4004 mov eax,[eax+0x4] ds:0023:00e3fffc=00000000 00b920c5 89442414 mov [esp+0x14],eax 00b920c9 8bc2 mov eax,edx 00b920cb 2500000001 and eax,0x1000000 00b920d0 33ed xor ebp,ebp 00b920d2 0bc5 or eax,ebp 00b920d4 7414 jz nview!NVLoadDatabase+0xc8f (00b920ea) 00b920d6 8bc2 mov eax,edx 00b920d8 c1e008 shl eax,0x8 00b920db 8be8 mov ebp,eax 00b920dd c1f81f sar eax,0x1f ChildEBP RetAddr Args to Child 00000000 00000000 00000000 00000000 00000000 nview!NVLoadDatabase+0xc67
이 문제가 생산에서만 발생한 이유는 무엇입니까?
해결책
NVIEW는 NVIDIA가 제공하는 타사 DLL이기 때문에 흥미 롭습니다. 인터넷에 대한 게시물 nview!NVLoadDatabase
NVIEW에 패치되지 않은 결함이 있음을 제안하십시오. 이 보고서에서 확인한 바와 같이 Explorer가 100% CPU를 사용한다는 사실에 의해 뒷받침됩니다. 보다: http://forums.nvidia.com/lofiversion/index.php?t36879.html
이 문제에 대한 자세한 조사는이 사이트에서 제공됩니다.http://blogs.technet.com/marcelofartura/archive/2007/02/28/real-case-random-apps-running-100-cpu.aspx
이 기사에 따르면, 교수형은 nview.dll의 무한 루프 때문입니다. 온라인으로 설명 된 어셈블리 지침과 레지스터 값은 우리 로그의 로그에있는 것과 정확히 일치하지 않지만, 그것이 같은 문제라고 결론을 내릴만큼 가깝습니다.
문제를 해결하려면 NView Desktop Manager를 비활성화하려면 (데스크탑을 마우스 오른쪽 버튼으로 클릭하고 NView Properties를 선택하고 NView Desktop Manager GroupBox에서 비활성화)를 클릭하십시오. 이 작업을 수행하기 전에 나는 일관되게 행을 재현 할 수있었습니다. 그러나 nview를 비활성화 한 후에는 간을 재현 할 수 없었습니다. 따라서 이것은 실행 가능한 해결 방법으로 보입니다.
어쨌든, 나는 그것이 누구에게나 유용 할 경우에 이것을 여기에 게시했습니다. 그것은 이것을 쫓는 많은 슬픔을 일으켰습니다.