Mystery silent crashes приложения - как найти причину?

Тема в разделе "WASM.WIN32", создана пользователем dockay1, 17 апр 2009.

  1. dockay1

    dockay1 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    8
    Есть обычное Win32 .NET приложение, которое на нескольких машинах в определенный момент падает. При этом падает без всяких сообщений, записей в логах и т.п. Просто в один прекрасный момент оно перестает работать.
    Используя SOS мы получили дампы нескольких таких "silent crashes". Дамп всегда содержит в момент падения First chance Exception: Shutdown exception, один поток и абсолютно произвольный stack trace (при этом поток тоже случайный, может быть как managed так и unmanaged).
    Вопрос: что мы можем сделать, чтобы определить причину падений и отчего подобные проблемы возникнуть?
     
  2. bendme

    bendme New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    179
    какая душещипательная история
     
  3. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Наверху самом видели тему ?
    http://wasm.ru/forum/viewtopic.php?id=32181

    Хотя хз имеет ли это отношение к .NET никогда им не занимался...
     
  4. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Да это может быть что угодно, начиная от защиты, заканчивая вирусом и продолжая кривостю говно.NET'а и рук говно.NET-скриптеров. Выкладывай приложение, может кто поможет.
     
  5. dockay1

    dockay1 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    8
    Думаю, выкладывание приложения вряд ли поможет - это достаточно объемный продукт и какая именно часть вызывает падения - неизвестно.
    При этом приложение тестировалось и работало на более чем сотне разных компьютеров, проблемы возникают только на 3 машинах и в произвольное время (могут через 2 часа, а могут через 2 дня).

    Главный вопрос - какой инструментарий и подходы мы можем использовать, чтобы идентифицировать причину.
     
  6. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Отладчик естественно и bpx на ZwTerminateProcess
     
  7. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Начать можно с этого - http://wasm.ru/forum/viewtopic.php?id=32181
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Можно написать простейшую тулзу. Смысл в том, что при многих событиях и при всех исключениях посылается сообщение на отладочный порт, если он имеется. Для этого служит дебугапи)http://msdn.microsoft.com/en-us/library/ms679303(VS.85).aspx). Тоесть нужно подключить отладчик(нашу тулзу) который будет фильтровать исключения и вести лог. В случае если процесс завершается, или возникло какоето исключение, которого не должно быть, тогда остановить процесс, отключить наш отладчик и подключить норальный, туже олю. Это подходит для юзермодных приложений, где не используется защита от отладки. Для своего приложения просто все исключения обработать. Не понятно в чём проблема. Финальный обработчик исключений зарегистрировать к примеру и из него вести лог или подключать отладчик.
     
  9. dockay1

    dockay1 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    8
    Мы так и делаем - подключаем SOS отладчик. Проблема в том, что нет исключений, кроме ShutDown_Exception - в момент которого понять что-то невозможно, тк. все уже позавершалось.
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    dockay1
    Я не знаю что такое "SOS" и "ShutDown_Exception". Наверно это какойто жалкий функционал предоставляемый компилятором. Поток обработает исключение в любом случае, за исключением невозможности обращения к стеку, так как не валидный Esp, либо сегментный регистр Ss содержит значение отличное от стандартного. В этом случае процесс будет завершон ядром, но всёравно будет послано сообщение дебаггеру. Вы не так делаете.
     
  11. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Мjжно посмотреть в сторону debugdiag, мощная тулень, там кроме прочего есть crash/hang analyze + вроде бы даже умеет по дампам .net стеки раскручивать..
     
  12. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    имхо, если падает без ошибок, тихо - то никаких эксепшенов там и не будет. Просто внутри есть какой-то механизм завершения (не хватило памяти - выходим. Не удалось создать файл - выходим. И тому подобное. По какой-то причине, авторы ЗАБЫЛИ выдать большую табличку "В вашем жалком компуктере не хватает памяти для ...", а просто втихую терминируют все. Вот примерно в эту сторону я бы и копал. Вариант с памятью кажется наиболее вероятным ;) но можно и еще придумать.