رفتن به مطلب

بررسی دلایل خطای صفحه آبی ویندوز ( bsod )


ارسال های توصیه شده

xdd7vl7s1hfj7ul3mzi.jpg

 

سلام

 

موضوع از این قراره که دیشب لپتاپم دچار مشکل عجیب و غریب و روو اعصاب Blue Screen of death شد و مکررا این خطای صفحه آبی ، روی LCD لپتاپ ظاهر میشد. به هر نحوی بود مشکل رو حل کردم و به این فکر افتادم که خیلی از کاربرای ایرانی ، این مشکل رو دارن و راه حل درست و نزدیکی رو برای این مشکل پیدا نکردن.

توو این تاپیک با کمک هم سعی میکنیم یه مقدار از زاویه ی تخصصی تر به این مشکل نگاه کنیم و راه حل های مناسبی رو برای این سری از خطاها پیدا کنیم . البته باید بگم که بررسی تخصصی این دلایل این مشکل چیزی نیست که در حیطه ی یه کاربر معمولی مثل من باشه. بررسی تخصصی این مشکل وظیفه ی یه برنامه نویس حرفه ای و مسلط به زیروبم و ساختار سیستم عامل ویندوز هست که شاخه ای به اسم Debugging رو بوجود اورده. ولی خب ، چیزایی که توو این تاپیک در موردش بحث میکنیم حداقل فایده ای که داره اینه که باعث میشه یه کاربر معمولی ، لااقل از یک قدم نزدیک تر به مشکل نگاه کنه که همین یک قدم نزدیک تر ممکنه منجر به حل مشکل بشه.

 

اول لازمه مشخص بشه BSOD چی هست :

 

خطای صفحه آبی خطاییه که در سری سیستم عامل های ویندوز پیدا میشه و یه حالت بحرانی از سیستم رو گزارش میکنه و باعث Crash کردن سیستم میشه. این حالت بحرانی دلایل بسیار متنوعی داره ولی عمده ترین دلایلش میتونه مشکلات مربوط به درایور ها باشه.

وقتی گفتم مشکلات مربوط به درایور ها ، درواقع نباید فکر کنیم این درایور ها ، فقط به درایور های سخت افزاری مربوط میشن. درایور ها و سیستم فایل هایی که نرم افزار های آنتی ویرووس ، فایروال و درایوهای مجازی هم تولید میکنن ، نوعی درایور هستن.

به هر حال زمانی که این درایوری به هر دلیلی مشکل پیدا کرد ، ویندوز برای جلوگیری از صدمات سخت افزاری ، سیستم رو به حالت معلق در میاره که هیچ دستور العملی اجرا نشه و این زمانیه که BSOD پیداش میشه.

 

برای اینکه بهتر متوجه قضیه بشیم باید بگم بطور کل ، Application ها در دو حالت در سیستم عامل ها اجرا میشن :

 

حالت User Mode و حالت Kernel Mode .

 

حالت User Mode حالتیه که Application مورد نظر برای اجرای دستوراتش ، دسترسی مستقیم به سخت افزار مربوطه نداره. در این حالت ، Application مورد نظر به کمک نرم افزار های واسطه یا همون API ها ، با سخت افزار ها تعامل داره. برای مثال : وقتی شما یه بازی رو اجرا میکنین ، این بازی بطور مستقیم به کارت گرافیک و سایر منابع سیستم دسترسی نداره. این دسترسی توسط API هایی نظیر Direct X به کارت گرافیک و سایر منابع سیستم داده میشه.

 

اما حالت Kernel Mode حالتیه که Application ها دسترسی مستقیم به سخت افزار ها و منابع سیستم دارن. این نوع Application ها در واقع همون درایور ها میتونن باشن که بطور مستقیم با سخت افزار ها تعامل دارن. وقتی Application ایی در سطح Kernel Mode اجرا بشه ، سرعت دسترسی اون به منابع سیستم بالا تر میره و دستورات با سرعت بالاتری اجرا میشن ولی خب ، پایداری کمتری دارن. از اون طرف ، Application هایی که در سطح User Mode اجرا میشن چون به واسطه ی API ها با منابع سیستم در ارتباطن سرعت کمتری دارن ، ولی پایداری بالاتری دارن.

 

نکته ای که مهمه اینه که خطای صفحه آبی فقط در مواقعی رخ میده که برنامه ای در سطح Kernel Mode با مشکل مواجه شده باشه و از اونجایی که برنامه های Kernel Mode دسترسی مستقیم به سخت افزار ها و منابع سیستم دارن ، ویندوز برای جلوگیری از صدمه دیدن منابع سیستم ، خطای صفحه آبی رو ظاهر میکنه و سیستم رو از کار میندازه.

 

خب تا اینجا متوجه شدیم که خطای صفحه آبی در حالتی ظاهر میشه که برنامه ای در حالت Kernel Mode اجرا شده باشه و یه دستورالعمل غیر درست و غیرمجاز رو ارسال کنه.

وقتی این اتفاق افتاد و خطای صفحه آبی ظاهر شد ، فایلی از نوع dmp ایجاد میشه که حاوی اطلاعات بسیار مفیدی از حالت سیستم در زمان Crash هست. این فایل ها که Dump نامیده میشن سه نوع مختلف دارن :

 

  • Complete Memory Dump
  • Kernel Memory Dump
  • Small Memory Dump

تفاوت کلی این نوع فایل ها ، در سایز اوناست بطوری که اولی حجم بالاتری داره و حاوی تمام اطلاعات موجود در Ram در زمان خطا هست و دو تا فایل بعدی حجم کم تری و قاعدتا اطلاعات کمتری هم دارن. این فایل ها هرکدوم ارزش خاص خودشون رو دارن ، مثلا فایل های اولی با اینکه حجم بالایی دارن ولی حاوی کاملترین اطلاعات هستن که میشه به کمک اونا دلیل خطا رو شناسایی کرد ولی از اونجایی که حجم بالایی دارن ، زمان زیادی رو باید برای نوشته شدن اون فایل ها صرف کرد که این فاکتور زمانی در کامپیوتر هایی که نیاز به راه اندازی مجدد دارن ( نظیر سرور ها ) قابل اهمیت هست.

 

فایل های دوم که Kernel Memory Dump هستن ، نسبت به فایل های اول ، حجم به مراتب کمتری دارن. تفاوتی که بین این دو فایل وجوود داره اینه که : فایل های Kernel Memory Dump همونطوری که از اسمش مشخصه تنها اطلاعاتی که مربوط به حالت Kernel Mode هست رو در خودش ذخیره میکنه ( اطلاعات مربوط به خطای صفحه آبی ) و اطلاعات User Mode رو در خودش ذخیره نمیکنه ولی Complete Memory Dump تمام اطلاعاتی که در زمان کرش کردن سیستم در حافظه مونده بود رو در خودش ذخیره میکنه . بنابراین ، فایل های Kernel Memory Dump در اکثر اوقات مفید ترین فایل برای بررسی خطاهای صفحه آبی هستن چون مستقیما با حالت Kernel Mode در ارتباط هستن.

 

در آخرم فایل های Small Memory Dump کم اهمیت ترین فایل ها هستن که فقط حاوی کد و یه سری اطلاعات جزئی از خطا هستن و کم ترین حجم رو دارن.

 

برای اینکه ما بتونیم دلایل خطای صفحه آبی رو بررسی کنیم نیاز به این فایل های Dump داریم که گفته شد Kernel Memory Dump مفید ترین فایل در اکثر اوقات هست. ما باید سیستم عامل رو جوری تنظیم کنیم که بعد از هر خطای صفحه آبی ، بطور اتوماتیک فایل Kernel Memory Dump رو برای ما تولید کنه.

کاری که میکنیم اینه که به مسیر زیر میریم :

 

Start--> Control Panel---> Systems ---> Advanced System Setting

 

پنجره ی زیر باز میشه که باید به قسمت های مشخص شده بریم :

 

318ypkicyosxiuc7a.jpg

 

وقتی روی Settings کلیک کردیم پنجره ی زیر باز میشه :

توو این پنجره ما میتونیم مشخص کنیم که چه نوع فایل Dump ایی در زمان خطای صفحه آبی تولید بشه تا ما از اون استفاده کنیم.

بهترین انتخاب ، انتخاب گزینه ی Kernel Memory Dump هست.

 

8ksibswybcrr79eyhpqh.jpg

 

ادامه داره . . .

 

لینک به دیدگاه
  • پاسخ 56
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

بهترین ارسال کنندگان این موضوع

آنالیز فایل های Kernel Dump برای تشخیص دلیل خطا. . .

 

توو بخش قبلی معلوم شد وقتی خطای صفحه آبی رخ بده ، فایل هایی از نوع .dmp بوجود میاد که حاوی اطلاعات موجود در رم در زمان بروز خطا هست.آدرس این فایل ها C:\Windows\Minidump هست.

برای اینکه بتونیم بررسی کنیم که چه اتفاقی برای ویندوز افتاده ، نیازه که این فایل ها بررسی بشن.

این فایل ها در محیط ویندوز به این راحتیا باز نمیشن و باید با نرم افزار های مخصوص این فایل ها رو بررسی کرد.

نرم افزارهایی که قادر به آنالیز فایل های Kernel Dump هستن به Kernel Debugger معروف هستن.

بهترین Kernel Debugger ایی که میشه برای آنالیز این فایل ها استفاده کرد ، نرم افزار WinDbg هست.

این نرم افزار بصورت یه پکیج به نام Windows SDK در سایت مایکروسافت وجود داره که دارای دو نسخه ی 32bit و 64bit هست. واضحه که برای سیستم عامل 64 بیت ، ما از نسخه ی 64 بیتی استفاده میکنیم و برای 32 بیت ، از نسخه ی 32 بیت.

برای دانلود وارد

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
شین و فایل کم حجم 498 کیلوبایتی رو دانلود کنین.

بعضی از Component های Windows SDK برای نصب نیاز به .Net Framework 4 داره ولی برای نصب WinDbg نیازی به این فایل نداریم.

بعد از دانلود ، فایل رو اجرا کنین و اگه خطایی در رابطه با .Net مشاهده کردین ازش رد شین.

برای نصب این Debugger باید به اینترنت وصل باشین تا توسط این فایل 498 کیلوبایتی دانلود بشه.

بعد از اجرای این فایل ، مهم ترین بخشی که باهاش روبرو میشین ، تصویر زیر هست :

 

x4e19erjnf3e4iiveizj.jpg

 

ما فقط به نرم افزار Debugger نیاز داریم پس فقط گزینه ی Debugging Tools For Windows رو تیک میزنیم.

این نرم افزار حدود 85 مگابایت حجم داره و با زدن دکمه ی Next دانلود و نصب آغاز میشه.

بعد از نصب برنامه ، میتونیم از منوی استارت و قسمت All programs پوشه ای به اسم Debugging tools for windows رو پیدا کنیم و برنامه ی WinDbg رو باز کنیم. مثل عکس زیر :

 

2yohxcg49lnuweynhgfu.jpg

 

وقتی برنامه رو باز کردیم باید یه سری تنظیمات روی برنامه انجام بدیم.

مهم ترین کاری که باید انجام بدیم تنظیم مسیر Symbol ها برای عملیات Debugging هست.

وقتی یه Application یا یه فایل DLL ساخته میشه ، در بخشی از عملیات تولید و کامپایل کردن اون فایل یه سری فایل های اضافی هم تولید میشه . این فایل های اضافی در واقع Symbol ها هستن.

برای اجرا کردن Application و DLL ها ، نیازی به Symbol نداریم و در واقع برنامه ها بدون نیاز به این سمبل ها قادر به اجرا شدن هستن ولی وقتی ما نیاز به Debug کردن یه برنامه داشته باشیم ، داشتن این سمبل ها اهمیت زیادی داره.

وقتی ما از WinDbg برای عملیات Debugging استفاده میکنیم ، باید مسیر Symbol های مورد نیاز رو هم برای اون مشخص کنیم تا به کمک اون سمبل ها بتونه اطلاعات مورد نیاز رو از فایل dump آنالیز کنه.

اهمیت این سمبل ها زمانی مشخص میشه که وقتی شما بخواهین یه Kernel Dump رو بدون قرار دادن مسیر سمبل ها آنالیز کنین ، بعد از لود کردن اون فایل dmp ، با خطای Symbols could not be loaded مواجه میشین.

هر سری از سیستم عامل های ویندوز با هر نوع ویرایش و سرویس پک ، Symbol های خاص و مجزای خودش رو داره. برای مثال سمبل Windows 7 Service Pack 1 با Service Pack 2 این سیستم عامل تفاوت داره و باید سمبل های جداگانه رو برای عملیات Debugging دانلود کرد و مسیرشون رو در WinDbg تنظیم کرد. اگه شما سمبلی رو به اشتباه دانلود کنید و از اون استفاده کنید ، اطلاعات آنالیزی که از WinDbg بدست میاد هم اشتباه خواهد بود. همچنین اگه این فایل های Symbol از Kernel سیستم عامل شما قدیمی تر یا جدید تر باشه هم با مشکل مواجه میشید.

کاری که میشه بجای دانلود کردن سمبل های مورد نیاز انجام داد اینه که برنامه رو جوری تنظیم کنیم تا سمبل های مورد نیازش رو بطور آنلاین از Microsoft Symbol Server دریافت کنه. البته دانلود کردن آنلاین این سمبل ها نیاز به اینترنت پرسرعت داره چون ممکنه برای هر عملیات Debugging چندین مگابایت سمبل رو دریافت کنه و برای همین ، عملیات آنالیز ممکنه دقایقی طول بکشه. ولی به هر حال مطمئن ترین روش برای دریافت سمبل های صحیح هست.

 

بعد از باز کردن برنامه ، از منوی File گزینه ی Symbol File Path رو انتخاب میکنیم تا آدرش فایل های سمبل رو برای دریافت آنلاین ، به برنامه بدیم.

وقتی این گزینه رو انتخاب کردیم ، کادری باز میشه که با باید آدرس زیر رو در اون وارد کنیم :

 

SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

1yt6b3bwj0n9g6t1nad.jpg

در این دستور ما به برنامه گفتیم برای هر عملیات آنالیز ، فایل های سمبل مورد نیاز رو از سرور مایکروسافت دانلود کن و اونها رو در درایو C و پوشه ی symbols ذخیره کن. لازم به ذکره که وقتی WinDbg سمبل هایی رو دریافت کرد ، اونارو در مسیری که مشخص کردیم ذخیره میکنه ، پس اگه دوباره در یه آنالیز دیگه به سمبل های مشابه نیاز پیدا کرد دیگه اونارو دانلود نمیکنه بلکه از همین فایل Symbols موجود در درایو C استفاده میکنه. ما میتونیم آدرس ذخیره سازی Symbol هارو به هر مکانی که دوست داریم منتقل کنیم. برای مثال درایو D و . . که بستگی به خودتون داره.

بعد از دادن آدرس و زدن OK ، از منوی File گزینه ی Save WorkSpace رو انتخاب کنین تا تغییرات برای همیشه ذخیره بشه و در هر سری از آنالیز ، نیازی به وارد کردن آدرس سمبل ها نباشه.

بعد از ذخیره سازی محیط کار ، کار تنظیم WinDbg به پایان رسید و میتونیم عملیات Debugging رو شروع کنیم.

 

بازم تکرار میکنم که عملیات آنالیز و Debugging چیزی نیست که کار هرکسی باشه و یه شاخه ی مجزا در علم کامپیوتر داره که نیاز به دانش بالای برنامه نویسی و ساختار سیستم عامل داره.

کاری که ما اینجا انجام میدیم پیدا کردن یه سری اطلاعات سطحی از فایل های Dump هست تا بتونیم بفهمیم خطای صفحه آبی از کجا نشات گرفته و بتونیم تا حدی حلش کنیم. در واقع همین اطلاعات سطحی که بدست میاریم در بسیاری از مواقع راهگشا هست و میتونیم مشکلمون رو حل کنیم.

پس امیدوارم از من انتظار نداشته باشین در حد یه مهندس مایکروسافت بتونم یه فایل DMP رو آنالیز کنم.

 

در پست بعد یه سری فایل Dump رو با هم آنالیز میکنیم و سعی میکنیم تا حدی بفهمیم علت خطای صفحه آبی چی بوده.

 

ادامه داره . . . .

لینک به دیدگاه

خب در پست های قبلی یه مقدار در مورد دلایل خطای صفحه آبی صحبت کردیم و متوجه شدیم خطای صفحه آبی زمانی رخ میده که یکی از Application های Kernel Mode ، دستورالعمل غیرمجازی رو ارسال میکنه و سیستم عامل برای جلوگیری از صدمات و . . . سیستم رو به حالت تعلیق در میاره و صفحه ی آبی مرگ پیداش میشه.همینطور متوجه شدیم بعد از هر خطای صفحه آبی ، با توجه به تنظیماتی که انجام میدیم یه سری فایل های dmp تولید میشه که به ما در مورد دلایل این خطا ، اطلاعات زیادی میده.

توو این پست سعی میکنیم یه مقدار در مورد ساختار یه خطای صفحه آبی صحبت کنیم و در آخر هم یه فایل Dump رو به کمک نرم افزار WinDbg آنالیز کنیم تا تاحدی متوجه شیم مشکل چی بوده.

 

شکل و شمایل دقیق یه خطای صفحه آبی به نوع خطا برمیگرده و با توجه به انواع خطایی که ممکنه رخ بده ، تغییر میکنه . ولی بطور کل ، یه خطای صفحه آبی حاوی کد خطا و یه سری اطلاعات پایه ای دیگه از خطای به وقوع پیوسته هست. بعنوان مثال عکس زیر یه نوع خطای صفحه آبی رو نشون میده :

 

cx983o2dhd8jw4yg7q7.jpg

این عکس با اینکه عکس زیاد دلچسب و user friendly ایی نیست ، ولی حاوی نکات قابل توجهی هست.

در اول عکس چیزی به اسم STOP و یه کد Hexadecimal میبینیم.

این کد Hexadecimal در واقع کد خطای به وقووع پیوسته هست. در واقع این کد به ما نشون میده که چه نوع خطایی در سیستم ایجاد شده که باعث پیدا شدن صفحه ی آبی شده.

هر خطا کد Hexadecimal خاص خودش رو داره و هر کد Hexadecimal ، اسم سمبولیک خاص خودش رو داره.

برای مثال در عکس بالا ، کد خطای ایجاد شده ، 0x79 هست. ما میتونیم اسم سمبولیک این خطا و اطلاعات پایه ای از دلایل کلی این خطا رو از کتابخونه ی آنلاین مایکروسافت و یا Help نرم افزار WinDbg بدست بیاریم. تصویر زیر ، Help نرم افزار WinDbg و قسمت Bug check ها رو نشون میده که حاوی کد تمامی خطاهای رایج صفحه آبی هست :

 

bjxlksq491iy38urifn4.jpg

 

من با جستجو در این Help متوجه شدم ، اسم سمبلیک و دلایل کلی خطای با کد 0x79 چی هست :

 

اسم سمبولیک خطا : MISMATCHED_HALT

 

دلایل عمده : زمانی که کاربر قصد آپدیت دستی کرنل ویندوز ( Ntoskrnl.exe ) و Hal.dll رو داشته باشه.

این خطا همچنین به این دلیل رخ میده که این فایل ها ، قدیمی باشن . برای مثال Hal.dll ممکنه برای ویندوز 2000 طراحی شده باشه و نسخه ی Ntoskrnl.exe برای ویندوز XP باشه.

 

راه حل : میتونیم با سی دی ویندوز ، وارد قسمت ریکاوری شیم و فایل های Hal.dll و Ntoskrnl.exe رو با دستورات Copy و . . . جایگزین فایل های قدیمی کنیم.

 

خب چیزی که مشخص شد اینه که یکی از مهم ترین منابع برای بدست اوردن دلایل خطای صفحه آبی ، استفاده از راهنمای WinDbg هست که واقعا هم راهنمای جامع و کاربردی ایی هست.

 

دوباره به عکس خطای صفحه آبیمون بر گردیم :

گفتیم در مقابل STOP ، یه کد Hexadecimal وجوود داره که نشون دهنده ی نوع خطاست.

خب اگه دوباره به عکس بالا نگاه کنین میبینین در مقابل کد خطا ، یه پرانتزی باز شده که حاوی 4 قسمت هست . هر یک از اون قسمت ها ، پارامتری هستن که به کمک این پارامتر ها میشه نوع خطا رو بهتر متوجه شد. اینجا هم قسمت راهنمای نرم افزار WinDbg به کمک ما میاد. برای مثال در قسمت راهنمای کد 0x79 نوشته شده که : اگه پارامتر اول ، 0x2 باشه ، سایر پارامتر ها نشون دهنده ی چی هستن و دلیل دقیق تر خطا دقیقا چی میتونه باشه.

 

خب تا اینجا متوجه شدیم ساختار کلی خطای صفحه آبی چیه.

بیاین یه مقدار دقیق تر بررسی کنیم :

توو این قسمت میخوام به کمک WinDbg و تنظیماتی که توو پست های قبل انجام دادیم ، یه فایل Kernel Dump رو که در زمان خطای صفحه آبی تولید شده ، باز کنم و در حد خودم بفهمم جریان از چه قرار بوده که این خطا بوجود اومده .

 

برای شروع به اینترنت وصل میشم و نرم افزار WinDbg رو باز میکنم.

 

از منوی File گزینه ی Open Crash Dump رو انتخاب میکنم و فایل Dump ایی که بوجود اومده رو وارد نرم افزار میکنم. دقت کنین : زمانی که شما میخواین فایل Kernel Dump رو از پوشه ی Minidump باز کنین ، چون این فایل ، یه فایل محافظت شده هست ، با خطا مواجه میشین . پس بهتره فایل های Dump ایی که تولید میشه رو یه جا کپی کنین و از همون فایل های کپی شده برای آنالیز استفاده کنین.

 

وقتی فایل Dump رو باز کردم ، نرم افزار شروع به اتصال به اینترنت میکنه و مشخصات پایه ای این فایل Dump رو به من نشون میده . از این قسمت به بعد چون به اینترنت وصل میشیم ، ممکنه یه مقدار طول بکشه.

تصویر زیر ، مرحله ی اول رو نشون میده :

5euax1t3ryfjq0jxhdl.png

 

خب قبل از اینکه دکمه ی Analyze رو فشار بدیم ، بهتره یه نگاهی به اطلاعاتی که دورش خط قرمز کشیدم بندازیم :

این اطلاعات ، پایه ای ترین اطلاعات رو مشخص میکنه که قسمت های جالبش رو مشخص کردم.

اولی ، مشخصات دقیق سیستم عامل رو مشخص میکنه که همونطور که میبینین ، سیستم عامل Windows 7 Service Pack 1 X86 هست و دومین خط ، زمانی که سیستم تا قبل از بروز خطای صفحه آبی ، فعال بوده. اینجا سیستم حدود 31 دقیقه فعالیت داشته و بعد از 31 دقیقه ، خطای صفحه آبی پیداش شده.

 

خب حالا شروع به آنالیز میکنیم.

دکمه ی آنالیز رو فشار میدیم و منتظر میمونیم تا کار آنالیز و دریافت آنلاین سمبل های مورد نیاز به پایان برسه. بعد از انجام آنالیز ، به انبوهی از کد های مختلف بر میخوریم که مورد کلیش به شکل زیر هست :

 

Microsoft ® Windows Debugger Version 6.12.0002.633 AMD64

Copyright © Microsoft Corporation. All rights reserved.

 

 

Loading Dump File [C:\Users\Hoseing\Desktop\Minidump\091011-21481-01.dmp]

Mini Kernel Dump File: Only registers and stack trace are available

 

WARNING: Whitespace at end of path element

Symbol search path is: SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

Executable search path is:

Windows 7 Kernel Version 7601 (Service Pack 1) MP (4 procs) Free x86 compatible

Product: WinNt, suite: TerminalServer SingleUserTS

Built by: 7601.17640.x86fre.win7sp1_gdr.110622-1506

Machine Name:

Kernel base = 0x82e1a000 PsLoadedModuleList = 0x82f634f0

Debug session time: Sat Sep 10 09:28:08.315 2011 (UTC + 4:30)

System Uptime: 0 days 0:30:58.642

Loading Kernel Symbols

...............................................................

................................................................

...................................................

Loading User Symbols

Loading unloaded module list

.........

*******************************************************************************

* *

* Bugcheck Analysis *

* *

*******************************************************************************

 

Use !analyze -v to get detailed debugging information.

 

BugCheck A, {0, 2, 0, 82e939fc}

 

Probably caused by : dxgmms1.sys ( dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51 )

 

Followup: MachineOwner

---------

 

0: kd> !analyze -v

*******************************************************************************

* *

* Bugcheck Analysis *

* *

*******************************************************************************

 

IRQL_NOT_LESS_OR_EQUAL (a)

An attempt was made to access a pageable (or completely invalid) address at an

interrupt request level (IRQL) that is too high. This is usually

caused by drivers using improper addresses.

If a kernel debugger is available get the stack backtrace.

Arguments:

Arg1: 00000000, memory referenced

Arg2: 00000002, IRQL

Arg3: 00000000, bitfield :

bit 0 : value 0 = read operation, 1 = write operation

bit 3 : value 0 = not an execute operation, 1 = execute operation (only on chips which support this level of status)

Arg4: 82e939fc, address which referenced memory

 

Debugging Details:

------------------

 

 

READ_ADDRESS: GetPointerFromAddress: unable to read from 82f83848

Unable to read MiSystemVaType memory at 82f62e40

00000000

 

CURRENT_IRQL: 2

 

FAULTING_IP:

nt!KiSignalSynchronizationObject+15

82e939fc 8b07 mov eax,dword ptr [edi]

 

CUSTOMER_CRASH_COUNT: 1

 

DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT

 

BUGCHECK_STR: 0xA

 

PROCESS_NAME: System

 

TRAP_FRAME: 9e32dc14 -- (.trap 0xffffffff9e32dc14)

ErrCode = 00000000

eax=859bada8 ebx=859badb0 ecx=00000002 edx=00000000 esi=00000000 edi=00000000

eip=82e939fc esp=9e32dc88 ebp=9e32dc98 iopl=0 nv up ei pl nz na pe cy

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010207

nt!KiSignalSynchronizationObject+0x15:

82e939fc 8b07 mov eax,dword ptr [edi] ds:0023:00000000=????????

Resetting default scope

 

LAST_CONTROL_TRANSFER: from 82e939fc to 82e5b5db

 

STACK_TEXT:

9e32dc14 82e939fc badb0d00 00000000 9e32dcc4 nt!KiTrap0E+0x2cf

9e32dc98 82e91553 82f44d20 859bada8 89969390 nt!KiSignalSynchronizationObject+0x15

9e32dcc4 94108e77 859bada8 00000000 00000000 nt!KeSetEvent+0x8e

9e32dcf0 9410a4c8 00000000 9e32dd18 9411e1df dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+0x51

9e32dcfc 9411e1df 88bcbf08 89969390 89969390 dxgmms1!VidMmiProcessTerminationCommand+0x10

9e32dd18 9411f18f 858bc648 858bf3f8 9e32dd3c dxgmms1!VidSchiSubmitDeviceCommand+0x33

9e32dd28 9411f3de 89969390 82e51509 88887788 dxgmms1!VidSchiSubmitQueueCommand+0xaf

9e32dd3c 9411f485 88887788 00000000 888a8c20 dxgmms1!VidSchiRun_PriorityTable+0x24

9e32dd50 83022fda 88887788 b7c54225 00000000 dxgmms1!VidSchiWorkerThread+0x7f

9e32dd90 82ecb1d9 9411f406 88887788 00000000 nt!PspSystemThreadStartup+0x9e

00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19

 

 

STACK_COMMAND: kb

 

FOLLOWUP_IP:

dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51

94108e77 56 push esi

 

SYMBOL_STACK_INDEX: 3

 

SYMBOL_NAME: dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51

 

FOLLOWUP_NAME: MachineOwner

 

MODULE_NAME: dxgmms1

 

IMAGE_NAME: dxgmms1.sys

 

DEBUG_FLR_IMAGE_TIMESTAMP: 4d4a24c1

 

FAILURE_BUCKET_ID: 0xA_dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51

 

BUCKET_ID: 0xA_dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51

 

Followup: MachineOwner

---------

خبب میبینین که به کلی کد شلوغ برخوردیم.

برای سادگی من کد ها رو قسمت میکنم و جاهایی رو که تاحدی میفهمم چی به چیه رو مشخص میکنم و توضیح میدم :

 

قسمت اول ، کد زیر هست :

 

IRQL_NOT_LESS_OR_EQUAL (a)

An attempt was made to access a pageable (or completely invalid) address at an

interrupt request level (IRQL) that is too high. This is usually

caused by drivers using improper addresses.

If a kernel debugger is available get the stack backtrace.

Arguments:

Arg1: 00000000, memory referenced

Arg2: 00000002, IRQL

Arg3: 00000000, bitfield :

bit 0 : value 0 = read operation, 1 = write operation

bit 3 : value 0 = not an execute operation, 1 = execute operation (only on chips which support this level of status)

Arg4: 82e939fc, address which referenced memory

قسمت اول که ما از این آنالیز بدست میاریم ، قسمت bug check یا همون کد خطاست.

مشخصه که کد خطای این فایل ، 0xa هست و اسم سمبولیک اون : IRQ_NOT_LESS_OR_EQUAL .

قسمتی که به نام Argument قرمز شده در واقع همون پارامتر های روبروی کد خطا هست.

برای درک قسمت اول این کد ، بهتره وارد قسمت راهنمای WinDbg یا

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
بشیم تا بفهمیم بطور کلی ، چه اتفاقی برای سیستم افتاده که این خطا بوجود اومده :

 

خب با مطالعه ی راهنما متوجه میشیم که این خطا زمانی اتفاق میفته که یک پروسه ای که در حالت Kernel Mode اجرا میشه ، سعی داشته به بخشی از حافظه دسترسی پیدا کنه که اجازه ی دسترسی به اون رو نداشته و میخواسته بطور غیر قانونی به اون آدرس ، دسترسی پیدا کنه. در ادامه توضیحاتی رو هم در مورد دلیل این خطا میده که میتونه : یه درایور ناهماهنگ و . . . باشه.

 

خب برسیم به قسمت Arguments .

این قسمت همونطور که گفتم همون پارامتر های مربوط به خطاست که معنی خاص خودش رو دارن.

از راهنمای WinDbg متوجه شدم که :

آرگومان اول مربوط میشه به مقصدی که دستورالعمل اشتباه به اون ارسال شده.

آرگومان دوم مربوط میشه سطح IRQ که در اینجا برابر 2 هست. ( در مورد IRQ خودتون تحقیق کنین ولی بطور کلی مربوط میشه به مسیری که یه سخت افزار برای ارتباط با پردازنده از اون استفاده میکنه.)

آرگومان سوم مربوط میشه به عملیات خوندن و یا نوشتن روی حافظه که مقدار اون 0 گزارش شده و اینجا یعنی خوندن.

آرگومان چهارم هم آدرسی از حافظه هست که این خطا در اونجا رخ داده.

 

خب پس بطور کلی میتونیم متوجه بشیم که این خطا به این دلیل رخ داده که برنامه ای سعی داشته در قسمتی از حافظه که آدرس اون 82e939fc هست ، در سطح IRQL=2 عمل خوندن رو انجام بده که اجازه ی این کار رو نداشته و برای این ، خطای صفحه آبی رخ داده.

 

برسیم به قسمت بعد :

 

FAULTING_IP:

nt!KiSignalSynchronizationObject+15

82e939fc 8b07 mov eax,dword ptr [edi]

 

CUSTOMER_CRASH_COUNT: 1

 

DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT

 

BUGCHECK_STR: 0xA

 

PROCESS_NAME: System

 

TRAP_FRAME: 9e32dc14 -- (.trap 0xffffffff9e32dc14)

ErrCode = 00000000

eax=859bada8 ebx=859badb0 ecx=00000002 edx=00000000 esi=00000000 edi=00000000

eip=82e939fc esp=9e32dc88 ebp=9e32dc98 iopl=0 nv up ei pl nz na pe cy

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010207

nt!KiSignalSynchronizationObject+0x15:

82e939fc 8b07 mov eax,dword ptr [edi] ds:0023:00000000=????????

Resetting default scope

 

LAST_CONTROL_TRANSFER: from 82e939fc to 82e5b5db

خب در این قسمت اطلاعات یه مقدار دقیق تر میشه :

 

قسمتی که به اسم Faulting IP وجود داره نشون دهنده ی قسمتی از حافظه هست که خطا در اونجا رخ داده. توو این مورد : آدرس 82e939fc رو به ما داده.

 

قسمت BUGCHECK_STR هم همون کد خطا رو به ما میده.

 

قسمت PROCESS_NAME هم قسمتیه که پروسه ی درگیر در زمان بروز خطا رو اعلام میکنه.

در این نمونه ، پروسه ی System در زمان خطا ، درگیر بوده . ولی چیزی که تقریبا واضحه اینه که این پروسه به خودی خود باعث ایجاد خطا نشده! چرا؟ چون پروسه ی System یه پروسه ی مربوط به خود سیستم عامل ویندوز هست و اینکه بخواد باعث خطای صفحه آبی بشه باید خودش یه مشکل داشته باشه. چیزی که خیلی بعیده از نظر من. در ثانی خود سایت مایکروسافت هم اطلاعاتی رو در مورد خطاهای نرم افزاری پروسه ی System منتشر نکرده ، چرا که اگه غیر این بود مطمئنا یه Patch اصلاحی برای اون ارائه میکرد. بطور کل بهتره بدونین اگه پروسه ای که در این نرم افزار نام برده شد ، پروسه ای مربوط به خود سیستم عامل بود ، احتمال اینکه خود این پروسه ، باعث ایجاد خطا شده باشه بسیار کمه . جز اینکه خودش یه مشکل ذاتی داشته باشه که در این صورت ، مایکروسافت یه Patch اصلاحی برای اون منتشر میکنه . پس باید دنبال پروسه ی دیگه ای بود.

 

قست مهمی وجوود داره به نام TRAP_FRAME . با کمک از راهنمای برنامه ی WinDB در مورد خطای با کد 0XA متوجه شدم ، قسمت Trap Frame قسمتیه که دقیق ترین اطلاعات در مورد خطا در اون وجوود داره.

این اطلاعات در واقع چیزی نیست که به درد ما بخوره و بیشتر برای برنامه نویسا با ارزش هست تا دقیقا بفهمن چه دستورالعملی به وقوع پیوسته و . . . ما بیشتر به دنبال اطلاعات کلی میگردیم تا مشکل خودمون رو برطرف کنیم.

 

آخرین قسمت هم آدرس هایی از حافظه رو مشخص میکنه که آخرین دستورالعمل ها قبل از خطای صفحه آبی در اوون آدرس ها انجام میشد.

 

بریم قسمت بعد که قسمت اصلی خطا هست ، یعنی قسمت Stack :

 

STACK_TEXT:

9e32dc14 82e939fc badb0d00 00000000 9e32dcc4 nt!KiTrap0E+0x2cf

9e32dc98 82e91553 82f44d20 859bada8 89969390 nt!KiSignalSynchronizationObject+0x15

9e32dcc4 94108e77 859bada8 00000000 00000000 nt!KeSetEvent+0x8e

9e32dcf0 9410a4c8 00000000 9e32dd18 9411e1df dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+0x51

9e32dcfc 9411e1df 88bcbf08 89969390 89969390 dxgmms1!VidMmiProcessTerminationCommand+0x10

9e32dd18 9411f18f 858bc648 858bf3f8 9e32dd3c dxgmms1!VidSchiSubmitDeviceCommand+0x33

9e32dd28 9411f3de 89969390 82e51509 88887788 dxgmms1!VidSchiSubmitQueueCommand+0xaf

9e32dd3c 9411f485 88887788 00000000 888a8c20 dxgmms1!VidSchiRun_PriorityTable+0x24

9e32dd50 83022fda 88887788 b7c54225 00000000 dxgmms1!VidSchiWorkerThread+0x7f

9e32dd90 82ecb1d9 9411f406 88887788 00000000 nt!PspSystemThreadStartup+0x9e

00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19

قسمت Stack مهم ترین قسمت در این آنالیز هست.

این قسمت تمامی توابع فراخوانی شده در زمان بروز خطا رو مشخص میکنه و پارامتر ها و آدرس های هرکدوم رو نشون میده.

با کمی جستجو در اینترنت متوجه شدم که توابعی که در کنارشون علامت nt! وجوود داره ، توابع مربوط به خود سیستم عامل هستن که خب بعیده مشکل از خود سیستم عامل باشه ولی تابعی که یه مقدار مشکوک بود ، تابع dxgmms1 هست. با یه جستجوی کوچیک توو اینترنت متوجه شدم که این تابع ، مربوط به برنامه ی Direct X هست!! پس به احتمال زیاد ، پروسه ی System زمانی که داشته یکی از توابع برنامه ی Direct X رو فراخوانی میکرده با مشکل مواجه شده و خطای صفحه آبی پدید اومده . پس به احتمال زیاد، مشکل از خود Direct X هست.

 

بریم یکم جلوتر ببینیم به کجا میرسیم :

 

FOLLOWUP_IP:

dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51

94108e77 56 push esi

 

SYMBOL_NAME: dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51

 

FOLLOWUP_NAME: MachineOwner

 

MODULE_NAME: dxgmms1

 

IMAGE_NAME: dxgmms1.sys

 

DEBUG_FLR_IMAGE_TIMESTAMP: 4d4a24c1

 

FAILURE_BUCKET_ID: 0xA_dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51

 

BUCKET_ID: 0xA_dxgmms1!VIDMM_GLOBAL::ProcessTerminationCommand+51

 

Followup: MachineOwner

 

خب چیزی که از این قسمت مشخص میشه اینه که احتمالا نرم افزار فایل dxgmms1 رو دلیل خطا تشخیص داده .

در قسمت بالای این نوشته ها ، قسمتی وجوود داره به نام FOLLOWUP_IP که نشون دهنده ی آدرسی از حافظه هست که فایل dxgmm1 در اون فراخوانی شده. هر فایلی در حافظه ، آدرس خاص خودش رو داره .

برای اینکه مطمئن بشیم آدرس داده شده ( 94108e77 ) ، متعلق به فایل dxgmm1 هست و مشکل از همین فایله ، باید چک کنیم و ببینیم آدرس شروع و آدرس پایان این فایل در حافظه چیه. اگه آدرس قرمز رنگ ، بین این آدرس شروع و پایان بود نتیجه میگیریم احتمالا تشخیص درسته و مشکل بخاطر dxgmms1 بوده.

برای این کار در پایین پنجره ، دستور زیر رو مینویسیم :

lmvm dxgmms1

 

بعد از زدن Enter ، متن زیر رو میبینیم :.

0: kd> lmvm dxgmms1

start end module name

940ed000 94126000 dxgmms1 (pdb symbols) c:\symbols\dxgmms1.pdb\DA8ACD5DDA95431082D1FD0213C2AD001\dxgmms1.pdb

Loaded symbol image file: dxgmms1.sys

Mapped memory image file: c:\symbols\dxgmms1.sys\4D4A24C139000\dxgmms1.sys

Image path: \SystemRoot\System32\drivers\dxgmms1.sys

Image name: dxgmms1.sys

Timestamp: Thu Feb 03 07:15:05 2011 (4D4A24C1)

CheckSum: 00043FB4

ImageSize: 00039000

File version: 6.1.7601.17554

Product version: 6.1.7601.17554

File flags: 0 (Mask 3F)

File OS: 40004 NT Win32

File type: 3.7 Driver

File date: 00000000.00000000

Translations: 0409.04b0

CompanyName: Microsoft Corporation

ProductName: Microsoft® Windows® Operating System

InternalName: dxgmms1.sys

OriginalFilename: dxgmms1.sys

ProductVersion: 6.1.7601.17554

FileVersion: 6.1.7601.17554 (win7sp1_gdr.110202-1504)

FileDescription: DirectX Graphics MMS

LegalCopyright: © Microsoft Corporation. All rights reserved

این دستور ، مشخصات فایل dxgmms1 رو بطور کامل به ما نشون میده و میبینیم آدرس 94108e77 ، بین آدرس اغاز و پایان قرار داره.

خب پس احتمالا Direct X باعث ایجاد خطا شده.

کاری که میتونیم بکنیم اینه که دایرکت ایکس رو بطور کامل پاک کنیم و دوباره نسخه ی هماهنگ با کارت گرافیکمون رو نصب کنیم.

 

فایل Dump ایی که آنالیز کردیم رو هم پیوست میکنم براتون تا برای تست ازش استفاده کنین.

 

سوالی بود ، در حد خودم در خدمتم . . . :w70:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه

بازم سلام.

توو پست های قبلی تا حدی سعی کردم به نحو تکنیکال دلایل بروز یه خطای صفحه آبی و نحوه ی برخورد با اون رو توضیح بدم. توو این پست ، یکی از راه های خوبی که ویندوز 7 پیش روی ما گذاشته رو بهتون معرفی میکنم تا راحت تر بتونیم با این مشکل ، برخورد کنیم.

البته لازم به ذکره که این راه حل بیشتر به عنوان یه راه حل پایه برای کابرای معمولی کامپیوتر ، پیشنهاد شده و فقط به این دلیل معرفی شده که دوستانی که حوصله ی گشت زدن در فایل های Minidump رو ندارن ، بتونن بدون استفاده از راه های پیچیده برای حل کردن مشکلشون از اون استفاده کنن.

قابلیتی که در موردش صحبت میکنیم Application ایی هست به اسم Driver Verifier که در ویندوز وجوود داره.

این برنامه کاری که میکنه اینه که با ایجاد Stress و سایر تست ها روی درایور های Kernel Mode ، اون ها رو تست میکنه و تحت فشار قرار میده تا اگه خطایی در اونا وجوود داره ، خودش رو بصورت خطای صفحه آبی نشون بده.

برای اجرای برنامه ، روی استارت کلیک میکنیم و در قسمت جستجو : Verifier.exe رو جتسجو میکنیم :

 

uvth7b7nwv16sy3e7s43.jpg

 

بعد از بازکردن برنامه نیازه که برنامه رو Config یا پیکر بندی کنین.

چند نوع گزینه برای انتخاب روبروی شماست.

نوع Standard Setting که برای اکثر افراد معمولی ، کارا هست و نوع Custom که حاوی گزینه ها و روش های تست مفیدی برای برنامه نویسای حرفه ای هست تا درایورشون رو در شرایط سخت و مختلف قرار بدن.

 

5su5xl60j784otu67zy.jpg

 

ما کار رو برای کاربرای عادی ادامه میدیم پس گزینه ی اول رو انتخاب میکنیم و وارد مرحله ی بعد میشیم.

 

8krmvtvrrtjz84irun3d.jpg

 

توو این مرحله باید درایور هایی که به اونا مشکوک هستیم رو لیست کنیم.

هم میتونیم گزینه ی اتوماتیک رو انتخاب کنیم که نرم افزار برای ما این کار رو انجام بده و هم گزینه ی آخر رو انتخاب کنیم که خودمون بطور دستی این کار رو انجام بدیم.

البته در سایت خود مایکروسافت نوشته شده که بهتره برای تست ، تمامی درایور هارو انتخاب نکنیم تا برنامه با مشکل مواجه نشه.

برای همین من ترجیح میدم گزینه ی آخر رو انتخاب کنیم و درایوری که شک داریم روو انتخاب کنیم.

برای مثال میتونیم تمامی درایور هایی که در توضیحات اونا نوشته شده Microsoft Corporation رو غیر فعال کنیم و فقط درایور هایی رو تیک بزنیم که مربوط به شرکتی غیر از مایکروسافت هستن.

 

بعد از انتخاب درایور ها ، سیستم شروع به اسکن کردن و چندین مرحله ریستارت کردن میکنه و ممکنه چندین بار هم با خطای صفحه آبی مواجه بشین.

این عملیات ریستارت اونقدر ادامه پیدا میکنه تا شما بتونید وارد محیط دسکتاپتون بشید.

بعد از این کار ، Verifier درایور های مشکل دار رو بطور اتوماتیک غیر فعال میکنه تا ویندوز بتونه بالا بیاد.

در صورتی که نتونستین وارد محیط ویندوز بشین ، میتونید با زدن F8 لیست گزینه های بوت رو باز کنین و گزینه ی Last Known Good settings رو انتخاب کنین و ویندوز رو بالا بیارین.

بعد از اینکار ، نیازه که Verifier رو غیر فعال کنین، پس بازش میکنیم و در مرحله ی اول ، Delete Existing settings رو میزنیم و کار برنامه رو خاتمه میدیم.

معمولا اطلاعات کلی تر از نتیجه ی عملیات در یه سری فایل Dump نوشته میشه که بعد از هر مرحله ریستارت ، سیستم اونارو تولید میکنه. میتونید برای اطلاعات دقیق تر ، اون فایل ها رو با WinDbg باز کنین و آنالیز کنین.

راه دیگه ای که وجوود داره اینه که در مرحله ی انتخاب درایور ، گلچین کنین!

یعنی اول از همه چند تا درایور که خیلی به اونا مشکوک هستین رو انتخاب کنین و در مراحل بعد ، این تعداد رو کمتر کنین تا درایور معیوب رو پیدا کنین.

 

سوالی بود در خدمتیم.

لینک به دیدگاه
  • 1 ماه بعد...
  • 1 ماه بعد...

با سلام خدمت شما و با تشکر از آموزش بسیار مفیدتون

راستش به مشکلی که برای من پیش اومد این بود که

بعد از تماشای فیلم و موقع بستن پلیر با صفحه آبی مواجه شدم

از اونجا که سیستمم رو تازه تهیه کردم ، میخوام مطمئن بشم که از نظر سخت افزاری مشکلی نداشته باشه

مخصوصا هارد سیستم (برای همین تصمیم گرفتم هر طور شده بفهمم دلیل این صفحه آبی چی بوده)

با جستجو به پست شما رسیدم و قدم به قدم کارهایی رو که گفتید انجام دادم

اما راستش نفهمیدم مشکل اصلی کجاست

برای همین نتیجه نهایی رو براتون قرار میدم تا اگر اشکالی نداره نگاهی بهش بندازید، شاید متوجه بشید مشکل از کجاست

پیشاپیش از کمکتون ممنونم

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه
با سلام خدمت شما و با تشکر از آموزش بسیار مفیدتون

راستش به مشکلی که برای من پیش اومد این بود که

بعد از تماشای فیلم و موقع بستن پلیر با صفحه آبی مواجه شدم

از اونجا که سیستمم رو تازه تهیه کردم ، میخوام مطمئن بشم که از نظر سخت افزاری مشکلی نداشته باشه

مخصوصا هارد سیستم (برای همین تصمیم گرفتم هر طور شده بفهمم دلیل این صفحه آبی چی بوده)

با جستجو به پست شما رسیدم و قدم به قدم کارهایی رو که گفتید انجام دادم

اما راستش نفهمیدم مشکل اصلی کجاست

برای همین نتیجه نهایی رو براتون قرار میدم تا اگر اشکالی نداره نگاهی بهش بندازید، شاید متوجه بشید مشکل از کجاست

پیشاپیش از کمکتون ممنونم

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

سلام

خطایی که برات رخ داده مربوط میشه به سیستم فایل NTFS.sys که یکی از Device Driver های مخصوص هارد دیسک هست.

دلایل این خطا ، کاملا متنوع هست و بخاطر مسائلی از قبیل خطا در ساختار سیستم فایل NTFS ، اشکال در سکتور های هارد دیسک و یا خطا و مشکل در ساختار سیستم های ذخیره سازی مثل کابل های هارد باشه.

ولی یکی از عمده ترین دلایلی که ممکنه برای این خطا بوجود بیاد ، بحث کم شدن مقدار Nonpaged Memory در RAM هست.

در واقع در این بخش از رم ، اطلاعات مربوط به Device Driver ها قرار میگیرن و همیشه برای اینکه در سطوح مختلف با سرعت بالا در دسترس باشن ، هیچ وقت به بخش های با سرعت کمتر مثل هارد ، page نمیشن . وقتی مقدار این قسمت ینی Nonpaged از مقدار خاصی کمتر بشه ، خطاهای اینچنینی ممکنه رخ بده.

فایلی که گذاشتی رو وقتی بررسی کردم متوجه شدم زمان بروز این خطا ، نرم افزار KMPlayer اجرا شده بوده پس احتمال اینکه ، این نرم افزار باعث خطا در قسمتی از Nonpaged Memory شده باشه بالاست . بهتره این نرم افزار رو پاک کنی ، سیستم رو ریستارت کنی و نسخه ی جدید تر و مطمئن تر این نرم افزار رو نصب کنی تا ببینی مشکلت حل میشه یا نه.

لینک به دیدگاه
Page_fault_in_nonpaged_area واسه این خطا چیکار کنیم؟

عزیز جان ، من همینطوری از شکم سیری نیومدم این همه مطلب در مورد این خطا ها بنویسم. :w58:

اینارو نوشتم که میزان این سوالات کلی و بدون detail رو به حداقل برسونم و کاربرا در مورد این خطاها خودشون تحقیق کنن . :icon_gol:

لینک به دیدگاه
سلام

خطایی که برات رخ داده مربوط میشه به سیستم فایل ntfs.sys که یکی از device driver های مخصوص هارد دیسک هست.

دلایل این خطا ، کاملا متنوع هست و بخاطر مسائلی از قبیل خطا در ساختار سیستم فایل ntfs ، اشکال در سکتور های هارد دیسک و یا خطا و مشکل در ساختار سیستم های ذخیره سازی مثل کابل های هارد باشه.

ولی یکی از عمده ترین دلایلی که ممکنه برای این خطا بوجود بیاد ، بحث کم شدن مقدار nonpaged memory در ram هست.

در واقع در این بخش از رم ، اطلاعات مربوط به device driver ها قرار میگیرن و همیشه برای اینکه در سطوح مختلف با سرعت بالا در دسترس باشن ، هیچ وقت به بخش های با سرعت کمتر مثل هارد ، page نمیشن . وقتی مقدار این قسمت ینی nonpaged از مقدار خاصی کمتر بشه ، خطاهای اینچنینی ممکنه رخ بده.

فایلی که گذاشتی رو وقتی بررسی کردم متوجه شدم زمان بروز این خطا ، نرم افزار kmplayer اجرا شده بوده پس احتمال اینکه ، این نرم افزار باعث خطا در قسمتی از nonpaged memory شده باشه بالاست . بهتره این نرم افزار رو پاک کنی ، سیستم رو ریستارت کنی و نسخه ی جدید تر و مطمئن تر این نرم افزار رو نصب کنی تا ببینی مشکلت حل میشه یا نه.

بینهایت از توجه و پاسختون ممنونم

حتما نسخه جدید km رو نصب میکنم و امیدوارم دیگه به مشکل نخورم

و اما در یک مورد می خوام نظرتون رو بدونم

به نظرت چقدر امکان داره که مشکل از هارد باشه(بر اساس تجربه ای که دارید میپرسم)

و بهترین راه برای اینکه به طور کامل از سلامت هاردم مطمدن بشم چیه(برنامه ای ، تستی ، چیزی که 100% بشه بهش اطمانان کرد)

تنها چیزی که نگرانم میکنه هارده ، اونم تو این بازار آشفته سخت افزار که توان خرید هارد نو رو هم ندارم

از اینکه بخاطر نگرانی خودم وقت با ارزشتون رو میگیرم ، عذر میخوام

لینک به دیدگاه
بینهایت از توجه و پاسختون ممنونم

حتما نسخه جدید km رو نصب میکنم و امیدوارم دیگه به مشکل نخورم

و اما در یک مورد می خوام نظرتون رو بدونم

به نظرت چقدر امکان داره که مشکل از هارد باشه(بر اساس تجربه ای که دارید میپرسم)

و بهترین راه برای اینکه به طور کامل از سلامت هاردم مطمدن بشم چیه(برنامه ای ، تستی ، چیزی که 100% بشه بهش اطمانان کرد)

تنها چیزی که نگرانم میکنه هارده ، اونم تو این بازار آشفته سخت افزار که توان خرید هارد نو رو هم ندارم

از اینکه بخاطر نگرانی خودم وقت با ارزشتون رو میگیرم ، عذر میخوام

وظیفست . . .

ببین دقیقا نمیشه گفت که مشکل از هارد هست یا چیز دیگه ای. . .

ولی تجربه ای که دارم اینه که همیشه نرم افزار KMPlayer برای سیستم مشکلات صفحه آبی بوجود میاورد.

اینکه بخوای دقیقا از سلامت هارد دیسکت مطمئن شی میتونی از نرم افزار HD Tune استفاده کنی و هارد رو چک کنی.

لینک به دیدگاه

آقا حسين نخسته..

ببخشيد ميخواستم يه سوال بپرسم (به اين چيزايي كه گفتي مربوط نميشه)...

من بازي فار كراي 2 رو نصب كردم ولي موقع اجر تصوير سياه ميشه يعني "صدا" مياد ولي تصوير نه..

ميشه بدون اينكه دست به تعويض سخت افزار زد اين مشكل كه مربوط به گرافيك هست (احتمال ميدم) رو حل كرد؟ مثلا با كم يا زياد كردن چيزي؟!

لینک به دیدگاه
آقا حسين نخسته..

ببخشيد ميخواستم يه سوال بپرسم (به اين چيزايي كه گفتي مربوط نميشه)...

من بازي فار كراي 2 رو نصب كردم ولي موقع اجر تصوير سياه ميشه يعني "صدا" مياد ولي تصوير نه..

ميشه بدون اينكه دست به تعويض سخت افزار زد اين مشكل كه مربوط به گرافيك هست (احتمال ميدم) رو حل كرد؟ مثلا با كم يا زياد كردن چيزي؟!

سلام

والا من فار کرای بازی نکردم تا حالا ولی خب . . . شاید بشه با تنظیم سطح گرافیکی بازی ( کاهش دادن جزئیات و رزولوشن ) بازی رو در سطح Low لود کرد.

راستی مشخصات دقیق سخت افزارات رو بگو ببینم در چه وضعیتیه؟ شاید کارت گرافیکت قابلیت اورکلاک شدن داشته باشه و بتونی با افزایش فرکانس GPU بازی رو لود کنی

ولی یه مقدار خطرناکه اگه سیستم خنک کننده ی گرافیکت درست و حسابی نباشه

لینک به دیدگاه
سلام

والا من فار کرای بازی نکردم تا حالا ولی خب . . . شاید بشه با تنظیم سطح گرافیکی بازی ( کاهش دادن جزئیات و رزولوشن ) بازی رو در سطح Low لود کرد.

راستی مشخصات دقیق سخت افزارات رو بگو ببینم در چه وضعیتیه؟ شاید کارت گرافیکت قابلیت اورکلاک شدن داشته باشه و بتونی با افزایش فرکانس GPU بازی رو لود کنی

ولی یه مقدار خطرناکه اگه سیستم خنک کننده ی گرافیکت درست و حسابی نباشه

سلام آقا حسين

ببخشيد دير جواب ميدم..

ممنون كه جوابيدي..

تنظيم بازي كه نميشه ولي منم در مورد همين "اوركلاك" يه چيزايي فهميدم ميخواستم ببينم در اين همين مورد و طرز استفادش ميدوني يا نه..

سيستم من "Onborad" هستش گرافيكش Ati readon 2100(0‍‍‍×796E هستش..

راستي ميشه در مورد Shader هم توضيح بدي؟ چون يه بازي ديگه هم نصب كردم پيامي ميداد كه Shader3.0 نصب نيستت..

اگه در مورد اين مسائل هم يه تايپيك جداگانه بزني ممنون ميشم..

با تشكر

لینک به دیدگاه
وظیفست . . .

ببین دقیقا نمیشه گفت که مشکل از هارد هست یا چیز دیگه ای. . .

ولی تجربه ای که دارم اینه که همیشه نرم افزار KMPlayer برای سیستم مشکلات صفحه آبی بوجود میاورد.

اینکه بخوای دقیقا از سلامت هارد دیسکت مطمئن شی میتونی از نرم افزار HD Tune استفاده کنی و هارد رو چک کنی.

اختیار دارید

لطف و بزرگواری بوده که امیدوارم بتونم جبران کنم

دوست من نرم افزاری رو که گفتید دانلود کردم و یک تست کامل و طولانی باهاش انجام دادم.:ws3: تمام گزینه ها رو طبیعی (ok) زده بود و سبز رنگ

حالا میتونم از سالم و بدون مشکل بودن هارد خیالم راحت باشه

(یک بار دیگه از اینکه با حوصله وقتت رو بهم دادی و کمک کردی ممنونم)

لینک به دیدگاه

جالبه

میخواستم یک علامت سوال به پست قبلم اضافه کنم تا شما متوجه بشی جملم سوالیه ، اما نگذاشت و باید پست جدید بدم !!!

حالا میتونم از سالم و بدون مشکل بودن هارد خیالم راحت باشه؟؟

لینک به دیدگاه
سلام آقا حسين

ببخشيد دير جواب ميدم..

ممنون كه جوابيدي..

تنظيم بازي كه نميشه ولي منم در مورد همين "اوركلاك" يه چيزايي فهميدم ميخواستم ببينم در اين همين مورد و طرز استفادش ميدوني يا نه..

سيستم من "Onborad" هستش گرافيكش Ati readon 2100(0‍‍‍×796E هستش..

راستي ميشه در مورد Shader هم توضيح بدي؟ چون يه بازي ديگه هم نصب كردم پيامي ميداد كه Shader3.0 نصب نيستت..

اگه در مورد اين مسائل هم يه تايپيك جداگانه بزني ممنون ميشم..

با تشكر

 

ماشاالله چقدرم اعتماد به نفس خوبی داری با این گرافیک میخوای فار کرای 2 رو ران کنی! :w58:

این گرافیک که اصلا بصورت Integrated رو چیپست AMD 740G قرار داره ! ینی برای اورکلاک کردنش ( که ابدا توصیه نمیکنم! ) و خصوصا برای پایداریش باید چیپست رو اورکلاک کنی بطور همزمان! تازه اگه قابلیتش رو داشته باشه و پایدار بشه!

اگرم اورکلاک کنی ، با توجه به ضعیف بودنش بعید میدونم افزایش کارایی خاصی داشته باشی.

برای اورکلاک کردن کارت گرافیک بطور نرم افزاری ، نرم افزار های زیادی وجوود داره . کافیه یه سرچ توو گوگل بزنی و یه سری اطلاعات پایه از اصطلاحات گرافیکی یاد بگیری تا بتونی تا حدی این گرافیک رو اورکلاک کنی. البته بازم میگم به نظرم این کار رو نکن چوون طاقتش رو نداره!

 

در مورد Shader ها باید بگم اینا یه سری قابلیت های نرم افزاری هستن که به همراه API های مختلف مربوط به گرافیک ، کد هاشون نوشته میشه و وظیفه ی اونا ، محاسبات گرافیکی بازی ها و فایل های گرافیکی هست تا بصورت چیزی که میبینی ، روو صفحه ی نمایش ظاهر بشن.

API ها یا Application Program Interface ها ، همونطوری که از اسمشون مشخصه ، درگاه هایی هستن که برنامه های اجرایی رو با سخت افزار ها و منابع سیستم ارتباط میدن.

بعنوان مثال شما فرض کن یه بازی رو اجرا میکنی. خب این بازی که اجراش کردی مستقیما نمیاد برای اجرای دستوراتش ، با کارت گرافیک ارتباط برقرار کنه . برای این ارتباط ، این API ها بعنوان واسطه ی بین درایور کارت گرافیک و اون بازی عمل میکنن و این ارتباط رو انجام میدن.

به شکل زیر نگاه کن :

d3zo2xfjrg38366vp1oc.png

API به عنوان یه واسطه بین درایور و بازی ( مثلا ) عمل میکنه و اطلاعات مربوط به بازی رو به درایور منتقل میکنه تا برای پردازش ، تحت اختیار گرافیک قرارش بده.

نمونه ی بارز یه API برای کارت گرافیک ، نرم افزار DirectX هست که مطمئنا اسمش رو زیاد شنیدی.

خب حالا این دایرکت ایکس چی هست و چیکار میکنه!؟

دایرکت ایکس همونطوری که گفتم یه API هست که در درون خودش ، کتابخونه های متعددی برای پردازش تصاویر گرافیکی داره.

به کمک این کتاب خونه ها و برنامه ها و دستورالعمل هایی که در اونا وجوود داره ، میتونه تشخیص بده که کد هایی که تحت اختیارش قرار گرفته ، شامل چه اشکال هندسی و چه رنگ ها و سایه هایی میشن. خب API های معروفی علاوه بر DirectX وجوود داره . API هایی مثل OpenGL و . . . تمام این API ها از یک بلاک و شیوه ی ویژه ی خودشون برای پردازش تصاویر گرافیکی استفاده میکنن که به اونا GPP یا Graphic Pipeline processes گفته میشه. بعنوان مثال DirectX از Pipeline زیر استفاده میکنه :

 

e24gn0obvieix0e63qwc.png

اگه دقت کنی میبینی در شیوه ای که دایرکت ایکس از اون استفاده میکنه ، قسمت هایی به اسم Shader وجوود داره.

این Shader ها در واقع قسمت هایی هستن که پردازش و محاسبات هندسی اصلی تصویر در اونا انجام میشه.

در واقع ، تصاویری که روی صفحه ی نمایش زمان اجرای بازی میبینی ، مثل دود ، باروون ، وسیله ها و . . . همه از قسمت های Shader برای پردازش تصویر عبور میکنن تا چیزایی که میبینی رو به نمایش در بیارن.

این Shader ها قابل برنامه ریزی هستن و زبون مخصوص برنامه نویسی خودشون رو دارن که در هر دوره ، آپدیت میشه.

شیوه ی کار به این صورته که پردازنده ، کد های ترجمه شده ی بازی به زبون Shader رو برای واحد گرافیک میفرسته و توسط همین سیکل بالا ، عملیات پردازش انجام میشه و تصویر رو در مونیتور میبینی.

 

 

 

اختیار دارید

لطف و بزرگواری بوده که امیدوارم بتونم جبران کنم

دوست من نرم افزاری رو که گفتید دانلود کردم و یک تست کامل و طولانی باهاش انجام دادم.:ws3: تمام گزینه ها رو طبیعی (ok) زده بود و سبز رنگ

حالا میتونم از سالم و بدون مشکل بودن هارد خیالم راحت باشه

(یک بار دیگه از اینکه با حوصله وقتت رو بهم دادی و کمک کردی ممنونم)

 

انشاالله که مشکلی نیست :)

لینک به دیدگاه
  • 3 هفته بعد...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...