لماذا يستهلك برنامجي 100% من وحدة المعالجة المركزية تحت nVidia NView؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

كنت أعمل مؤخرًا على أحد برامج Windows التي قد تصبح في بعض الأحيان غير مستجيبة عند التمرير عبر قائمة كبيرة من العناصر في بيئة الإنتاج.بالطبع يعمل بشكل جيد على سطح المكتب الخاص بي.بيئة الإنتاج هي:

  • محطة عمل تعمل بنظام 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 هو ملف DLL تابع لجهة خارجية توفره NVidia.منشورات على شبكة الإنترنت حول nview!NVLoadDatabase تشير إلى أن هناك عيبًا غير مُصحح في nview.ويدعم ذلك حقيقة أن المستكشف يستخدم وحدة المعالجة المركزية بنسبة 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 Properties، ثم انقر فوق تعطيل في مربع مجموعة nView Desktop Manager).قبل القيام بذلك كنت قادرا على إعادة إنتاج التعليق باستمرار.ومع ذلك، بعد تعطيل nView، لم أتمكن من إعادة إنتاج التعليق.وبالتالي، يبدو أن هذا هو الحل البديل القابل للتطبيق.

على أية حال، لقد نشرت هذا هنا في حال كان من المفيد لأي شخص.لقد سبب لي الكثير من الحزن أثناء مطاردة هذا الشخص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top