Pull to refresh

Comments 54

Оригинально, забавно, спасибо большое за статью!
Читал подобное у Руссиновича. Он правда как обычно пиарил немного свои сисинтерналы, но в принципе забавно )
Скажу по секрету: «он давно уже в микрософт работает», хехе
Скажу тоже по секрету) Это не мешает ему рассказывать какие сисинтерналы крутые =)
Помоему, о таком пользователи Windows мечтали где-то года с 95.
В 9x BSOD перекрашивался гораздо проще и очень давно.
раньше это делалось в system.ini, кажется вплоть до XP
Теперь можно писать «Место для вашей рекламы» в BSOD? :)
Ждем новую волну СМС-мошенников с новым способом вымогательства. Спасибо.
Если итак есть доступ к машине, зачем вызывать BSOD? Подумайте, прежде чем писать.
Затем, чтобы показать неотключаемую без ресета заставку с номером СМС.
Отправьте СМС — если хотите вернуть оригинальный, голубой BSOD?
UFO just landed and posted this here
Как раз о том же подумал)
Класс! Вот бы ещё научиться менять стандартные уведомления от Эппла — при каждом revoke девелоперского сертификата заказчик какает кирпичами
В статье определенно нехватает ссылки на утилиту… Нагуглить утилиту не получилось, поэтому пришлось покопаться в немного старым архивом (там полно всяких вкусностей с открытыми исходниками) habrahabr.ru/post/112331/.
Она на месте:
NotMyFault
Правда, sysinternals недоступен сейчас почему-то.
дык его ж микрософт купил с потрохами (первая строчка в выдаче гугла по подстроке autoruns)
Из-за того, что MS закрыла исходники утилит, как-раз и появился тот торрент. А с Sysinternals уже давно ничего не скачать (в том посте — «Сначала были убраны ссылки, [...] Затем убрали и сами файлы»).
WinXP SP3 — уже не помню когда я видел экран смерти последний раз и забыл как он выглядит…
Сижу на калькуляторе, bsod'а вообще ни разу не видел…
Я к тому что если даже замарочиться то вряд ли получится увидеть в действии в естественной ситуации :(
Может вам повезло с поставщиками драйверов?
У меня win7 bsodит достаточно часто, так что вам просто повезло с железом и дровами.
Зачем покупать китайское noname оборудование? Не там экономите, товарищи…
У меня одни из топовых комплектующих своего времени, так что не экономлю. А БСОДы, скорее всего, из-за интелового SSD. Правда я не могу этого доказать, равно как и не знаю, что с этим сделать.
Доказать легко: поставьте свой SSD в другой компьютер. Ну, вы впали в другую крайность: топовые комплектующие могут давать BSOD, потому что они излишне быстрые, неотлаженные… Вот когда я предав ОЗУ Samsung купил два Corsair и они падали пару раз в неделю. Да, они были более быстрые, чем Samsung, но падали с синим экраном! В магазине их протестировали memtest86 при мне: отлично работали :) Продал их кому-то, человек ко мне не обращался, наверное у него стабильно работают. А я вернулся к PC10600 Samsung :) Купил вот года два назад GTX 470, орёт как истребитель, когда играешь в игры. А толку? GTX 550 Ti шумит намного меньше, а тот же Call of Duty (какой-то последний, забыл название, брат играет) идет с максимальными настройками и там, и там одинаково хорошо. Из этого следует, что лучше покупать середнячков.
я видел бсод (tm) несколько раз за месяц, покумекав — отключил второй винт, бсоды пропали…
Да я тоже грешу на винт, но убрать его я не могу :)
А как же ЕГГОГ !?
Наивный вопрос — а можно ли после BSoD вместо остановки оси все таки передать куда-нибудь управление в надежде, что ничего страшного с ядром не случилось, и пользователь, как минимум, сможет сохранить свои файлы и перезагрузиться самостоятельно?
Понятно, что без гарантий, понятно, что возможны последствия — но техническую возможность остро хочется иметь.
Да, можно похучить функцию KeBugCheck2. Так Крис Касперский ещё когда-то делал. Только вероятность успеха крайне мала. В случае ошибки с повреждением структур ядра количество высыпающихся критических ошибок будет расти в геометрической прогрессии. Да и вряд ли транзакция NTFS завершится успешно. В общем, лично я не пробовал.
Экцорциссы Касперски я помню, оно даже работало, но система была недостаточно юзабельна, чтобы что-нибудь сделать в юзермоде, даже при заведомо безобидном краше.
И после этого статьи и попытки встречал — у _Great_ например интересно было — но уже не пробовал.
Надеялся, что вы мне сообщите, что решение уже давно есть и только дураки о нем не знают :)
Неа, решения в прнципе не может быть.
Linux после некоторых kernel oops'ов таки еще на что-то способен, например, запустить демона и отослать дамп, а то и вовсе нормальную работу продолжить.
На мой взгляд Вы всего-лишь догадываетесь, что такое «программирование под Ring-0».

>>что ничего страшного с ядром не случилось, и пользователь, как минимум, сможет сохранить свои файлы и перезагрузиться самостоятельно?

Именно для этого и придумали BSOD и его не следует избегать! Если разработчик драйвера решил, что именно тут нужно «упасть», значит это действительно правильное решение и оно должно быть тут!!!

Все дело в том, что «драйверисты» это весьма серьезные ребята. Процент толковых ребят среди «драйверистов» значительно превосходит другие проценты скажем в C++, PHP, Python, etc. В область разработки драйверов просто так не попадают. Чтобы запустить простейший «hello world» нужно самому себе не кисло мозг выкрутить. А если еще учесть, что до промышленной разработки допускаются, как правило, еще и люди с опытом в 3-5 лет, то мне если честно совсем не приходит в голову мысль «а давайте-ка похучим и избежим BSoD».
Да ладно вам, зачем каждому досконально разбираться в устройстве ядра NT. Каждому своё…
Кстати, ситуация, когда непосредственно драйвер вызывает BugCheck крайне маловероятна. БОльшая часть — это именно ошибки проектирования драйвера, т.е. само ядро обнаруживает нарушение целостности своих структур вследствие некорректных действий программиста. Даже у крупных компаний — производителей жедеза зачастую случаются оказии с небезопасными модулями ядра.
Согласен, что каждому свое.
Только вот человек вроде как спрашивал о том как избежать BSoD

>>это именно ошибки проектирования драйвера
Согласен, тут не спорю. :) Но этот BugCheck как раз тот самый assert, который категорически нельзя выпиливать из релизного билда.
Вы уверены, что понимаете, что такое BugCheck()?
Если что — это совершенно не assert. Ни разу не видел, чтобы его драйвер самостоятельно вызывал — зачем?

Поясню мысль, возможно Вы не поняли то что я хотел донести. Если ошибаюсь поправьте или укажите на багу в моих рассуждениях.

assert — с англ. на русс. «утверждаю», своего рода конструкция, которая позволяет программисту документировать код. Написав assert он словно говорит «Утверждаю, что в этом месте не должно быть ....» и говорит он это своему коллеге по ремеслу, который будет поддерживать исходный код в будущем. Пишем мы assert-ы не просто так, а потому что наиболее дешевый способ узнать об ошибках в голове программиста, который писал код.
Особенность assert-ов в том, что их принято выпиливать из релизных билдов. И именно поэтому дебажная версия ядра так заметно медленней работает чем релизная, потому что там есть assert-ы.

BugCheck() — это аналог assert-а, но не выпиливаемый из релизного билда. Ставится он настолько редко, что встретив его в коде понимаешь, что в этом куске кода нужно быть предельно внимательным и аккуратным. Он также как и assert служит своего рода «средством документирования». Это как раз тот самый инструмент, когда программер очень сильно сомневается в коде, а ничего в данный момент существенного по каким-либо причинам сделать не может, но при этом на «авось» оставить не желает. Что делать? Ответ надо написать «Я чего-то тута намудрил, если тут чего-то возникнет посмотри на реальной боевой ситуации как можно выкрутиться» и чтобы такое написать как раз и следует использовать BugCheck()
Ассерты оставляют только в дебаг сборке. Непонятно, почему из-за сомнений кодера должна падать вся система.
Хорошо. Пойдем путем: отвергая — предлагаем. Ваш вариант? Как бы Вы поступили окажись в ситуации, что нужно что-то предпринять, а что не понятно?
Не совсем понятный вопрос. Но, к примеру, если не хватило памяти на операцию ввода-вывода, останавливаем устройство и записываем ошибку в лог.
В личке лучше ответ был! Я действительно недопонимал BugCheck, спасибо за лаконичный и аргументированный ответ
Не за что, правда я не совсем понял, какой ответ вам понравился, если хотите перепостите его сюда. Вообще я долго искал инфу о причинах названия этой функции именно Bug Check, ведь реально оно сбивает с толку. В итоге не нашел, спросить бы у Дэйва Катлера, эх…
Чесслово, всегда хотел перекрасить БСОД. Вы мой кумир!
Раскажи нам про свой БСОД. Отправь смс на 1050.
Классно. Засуну-ка в 256-цветную картинку Билла Гейтса.
BSOD это примерно и есть как фото Билла-Гейтса + TrollFace в 256 цветах в смысле эмоциональной реакции для большинства пользователей знающих это имя
А что за музыка играет фоном в ролике?
Long Arm — Letter From The Space (featuring Tinavie)
Sign up to leave a comment.