Форум: "Базы";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизЗависание в Win2K при закрытии сокета Найти похожие ветки
← →
Torin (2006-09-01 16:55) [0]Уважаемые мастера!
Проект, в котором я участвую (уже) пишется (и поддерживается) около 5 лет (разными людьми, большая текучка). Вкрадце: Informix, MIDAS, куча DLL и т.д.
Работа с сервером приложений: TClientDataSet через TSocketConnection.
При выходе из программы происходит зависание в Win2K: программа висит себе в памяти и не закрывается. От количества открытых наборов данных и объема запрошенных (переданных) данных это никак не зависит.
В WinXP (разных версий) такого не наблюдается.
Подскажите, с чем это может быть связано и как с этим бороться.
← →
ANB © (2006-09-01 17:00) [1]1. Есть ли потоки.
2. Если нету - искать отладчиком, где именно виснет.
3. Это не в БД спрашивать то надо было.
← →
Сергей М. © (2006-09-04 09:10) [2]
> программа висит себе в памяти и не закрывается
Какая программа-то ? В трехзвенке их аж целых три ..
← →
Torin (2006-09-04 11:14) [3]Клиентское робочее место. Потоков не используем. Виснет на закрытии сокета. Иногда программа все таки закрывается со временем. Сокет пробовали закрывать на FormCloseQuery так:
SC: TSocketConnection
DM.SC.Close
и так
FreeAndNil(DM.SC)
Креатим сокет РУЦЯМИ при запуске программы. DM общий для всех DLL. Но прога виснет на выходе даже тогда, когда DLL не загружаются. А запускается основная форма, которая проводит аутентификацию юзера.
← →
ANB © (2006-09-04 11:18) [4]
> Torin © (04.09.06 11:14) [3]
Проверь, нет ли подвисания на
> DM.SC.Close
и на
> FreeAndNil(DM.SC)
Есть подозрение, что сокет пытается сообщить серверу, что он разрывает соединение и ждет от сервера ответа. А сервер не хочет отвечать.
ЗЫ. А зачем трехслойку повесили на сокеты, если можно DCOM использовать. Там все красиво и хорошо работает.
← →
Сергей М. © (2006-09-04 11:59) [5]
> Torin © (04.09.06 11:14) [3]
>
> Клиентское робочее место. Потоков не используем
Еще как используете)
TTransportThread создается для каждого активного TSocketConnection
← →
Torin (2006-09-04 12:15) [6]ПОДВИСАНИЕ ЕСТЬ на .close и на FreeAndNil
Если запущено из-под делфи (D7, Win2K) то все нормально.
Получается, что сокет из-под дельфи на закрытии сокета ничего от сервака не хочет? И на ХР тоже?
При запуске проги сокет креатится и открывается. При закрытии - закрывается. Переподключений за сеанс работы нету.
← →
Сергей М. © (2006-09-04 12:25) [7]
> ПОДВИСАНИЕ ЕСТЬ на .close
Хоть убей - не вижу никакого Close() среди методов TSocketConnection.
← →
Torin (2006-09-04 12:27) [8]Сорри... виноват...
не CLOSE а DM.SC1.Connected:=False
← →
Сергей М. © (2006-09-04 12:39) [9]DLL-то тут причем ?
← →
Torin (2006-09-04 12:42) [10]
> DLL-то тут причем ?
DLL тут не при чем. В Win2K виснет при выходе, а в ХР - все нормально.
← →
Сергей М. © (2006-09-04 12:51) [11]
> DLL тут не при чем
А к чему тогда упомянул в [3] ?
> В Win2K виснет при выходе, а в ХР - все нормально.
Пробуй так
DM.SC.AppServer := Unassigned;
DM.SC.Disconnect;
← →
Torin (2006-09-04 13:04) [12]
> DM.SC.AppServer := Unassigned;
Свойство AppServer - только для чтения.
> DM.SC.Disconnect;
Disconnect(DM.SC)
Все равно виснет :(
← →
ANB © (2006-09-04 13:07) [13]
> Torin © (04.09.06 13:04) [12]
Пройтись отладчиком по библиотеке и определить, что виснет.
← →
Torin (2006-09-04 13:17) [14]Дык это... если из-под дельфяка то не виснет, а так - виснет. :(
← →
ANB © (2006-09-04 13:29) [15]
> Torin © (04.09.06 13:17) [14]
Тогда воткнуть отладочную печать. Но так вообще то не бывает.
← →
Torin (2006-09-04 13:43) [16]
> Тогда воткнуть отладочную печать.
Что значит "воткнуть отладочную печать"? Я пишу текстовые строки о загрузке/выгрузке ВСЕГО в log (после каждой строчки повтыкал). Именно так я и вычислил, ГДЕ оно виснет. Или есть еще способы "отладочной печати"? :-о
← →
ANB © (2006-09-04 13:44) [17]
> Torin © (04.09.06 13:43) [16]
все правильно. А теперь залезь внутрь компонента и поставь отладочную печать там.
← →
Сергей М. © (2006-09-04 13:46) [18]
> Torin © (04.09.06 13:04) [12]
Тогда деактивируй все компоненты доступа к данным, использующие интерфейс IAppServer
← →
Torin (2006-09-04 14:32) [19]Позакрывал все TDataSet-ы в Data-модулях перед закрытием сокета.
Все равно не работает (висит) :(
Может ли быть проблема на серверной части? Типа перед закрытием клиент отправляет запрос серваку, а тот не отвечает?
Почему тогда под XP работает?
← →
Сергей М. © (2006-09-04 14:35) [20]
> Torin © (04.09.06 14:32) [19]
У тебя есть исх.текст sconnect.pas.
Этого достаточно для анализа причины "виса" под встроенным отладчиком.
← →
ANB © (2006-09-04 14:37) [21]
> Этого достаточно для анализа причины "виса" под встроенным
> отладчиком.
У него под отладчиком не виснет. Почему то . . .
← →
Сергей М. © (2006-09-04 14:39) [22]
> ANB © (04.09.06 14:37) [21]
Врешь.
В авторских постах нигде не фигурирует слово "отладчик".
← →
ANB © (2006-09-04 14:56) [23]
> Сергей М. © (04.09.06 14:39) [22]
Фигурирует фраза "из под делфи работает" :)
← →
Сергей М. © (2006-09-04 15:14) [24]
> ANB © (04.09.06 14:56) [23]
Мало ли какая хрень там еще фигурирует
← →
Torin (2006-09-05 12:52) [25]Проблема не решена. Из-под дельфи прога не виснет. А без дельфи - виснет. В чем еще может быть хрень?????
← →
ANB © (2006-09-05 13:03) [26]
> Torin © (05.09.06 12:52) [25]
Пакеты в проге используются ?
← →
ANB © (2006-09-05 13:04) [27]Или DLL ?
← →
Torin (2006-09-05 13:31) [28]Используются DLL
НО
На первом этапе (запрос логина и пароля) никакие DLL не грузятся. Поднимается только сокет и открываются CDS в DataModule.
Я тут же выхожу из программы (опять же, никаких DLL) и прога "висит" в памяти (в списке процессов!!!) :-0 Хотя какие процессы, ести все открывается в основной форме (ну и DataModule) и ВСЕ!!!!!
← →
ANB © (2006-09-05 14:01) [29]
> Используются DLL
А флажек "использовать рантаймовые пакеты" при сборке проекта включен ?
← →
Torin (2006-09-13 15:43) [30]Проблема не решена - ИЗ ПОД ДЕЛЬФИ все нормально отрабатывает. прога закрывается.
Без дельфи на Win2K SP4 прога при закрытии виснет. Смотрю через ProcessExplorer: Manager.exe (собственно прога), RPCRT4.dll, RTUTILS.DLL
Висят себе, висят.... и закрываются... через 5 минут.
← →
ANB © (2006-09-13 16:04) [31]
> Torin © (13.09.06 15:43) [30]
> А флажек "использовать рантаймовые пакеты" при сборке проекта
> включен ?
??????
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.047 c