Почему моя программа потребляет 100% ресурсов процессора под nVidia NView?

StackOverflow https://stackoverflow.com/questions/826870

  •  05-07-2019
  •  | 
  •  

Вопрос

Недавно я работал над программой Windows, которая иногда переставала отвечать на запросы при прокрутке большого списка элементов в производственной среде.Конечно, на моем рабочем столе все работает нормально.Производственная среда – это:

  • Рабочая станция на базе Windows XP с 2 мониторами
  • Видеодрайверы 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 — это сторонняя DLL, предоставляемая NVidia.Сообщения в Интернете о nview!NVLoadDatabase предполагают, что в nview есть неисправленный дефект.Это подтверждается тем фактом, что Explorer использует 100% ЦП, что подтверждается этими отчетами.Видеть: 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» и нажмите «Отключить» в групповом окне nView Desktop Manager).Прежде чем сделать это, мне удавалось последовательно воспроизводить зависание.Однако после отключения nView мне не удалось воспроизвести зависание.Таким образом, это кажется жизнеспособным обходным путем.

В любом случае, я разместил это здесь, на случай, если это будет кому-то полезно.Это причинило мне МНОГО горя, когда я преследовал его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top