Open GoogleCodeExporter opened 9 years ago
При этот ClientManager::g_isShutdown == true
Полный дамп и исходники http://yadi.sk/d/KvJ6cLHJ9BVy8
Алексей прошу посмотреть на код повторно и
до вечера рассказать
что тут хотел сделать и что фиксил
Если не помнишь или некогда я вечером
откатываю это потенциальное место
зависания
до состояние оригинального клиента.
Original comment by Pavel.Pimenov@gmail.com
on 13 Sep 2013 at 2:39
Пока поправил так
http://code.google.com/p/flylinkdc/source/detail?r=15385
TODO - найти еще цикл бесконечного сна и там
тоже внести таймаут.
Зависания очень сложно отловить т.к.
пользователи не умеют делать дампы
пусть лучше прога упадет на краш сервер.
Original comment by Pavel.Pimenov@gmail.com
on 13 Sep 2013 at 2:49
Всё просто: ожидаем m_speaking, что бы не было
рандомных крашей при закрытии. По сути этот
код дожидается завершения всех эвентов в
сокете.
Собственно это там и написано
// [!] IRainman fix: turning off the socket in the asynchronous mode is
prohibited because the listeners of its events will have been destroyed by the
time of processing the shutdown event.
Код сегодня ещё разок проверю. Откатывать
это нельзя поскольку у нас исправлена туча
различных проблем в тех областях.
Original comment by a.rain...@gmail.com
on 13 Sep 2013 at 2:50
r15385 равносильно тому, что бы совсем
откатить :) Падать начнёт теперь рандомно в
тех краях.
Original comment by a.rain...@gmail.com
on 13 Sep 2013 at 2:52
Посмотри не только код но и дамп.
Также бесконечные циклы допускать нельзя -
это 100%
Original comment by Pavel.Pimenov@gmail.com
on 13 Sep 2013 at 2:52
Цикл очень даже конечный, дамп тоже
посмотрю, в код нет смысла смотреть без
дампа этого.
Original comment by a.rain...@gmail.com
on 13 Sep 2013 at 2:54
Лучше пусть упадет чем намертво зависает.
Также может нужно диалог юзеру выдвать по
аналогии с виндой
"Вы хотите подождать еще или все равно
завершиться"
+ диагностику на телеметрию...
Original comment by Pavel.Pimenov@gmail.com
on 13 Sep 2013 at 3:01
и в дампе Dead Lock - цикл никогда не закончится.
он ночь грел мне полку :)
Original comment by Pavel.Pimenov@gmail.com
on 13 Sep 2013 at 3:05
Фликр не работает. Я так понимаю, это тот
самый момент, когда обновление скачано и
ждёт наката, но не было (корректно)
установлено после завершения флая. Затем,
при старте флая, выдаётся запрос, мол,
установить апдейт или удалить его и при
положительном ответе, идёт ожидание
завершения флая, который как бы начал
стартовать.
Вот у меня в этом месте висит. Ночь, конечно,
не тестил, но подождал полчасика (обычно
этого времени должно быть более чем
достаточно) - висит, с периодическими
вопросами от апдейтера подождать ещё.
В кастнмном таскменеджере в списке окон
флая всего два посредственных окошка (GDI+ и
Default IME), правда не помню, обращения к
файловой системе есть или нет. В трее
иконки тоже нет. Короче, выглядит повисшим,
приходится прибивать через таскменеджер.
Original comment by masteral...@googlemail.com
on 13 Sep 2013 at 8:32
Какой билд у вас повесился?
моеже при зависании снять дамп процесса и
послать его мне приватно на почту через
обменник?
Original comment by Pavel.Pimenov@gmail.com
on 13 Sep 2013 at 10:10
Ну до последних 2-3 обновлений было на
последних парочке билдов именно как
описано выше у меня.
Дамп чем снять можно в XP, чем-нибудь
легковесным?
Original comment by masteral...@googlemail.com
on 13 Sep 2013 at 11:06
Issue 1245 has been merged into this issue.
Original comment by a.rain...@gmail.com
on 13 Sep 2013 at 12:13
Вероятно ишья поправлена r15388, ну вернее
дедлок то точно поправлен в той области, а
вот исправится ли полностью описанная
проблема - надо потестировать.
Original comment by a.rain...@gmail.com
on 13 Sep 2013 at 12:41
r15388 скачать пока не предлагает.
Потестить смогу, разумеется, только при
очередном обновлении, некорректно
завершив флай и не дав ему обновиться после
выхода.
Original comment by masteral...@googlemail.com
on 13 Sep 2013 at 1:23
в XP попробуй http://technet.microsoft.com/en-US/sysinternals/bb896645
или так
Версия так же как и ранее периодически
подвисает при загадочных обстоятельствах.
:(
Пришли, пожалуйста, дамп программы, в
момент, когда она подвисла.
Дамп делается так:
1. дожидаемся, пока окно Флая не перестает
реагировать на внешние раздражители
2. в таскбаре щелкаем на кнопке окна правой
кнопкой мыши и выбираем "Закрыть". Надо
добиться, чтобы выскочило системное
окошко, что мол программа перестала
отвечать на запросы: "The program is not responding" и
нажать кнопку "End now" (то бишь закрыть
программу). Важно! кнопку "End now" нажимать
только один раз
3. Выскочит окошко, что программа прикрыта и
чтоб отослали инфу мелкомягким: "Please tell
Microsoft about this problem.". В этом окошке внизу есть
ссылка, чтб посмотреть, что за инфа
ассоциирована с ошибкой: "To see what data this error
report contains, click here" - щелкаем на нее.
4. Появляется окошко со всякой технической
белибердой, внизу две ссылки. Щелкаем на
предпоследнюю - "To view technical information about the error
report, click here"
5. Появится окошко со списком файлов. Одним
из них будет *.mdmp - нужно прислать его и еще
обязательно *.hdmp, который должен лежать
рядом (в списке он не указан). Важно! файлы
надо скопировать до того, как будет закрыто
окошко с инфой по ошибке, иначе они
сотрутся.
дамп слать на pavel.pimenov@gmail.com
Original comment by Pavel.Pimenov@gmail.com
on 14 Sep 2013 at 3:04
Не совсем понял, какого вида дамп я могу
сделать Procmon'ом - он же, как и в прошлом filemon,
просто пишет лог по какой-либо заметной
активности - э то ведь не дамп.
А вторым способом - я попробую сделать, вот
только нужно вспомнить, где я отключил эти
репорты :)
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 10:57
Блин. ошибся.
process explorer качай
тоже с сисинтернал
Original comment by Pavel.Pimenov@gmail.com
on 14 Sep 2013 at 11:00
|1. дожидаемся, пока окно Флая не перестает
реагировать на внешние раздражители
И вот тут у нас тоже загвоздка. Похоже,
всё-таки мы немного о разных зависаниях
говорим и я выше описал свой варивант.
Ещё раз, вкратце:
1. Обновление скачано, ждёт когда я прекращу
пользоваться флаем;
2. Когда завершаю флай корректно, должно
автоматически запуститься обновление;
3. Если я сделал некорректное завершение
(прибил процесс), то обновление не
накатывается;
4. При следующем старте флая, где-то после
сплеш-скрина, предлагается либо установить
апдейт, либо он удалится;
5. Выбирая "Да" (обновить, тобишь), возникает
окошко с прогрессбаром "ожидание
завершения флая" - вот тут-то и всё и уходит
в инфинайт луп :)
Не было ещё ни разу ситуации, когда бы это
окошко само исчезло, ибо флай не
выгружается полностью из памяти, но окон
своих не имеет, а окошко с прогрессбаром -
это, похоже, окошко апдейтера. Вот о какой
ситуации я говорю.
Сейчас скачалась обновка - пойду прибью
процесс и заскриню то, о чём я говорю :)
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 11:03
Качни http://technet.microsoft.com/en-US/sysinternals/bb896653
там по правой кнопке на процессе - есть
сделать дамп под XP?
Original comment by Pavel.Pimenov@gmail.com
on 14 Sep 2013 at 11:12
Есть там полный и минидамп.
Какой снимать?
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 12:18
Есть штук 5 скринов всего процесса, от
вопроса про обновление до момента, когда
апдейтер не может дождаться флая.
Скрины и минидамп прямо сейчас скину на
почту, а фулдамп весит 212Мб - его надо?
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 12:32
Фул дамп как раз и надо, без него дедлок не
починить.
Original comment by a.rain...@gmail.com
on 14 Sep 2013 at 12:40
Отправл 5 скринов и миник во вложениях и жду
пока фул дамп зальётся на ядиск - кину
следом позже.
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 12:54
Прокомментирую процесс и скрины прямо
здесь.
После того, как обновление скачалось и я
прибил флай, запустив его снова, он ведёт
стандартный процесс загрузки, после того,
как прочитает расшаренные файлы, выдаётся
запрос на установку или удаление
обновления, окна от самого флая не
создаются (основного приложения), сплэш
флая висит, хотя, тем временем, флай активно
читает всякие файлы, работает с БД (на
скринах кое-где видно, на фоне висит procmon с
фильтром по флаю и там куча событий).
Можно заметить, что сам флай не имеет main
window, да и вообще никаких окон он не имеет.
Апдейтер, не дождавшись выгрузки флая,
предлагает подождать ещё или забить.
ИМХО, можно просто задавать запрос об
обновлении и до ответа на него вообще не
грузить флай, иначе он живёт своей жизнью в
фоне и без окон.
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 1:00
*задавать=выдавать :)
Минидамп и фулдамп делался не
одновременно, разумеется. Более того, дампы
снимаются, а тем временем флай работает.
Потом я снова его прибил в процессах и
обновление накатилось, а затем флай
запустился.
PS. Обновление накатывалось 389-е, в котором,
по идее, должен был быть этот фикс :)
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 1:03
Фул дамп не удалось залить на ядиск, жду,
когда зальётся в дропбокс и кину ссылку.
Надеюсь, сегодня успею. Мне кажется, до
четверга я буду практически недоступен.
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 2:26
Всё, ссылка на фул в ящике :)
Original comment by masteral...@googlemail.com
on 14 Sep 2013 at 3:02
Ещё в это время висит единственное
соединение от флая к fly-server.ru (не знаю, это
хаб или что-то другое)
Original comment by masteral...@googlemail.com
on 16 Sep 2013 at 4:30
Проверьте пожалуйста сборку после r15458 -
провёл ревизию механизма синхронного
выключения сокетов, и поправил найденные
ошибки.
Original comment by a.rain...@gmail.com
on 21 Sep 2013 at 2:22
Original issue reported on code.google.com by
Pavel.Pimenov@gmail.com
on 13 Sep 2013 at 2:31