2009-05-05 14 views
0

私は最近、プロダクション環境で多数の項目をスクロールするときに応答しなくなるWindowsプログラムを作成していました。もちろん、それは私のデスクトップ上で正常に動作します。生産環境は以下のとおりです。私のプログラムはnVidia NViewでCPUを100%消費するのはなぜですか?

  • のnViewと
  • nVidiaのビデオドライバは、プロセスが終了したときに発生するワトソン博士のスタックトレースで注目すべきは

を有効に2台のモニタを使用してWindows XPベースのワークステーション:

 
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 

なぜこの問題は本番環境でのみ発生しましたか?

答えて

6

nViewはNVidiaによって提供されるサードパーティのDLLであるため、これは興味深いものです。 nview!NVLoadDatabaseについてのインターネット上の投稿は、nviewにパッチのない欠陥があることを示唆しています。これは、これらのレポートで確認されているように、エクスプローラが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

この記事を1として、ハングはnview.dllで無限ループによるものです。オンラインで記述されたアセンブリ命令とレジスタ値は、私たちのログのものと正確には一致しませんが、同じ問題であると結論付けるには十分に近いものでした。

問題を回避するために、nView Desktop Managerを無効にしました(デスクトップを右クリックしてnViewのプロパティを選択し、nView Desktop Managerのグループボックスで無効をクリックします)。これを行う前に、私は一貫してハングを再現することができました。しかし、nViewを無効にした後、ハングを再現できませんでした。したがって、これは実行可能な回避策であるように思われる。

とにかく誰にでも役立つように、これをここに掲載しました。それは私にこの1つを追い払う悲しみの多くを引き起こした。

関連する問題