И еще про SEH...

Тема в разделе "WASM.WIN32", создана пользователем Twister, 15 май 2006.

  1. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Всем доброго времени суток.



    Просто стало интересно. У каждого потока в системе есть свой дефолтный обработчик исключений (если, конечно, мы не сменили его на свой), который находится в конце списка EXCEPTION_REGISTRATION. Дефолтный обработчик, в отличии от наших, всегда обрабатывает исключения. Поэтому самое страшное, что мы можем узреть на мониторе - это БСОД ;). Теперь вопрос - а что произойдет, если система не найдет в списке EXCEPTION_REGISTRATION обработчик, который обработает исключение?..
     
  2. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    очевидно, убьет процесс, если при этом процесс не освободил важные ресурсы, то и до голубого экрана недалеко.
     
  3. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Бред. Windows NT при завершении процесса всегда освобождает за ним все ресурсы, независимо от того, сделал ли он это сам или нет.
     
  4. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    Теоретически - согласен, на практике мне удавалось, балуясь с SEH, из ринг3 систему в голубой экран ронять, за давностью не вспомню деталей, но такое было, возможно также, что прямой связи и не было...
     
  5. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Значит ничего страшного не произойдет?
     
  6. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    masquer

    Вспомнишь как это делал, кинь мне код на мыло (не выкладывай на форуме). Возможно из этого можно извлечь пользу.
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    Последний из обработчиков (который ставит система) прибивает процесс. Если не один обработчик вобще не будет найден, то снова возникнет исключениие, и опять будет поиск обработчика... Процесс войдет в бесконечный цикл и будет 100% грузить процессор.
     
  8. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    мда. А за каким хреном ты ЭТО на форуме написал, спрашивается ?
     
  9. tyomitch

    tyomitch New Member

    Публикаций:
    0
    Регистрация:
    15 май 2006
    Сообщения:
    15


    А откуда, собственно, уверенность, что KMODE_EXCEPTION_NOT_HANDLED генерируется нижним обработчиком, а не самой бегалкой по списку?

    Напомню, что в статье Пиетрека было только про юзермодные исключения.
     
  10. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Twister



    AFAIK, беготню по списку инициирует системный обработчик исключений, который сидит глубоко в ядре. Если список юзермодных обработчик окажется пустым (кстати, у меня сомнения, что такое вообще возможно, но допустим), то системный обработчик сам обработает исключение.
     
  11. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    А что, это запрещено правилами? Покажи пальцем.
     
  12. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Twister

    Если под дефолтным обработчиком понимается unhandled exception filter, то он по-моему не хранится в списке обычных обработчиков. Кроме того он общий для всех потоков процесса.
     
  13. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    Я тоже ронял систему из ring3 в синий экран, но это было когда я запускал прогу (кстати там SEH криво ставился) под отладчиком Delphi... А так прога вылетала просто на ура ))
     
  14. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Ну собственно я услышал (прочитал) то, что хотел.

    Всем спасибо, ms-rem отдельное.
     
  15. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Хотя нет. Это не все.

    Не знаю почему tyomitch сам не написал, но вот его опровержение словам ms-rema (usermode):
    Код (Text):
    1. xor eax,eax
    2. mov dword ptr fs:[eax], -1
    3. mov byte ptr [eax], 0


    Помирает тихо и беззвучно. Никакой 100% загрузки нет.
     
  16. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Twister



    Система проверяет чтобы адрес хендлера находился на стеке. Иначе кадр просто игнорируется. -1 не является валидным адресом, но прежде всего он не попадает в сегмент ss. Поэтому система делает вид будто обработчика нет вообще. Выполняется системный обработчик и прибивает процесс.
     
  17. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Так ms-rem прав или нет?
     
  18. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Twister

    Не вижу противоречий между словами Ms-Rem и примером с неправильным адресом обработчика. Возможно, Вы забываете, что обработчики есть в обоих кольцах. В Ring3 находится цепочка поточных обработчиков (адрес в [fs:0]) и финальный обработчик UnhandledExceptionFilter. Но есть ещё системные обработчики в ядре. Если присутствует отладчик, то он тоже участвует в процессе обработки исключений. Вы внимательно читали Win32™ SEH изнутри?
     
  19. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Да вроде внимательно.

    Просто тема для меня еще новая, раньше я ее не трогал...