Добрый день.
В WinForms приложении возникает взаимоблокировка потоков. Сценарий более-менее стабильный при выполнении длительных операций. То есть оставляешь приложение работать на ночь — утром приходишь, а оно висит
Объём исходного кода достаточно велик и большей частью написан не мной.
Есть ли какие-то инструменты, которые позволяют обнаружить причины deadlock у зависшего приложения? В идеале показать место в исходном коде

или вообще хотя б как-то помочь в такой ситуации.
В гугле тулзов не нашёл. Может искал не так.
Спасибо
Здравствуйте, <Аноним>, Вы писали:
А>Добрый день.
А>В WinForms приложении возникает взаимоблокировка потоков. Сценарий более-менее стабильный при выполнении длительных операций. То есть оставляешь приложение работать на ночь — утром приходишь, а оно висит
WinDbg + SOS + SOSEx + !dlk
Если !dlk не помогает, то !SyncBlk и ручной анализ.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Здравствуйте, <Аноним>, Вы писали:
А>Добрый день.
А>В WinForms приложении возникает взаимоблокировка потоков. Сценарий более-менее стабильный при выполнении длительных операций. То есть оставляешь приложение работать на ночь — утром приходишь, а оно висит
Может это поможет
http://www.debuginspector.com
Здравствуйте, Аноним, Вы писали:
А>Добрый день.
А>В WinForms приложении возникает взаимоблокировка потоков. Сценарий более-менее стабильный при выполнении длительных операций. То есть оставляешь приложение работать на ночь — утром приходишь, а оно висит
А>Объём исходного кода достаточно велик и большей частью написан не мной.
А>Есть ли какие-то инструменты, которые позволяют обнаружить причины deadlock у зависшего приложения? В идеале показать место в исходном коде
или вообще хотя б как-то помочь в такой ситуации.
А>В гугле тулзов не нашёл. Может искал не так.
Оставляешь на ночь, утром приходишь, студией цепляешься кзависшему процессу, смотришь все его потоки и находишь те которые висят и ждут непонятно чего.
Здравствуйте, orangy, Вы писали:
O>Здравствуйте, <Аноним>, Вы писали:
А>>Добрый день.
А>>В WinForms приложении возникает взаимоблокировка потоков. Сценарий более-менее стабильный при выполнении длительных операций. То есть оставляешь приложение работать на ночь — утром приходишь, а оно висит
O>WinDbg + SOS + SOSEx + !dlk
O>Если !dlk не помогает, то !SyncBlk и ручной анализ.
А ApplicationVerifier в случае .NET-а и использования WinDbg не помогает? Для unmanaged насколько я помню он очень помогал.
Здравствуйте, Tom, Вы писали:
А>>>В WinForms приложении возникает взаимоблокировка потоков. Сценарий более-менее стабильный при выполнении длительных операций. То есть оставляешь приложение работать на ночь — утром приходишь, а оно висит
O>>WinDbg + SOS + SOSEx + !dlk
O>>Если !dlk не помогает, то !SyncBlk и ручной анализ.
Tom>А ApplicationVerifier в случае .NET-а и использования WinDbg не помогает? Для unmanaged насколько я помню он очень помогал.
AV нужно сначала включить, а потом ловить дедлок. А в сложномногопоточных приложениях некоторые дедлоки встречаются крайне редко, и воспроизвести их обычно невозможно. Поэтому в тот момент когда приложение уже зависло, всё что есть — это дебаггер, который можно подключить.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Может это поможет, вроде тулза для поиска дедлоков
в клиентских приложениея заточена
http://www.acorns.com.au/blog/?p=129... << RSDN@Home 1.2.0 alpha 4 rev. 1108>>