· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› Многократный запуск программ

Посл.отвђт Сообщенiе


Дата: Апр 11, 2004 23:29:10

Имеется следующая проблема :
При многократном (несколько сотен раз) запуске и закрытии одной и тойже проги начинает глючить виндовс, а затем прога вообще не запускается. Проверено на нескольих различных прогах, в том числе и от самой MS. Кто-нибудь знает, в чем тут дело и можно ли как-то побороть данный глюк?


Дата: Апр 11, 2004 23:39:31

GDI leakage?


Дата: Апр 11, 2004 23:45:36

я не силен в английском...
Прога консольная, под win32. Под глюками подразумеваю общие тормоза, сеть перестает работать и даже пинговаться, прога вылетает сразу после запуска, другие проги тоже не запускаются. Если перестать ее запускать и подождать несколько десятков секунд, то все восстанавливается.


Дата: Апр 12, 2004 13:22:32

This symptom is often also referred to as "windows must die"...


Дата: Апр 12, 2004 13:56:24

"windows must die"...
Это невозможно пока, поскольку моя прога должна быть именно под Win32, так что must die невозможен.
Мне бы побороть его как-нибудь, глюк этот...


Дата: Апр 12, 2004 15:13:31

Прогнать прогу под Bounds Checker и посмотреть, утечку каких ресурсов он покажет. Правда, старые версии BC утечки некоторых ресурсов (в частности, мультимединыйх таймеров) не ловили.


Дата: Апр 12, 2004 15:19:55

Диспетчер задач\Вид\Выбрать столбцы ?


Дата: Апр 12, 2004 16:32:56

посмотреть, утечку каких ресурсов он покажет
Обязательно попробую, но смутно понимаю, что это даст. Исходников проги то нет, ну, допустим, будет там утечка чего-либо, а как я смогу из своей проги, которая многократно вызывает другую, глючную, устранить утечку? Хотя... Обязательно попробую!


Дата: Апр 12, 2004 16:45:35

Каким образом вызывается глючная прога?
Может приведи кусок кода с CreateProcess()?


Дата: Апр 12, 2004 19:54:55

там не CreateProcess(), там SHELLEXECUTEINFO ... Попробую с CreateProcess()...


Дата: Апр 20, 2004 11:34:03

может, кто-нить скинет примерчик. Допустим, задача такая - есть папка с кучей файлов *.bmp, надо каждый из них зажать в свой архив rar:
00001.bmp ->00001.rar
00002.bmp ->00002.rar
....
00099.bmp ->00099.rar
...
для зажатия использовать консольную версию rar.exe.
Я ищу с findfirst, findnext, для каждого найденнного файла формирую командную строку для rar и запускаю CreateProcess(),жду, пока завершится и ищу дальше. Примерно через 900-1000 запусков все виснет, тормозит, комп из сетки вываливается, rar не запускается... Но цикл крутится и прога моя нормально завершается, если ее закрыть. И через секунд 5-10 все нормально - и сетка появляется, и не тормозит...
Помогите пожалуйста...


Дата: Апр 20, 2004 11:37:38

Забыл сказать - CreateProcess() запускаю точно так, как сказано в MSDN


Дата: Апр 20, 2004 11:52:58

А винда какая? Если 2К+, то почему бы не пользоваться простым батником? Вот такой батник я писал для себя, когда понадобилось:
rem Добавление каждой подпапки текущей папки в отдельный zip-архив
rem Внимание! Имена подпапок "первого уровня" не должны содержать пробелов.
for /D %%i in (*) do "d:\program files\winrar\winrar.exe" a -afzip -r -ibck -ep1 %%i.zip %%i\*
По твоему описанию похоже, что утечки именно в твоей проге. Если с использованием батника проблема останется, тогда будем думать дальше.

P.S. В твоем случае наверное стоит добавить start /w перед именем экзешника...
P.P.S. Кстати, а твоя прога - тоже консольная?


Дата: Апр 20, 2004 13:00:51

попробую сегодня... Может и в проге, т.к. при смене архиватора на arj, pkzip проблема остается...


Дата: Апр 21, 2004 12:06:40

Все, проблема решена, всем спасибо за отклики! Оказалось, что хэндл процесса надо ЗАКРЫВАТЬ после завершения процесса, а я его просто обнулял. Лоханулся... Две недели на поиски глюка угробил...
Теперь все работает как надо.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.097