Проблема с FreeBDS 6.3

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Проблема с FreeBDS 6.3

Сообщение grot » 02.03.2011 19:12:55

Здравствуйте, коллеги !
Проблема следующая : есть 3 машины с FreeBSD 6.3 - на двух программа работает,
а на третьей зависает при старте (100% загрузка CPU) без каких либо сообщений об ошибках ...

Я поставил FPC 2.4.2 на "проблемную" машину, все компилируется/собирается - OK.
Но при старте программы - полный завис !
(тестовый пример "Hello, World !" - работает !)

Из особенностей моей программы :
{$IFDEF UNIX}
{$linklib c}
{$linklib pthread}
{$INDIF}
она статически линкует некую библиотеку на С.
(пробовал динамически - все равно виснет !)

Мне кажется все дело в самой системе. Сам я далеко не Unix-гуру.
Эту машину инсталлировал сам - вроде все работает ( Apache 1.3 работает )...

Похоже, программа не может чего-то найти (пути на что ? )
НО НЕ РУГАЕТСЯ ....

Пробовал запускать из gdb - тоже самое...

Куда смотреть, что нажимать ?
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: Проблема с FreeBDS 6.3

Сообщение Vadim » 02.03.2011 20:21:03

grot
Вы думаете, не видя кода можно немедленно во всём разобраться?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Проблема с FreeBDS 6.3

Сообщение Ism » 02.03.2011 20:28:33

А трассировка на что ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Проблема с FreeBDS 6.3

Сообщение grot » 02.03.2011 20:31:11

Vadim писал(а):grot
Вы думаете, не видя кода можно немедленно во всём разобраться?


Программа довольно большая (бинарник 1.6 Mb), кода тоже много,
где виснет - я не знаю, сообщений об ошибках -нет ...
Слинкована - статически - зависимостей нет ...

Но на других машинах - ОНА РАБОТАЕТ !!!!
Значит - проблема в машине ...

Это машина - свеше-инсталлированная. Может чего-то не хватает.
Но работает mc, Apache 1.3, захожу туда удаленно по ssh - с виду - все нормально.

Но программа не работает !

Добавлено спустя 2 минуты 25 секунд:
Ism писал(а):А трассировка на что ?

Наверное, для этого. Хотя сам ни разу не пользовался.

Можно кратенький пример использования или по каким ключевым словам искать ?
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: Проблема с FreeBDS 6.3

Сообщение Odyssey » 02.03.2011 21:02:44

Кроме трассировки (которую я не знаю как делать через ssh) можно попробовать вывод сообщений в консоль или log-файл. Выводить статусные сообщения (типа WriteLn('stage 1');), и детализировать их методом дихотомии. Т.е.
1. ставим одно такое сообщение посередине (1/2) основной программы и запускаем
2. если сообщение выводится до зависания - ставим второе сообщение на 3/4, если не выводится - значит, зависает раньше него, следовательно ставим второе сообщение на 1/4.
3. так, пока не дойдём до вызова одной процедуры/функции. Если причина всё ещё непонятна - заходим внутрь этой процедуры/функции, и повторяем то же внутри неё.

Метод медленный, но довольно надёжный и нетребовательный к окружению. Для уменьшения количества загрузок программы на удалённый хост можно делить код более чем на две части, т.е. расставлять побольше сообщений.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Проблема с FreeBDS 6.3

Сообщение grot » 02.03.2011 21:09:17

Odyssey писал(а):Кроме трассировки (которую я не знаю как делать через ssh) можно попробовать вывод сообщений в консоль или log-файл. Выводить статусные сообщения (типа WriteLn('stage 1');), и детализировать их методом дихотомии. Т.е.
1. ставим одно такое сообщение посередине (1/2) основной программы и запускаем
2. если сообщение выводится до зависания - ставим второе сообщение на 3/4, если не выводится - значит, зависает раньше него, следовательно ставим второе сообщение на 1/4.
3. так, пока не дойдём до вызова одной процедуры/функции. Если причина всё ещё непонятна - заходим внутрь этой процедуры/функции, и повторяем то же внутри неё.

Метод медленный, но довольно надёжный и нетребовательный к окружению. Для уменьшения количества загрузок программы на удалённый хост можно делить код более чем на две части, т.е. расставлять побольше сообщений.

Спасибо - попробую...

Компьютер этот у меня сейчас под столом, в локальной сети, с монитором и клавой -
есть способ более "конкрентый" ?
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: Проблема с FreeBDS 6.3

Сообщение Ism » 02.03.2011 21:13:36

а что делает программа ? с чем работает ? А то "Чтото поставил и не работает" ни к чему не приведет.
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Проблема с FreeBDS 6.3

Сообщение grot » 02.03.2011 21:16:34

Ism писал(а):а что делает программа ? с чем работает ? А то "Чтото поставил и не работает" ни к чему не приведет.

Это модуль CGI cо статически прилинкованным SQLite. ( ну и Gzip статический добавлен )
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: Проблема с FreeBDS 6.3

Сообщение Odyssey » 02.03.2011 23:06:12

grot писал(а):с монитором и клавой - есть способ более "конкрентый" ?

Теоретически - скомпилировать с отладочной информацией, поставить gdb и отлаживать через консоль. Инструкция по использованию gdb есть например тут. Сам я таким способом не пользовался (и хорошо бы чтоб не пришлось :) ), поэтому более подробной информацией не располагаю. Если в системе стоит gtk2 или qt (что маловероятно, судя по описанию), можно собрать Lazarus и там (если получится) воспользоваться графическим отладчиком, который фактически представляет собой GUI к gdb.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Проблема с FreeBDS 6.3

Сообщение grot » 03.03.2011 00:52:15

Похоже, эта проблема решена :
опция fpc -XX (smart linking) действует "странно"... при ее исключении - все заработало !

А дело было так :
открыл проект в текстовом iDE и он ... заработал (т.к. скомпилировался с "другими" опциями)
дальше методом исключения быстро нашлась "проблемная" опция, правда бинарник прибавил 300K ...

Хотя, это больше похоже на обходной маневр, чем на кардинальное решение проблемы !
Исходный вопрос остался нерешенным :
"Почему на 2 из 3 машин "тот" бинарник работал , и , я нутром чую, он бы работал на подавляющем большинстве
"других" машин !?!"
Может функция -XX (smart linking) зависит от конфигурации конкретной системы ?
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: Проблема с FreeBDS 6.3

Сообщение coyot.rush » 03.03.2011 12:14:41

Добавьте во все модули директиву {$SMARTLINK OFF} и методом перебора узнаете где "умное связывание" дает сбой.
Вероятнее всего проблемы с подключением со статическим подключение библиотеки на С {$linklib c}, подобное сам встречал помогает {$SMARTLINK OFF} для проблемного модуля
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

Рейтинг@Mail.ru
cron