предыстория:
много лет использовали примерно такой сценарий запуска
при старте винды, вместо шела, запускаем апдейтер (свой)
апдейтер или качает обнову, или сразу запускает приложение.
все работало отлично (примерно лет 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
Здравствуйте, 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