Название: main зависает перед return и не хочет завершаться... Отправлено: Aptimist от Март 05, 2005, 10:23 Проблема изложена в заголовке темы.
Добавлю только, что приложение написано на C++, многопоточное (я бы даже сказал: очень многопоточное), и перед закрытием аккуратно командует потокам "свертайсь", ждёт пока они все не завершаться и только потом пробует сделать "return EXIT_SUCCESS;" из main, но... на этом самом месте она и виснет... Может что-то происходит со стеком во время выполнения приложения и потому return становиться не возможным?.. Но, к сожалению, я ещё не настолько продвинутый программер... и не знаю, что может повлиять на стек... тем более функции main... Может, чего подскажите... Название: main зависает перед return и не хочет завершаться... Отправлено: Admin от Март 05, 2005, 10:56 есть средства отладки позволяющее смотреть выходы за пределы масивов за стреком и так далее
под виндой - это Bound Checker под линуксом - valgrind Название: main зависает перед return и не хочет завершаться... Отправлено: Aptimist от Март 05, 2005, 11:02 Цитата: "Admin" есть средства отладки позволяющее смотреть выходы за пределы масивов за стреком и так далее под виндой - это Bound Checker под линуксом - valgrind О том, что такие средства существуют я знаю, но, как мне известно, valgrind не справляется с многопоточными приложениями... :-( Если я ошибаюсь, то подскажите, как это можно провернуть... Название: main зависает перед return и не хочет завершаться... Отправлено: Admin от Март 05, 2005, 11:37 я не пишу таких приложения
но у валгринда есть опция типа --trace-child так он пытается за потомками следить Название: main зависает перед return и не хочет завершаться... Отправлено: Aptimist от Март 05, 2005, 11:55 Цитата: "Admin" я не пишу таких приложения но у валгринда есть опция типа --trace-child так он пытается за потомками следить Так child, как я понимаю, это дочерний процесс, а не как не поток... Название: main зависает перед return и не хочет завершаться... Отправлено: Admin от Март 05, 2005, 13:51 я не большой спец
не то так не то Название: main зависает перед return и не хочет завершаться... Отправлено: PROGrand от Июль 09, 2005, 21:37 Возможно в функции main объявлена переменная класса, который тормозит процесс выхода из функции. Т.е. перед выходом из функции завершается существование пременной и деструктор тянет процесс. типа:
Было: int main() { CClassWithWaitIndestructor var; // этот класс и проверить надо будет насчёт зависона в деструкторе. WaitForMultipleObjects(hThreadsArray, ... , WAIT_ALL, ...); return 1; } |