Здравствуйте, pumpurumer, Вы писали:
P>предыстория: P>много лет использовали примерно такой сценарий запуска P>при старте винды, вместо шела, запускаем апдейтер (свой) P>апдейтер или качает обнову, или сразу запускает приложение. P>все работало отлично (примерно лет 12) P>а в этом году, появилась плавающая проблема, на некоторых точка, по схеме P>апдейтер запустился P>апдейтер запускат процесс P>процесс ничего не делает.
P>потом поддержка подключается, и все запускается двойным кликом мыши.
P>в логах запуска приложения пусто. но первые логи похоже пишутся чуть позже чем нужно
P>место в приложении, которе запускаем, (в файле с "защитными логами пусто") P>
P>using (Mutex myLock = new Mutex(false, "MytexStartGui"))
P>{
P> WriteLogFile("Ожидаем блокировки MytexStartGui");
P> if (myLock.WaitOne(1000, false))
P> {
P>
P>как запускается процесс: P>targetProcess = Process.Start(prog); P>в prog — полный путь до целевого exe P>пид у него появляется, HasExited false (добавили логирование состояние). P>т.е. грубо говоря процесс висит и ничего не делает. такое происходит примерно на 2..3% точек.
P>куда копать — не понимаю P>в application ничего нету, в системе тоже. (eventlog)
проблема связанна с DialogFilterProc
вроде как исправляется в KB2728894
предыстория:
много лет использовали примерно такой сценарий запуска
при старте винды, вместо шела, запускаем апдейтер (свой)
апдейтер или качает обнову, или сразу запускает приложение.
все работало отлично (примерно лет 12)
а в этом году, появилась плавающая проблема, на некоторых точка, по схеме
апдейтер запустился
апдейтер запускат процесс
процесс ничего не делает.
потом поддержка подключается, и все запускается двойным кликом мыши.
в логах запуска приложения пусто. но первые логи похоже пишутся чуть позже чем нужно
место в приложении, которе запускаем, (в файле с "защитными логами пусто")
using (Mutex myLock = new Mutex(false, "MytexStartGui"))
{
WriteLogFile("Ожидаем блокировки MytexStartGui");
if (myLock.WaitOne(1000, false))
{
как запускается процесс:
targetProcess = Process.Start(prog);
в prog — полный путь до целевого exe
пид у него появляется, HasExited false (добавили логирование состояние).
т.е. грубо говоря процесс висит и ничего не делает. такое происходит примерно на 2..3% точек.
куда копать — не понимаю
в application ничего нету, в системе тоже. (eventlog)
Здравствуйте, ksg71, Вы писали:
K>Здравствуйте, pumpurumer, Вы писали:
K>стектрейс в зависшем процессе или его дампе посмотреть K>с WinDbg к примеру
а как сдампить процесс, без его падения из кода? да, я могу погуглить, но возможно подскажите направление?
т.е. например в коде апдейтера написать — делай дамп процесса, если по твоему мнению оно не работает (в принципе — можно понять, что дамп делать нужно).
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, pumpurumer, Вы писали: P>>куда копать — не понимаю S>А нельзя запихать логгирование хоть чего-то до того, как будет захваче мутекс?
да, уже добавил. ждем проявления.
но именно перед захватом — логи есть (wait). нет логов до конструктора. есть логи по exception из конструктора (нет его, эксепшена в смысле).
Здравствуйте, pumpurumer, Вы писали:
P>Здравствуйте, ksg71, Вы писали:
K>>Здравствуйте, pumpurumer, Вы писали:
K>>стектрейс в зависшем процессе или его дампе посмотреть K>>с WinDbg к примеру
P>а как сдампить процесс, без его падения из кода? да, я могу погуглить, но возможно подскажите направление? P>т.е. например в коде апдейтера написать — делай дамп процесса, если по твоему мнению оно не работает (в принципе — можно понять, что дамп делать нужно).
зачем из кода? в TaskManager находишь процесс и в контекстном меню "Create Dump File"
или вот это здесь
вроде умеет автоматически по заданным критериям процессы дампить
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx