Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1161242589
Александр Иванов
2006-10-19 11:23
2006.11.12
Америка хочет контролировать все запуски в космос?


6-1147464029
ChainikDenis
2006-05-13 00:00
2006.11.12
Сменить номер порта idUDPclient и idUDPServer в RunTime


15-1161875174
oldman
2006-10-26 19:06
2006.11.12
Магия чисел?


6-1150632005
nevalex
2006-06-18 16:00
2006.11.12
UDP и WarCraft


15-1161596313
clickmaker
2006-10-23 13:38
2006.11.12
Мужики, посоветуйте UML-редактор для виндов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский