Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

Зависание в 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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.029 c
2-1156603567
Cyrax
2006-08-26 18:46
2006.11.12
Проблемы при работе с Indy


15-1161867167
ReWQ
2006-10-26 16:52
2006.11.12
Помогите, пожалуйста!


3-1157915075
DiX
2006-09-10 23:04
2006.11.12
Базы данных: удаление записи


2-1161758334
yel
2006-10-25 10:38
2006.11.12
GLScene хочет Python_d7 и dws2Runtime


8-1144338190
QuickFinder
2006-04-06 19:43
2006.11.12
TShockwaveFlash и его свойство Align