Jul 10

STOP: 0x0000007F (BSoD/Син Екран)

[UPDATED: 2010.07.19]

Доста интересна случка имах преди време: трябваше да погледна един компютър (Windows XP), който от около месец проявява един много досаден симптом – рестартира се спонтанно. Причините? Вероятно са много 🙂 В такива моменти човек все трябва да започне от някъде. Аз тръгнах от тук: какво значи “спонтанно рестартиране”?

Но първо нека видим пътищата, през които преминава един “спонтанен” рестарт (обобщавам два случая):

  1. Windows работи -> хардуерна случка/проблем -> блокиране на ОС или мигновено рестартиране на машината;
  2. Windows работи -> възникване на неочакван проблем в ядрото (Kernel-а) -> запис на minidump файл в %systemroot%\minidump -> рестартиране на машината.

В Windows Minidump е файл, в който се записва информация за състоянието на регистрите на процесора, call stack-а, заредените модули и др. в момента на възникване на фаталната грешка. След това файлът може да се анализира с debugger и евентуално да се открие и отстрани причината.

Знаейки това, можем да категоризираме причините:

  1. Хардуерен проблем (лошо захранване/лош контакт между някой от компонентите и съответния му слот/бъгава памет/издути кондензатори/студена спойка и т.н.) – тук, за съжаление, няма да имаме никаква следа в логовете на Windows;
  2. Софтуерен проблем (проблемни драйвери) – в този случай ще се генерира minidump;
  3. Микс: хардуерен проблем предизвиква софтуерния – тук отново имаме сламка: генерира се minidump.

Continue reading

Jun 19

Java Runtime Environment (JRE): Unable to download http://javadl-esd.sun.com/update/1.6.0/1.6.0_20-b02.xml for installation

Една съвсем рутинна инсталация на Java Runtime Environment (JRE) завърши неочаквано…с грешка:

Unable to download http://javadl-esd.sun.com/update/1.6.0/1.6.0_20-b02.xml for installation

След натискане на OK “инсталационният Магьосник” остава на екрана и се изкушаваш да натиснеш Next…пак грешка:

Continue reading

Jun 03

Мистерия: if (something==NULL) или if (NULL==something)?

Нека разгледаме следния програмен отрязък:

[code lang=”C”]if (NULL == someApiPointer)
{
//do something here
};[/code]

Защо сравняваме NULL със стойността на someApiPointer, а не обратното – както сани учили в училище и както изглежда по-логично?
Когато за първи път срещнах подобна конструкция си помислих, че има нещо специално в нея – прави се от гледна точка на сигурността или пък е нов стил на писане?

Continue reading

Jun 03

Показване на устройства в Device Manager, които физически са премахнати от компютъра.

По подразбиране в Device Manager се показват само активните/забранените физически устройства в компютъра Ви. При нужда можете да видите и скритите такива: view->show hidden devices. Но никъде няма опция за показване на хардуера, който веднъж е бил инсталиран и след това е премахнат.

Приинсталиране на драйвери за дадено устройство Windows записва информацията за него в своята база данни. Така се избягва повторна инсталация ако сложите същото устройство в компютъра си след време.

Continue reading