powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / UDR load problem
14 сообщений из 14, страница 1 из 1
UDR load problem
    #33629352
tigra4x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется:
SunOS s2 5.9 Generic_112233-12 sun4u sparc SUNW,Ultra-60
IBM Informix Dynamic Server Version 10.00.FC3

Пишу внешнюю функцию на C

/*************************************************************
*
* u d r 0 . c
*
*************************************************************/
#include "mi.h"


/************************************************************* *
* l i b _ t m p t e s t
*
* В о з в р а щ а е т п а р а м е т р
*
/*************************************************************mi_integer lib_tmptest_1( mi_integer p_seed )
{
mi_integer x_rand;

x_rand = p_seed;

return x_rand;
}
//--------------------------------------

собираю её в библиотеку udrlib0.so
с помощью
GNU Make version 3.79.1
gcc version 3.4.2
Makefile:
//--------------------------------------
STRIP=/usr/ccs/bin/strip

CFLAGS=-DMI_SERVBUILD -I/usr/include -I/usr/include/sys \
-I/usr/informix/incl/public \
-I/usr/informix/incl/dmi -I/usr/informix/incl -g -m64
SOFLAGS=-dy -G -Bsymbolic -m64
INFORMIXLIB=-L/usr/informix/lib/esql `esql -libs`\
-L/usr/informix/lib/dmi -lifdmi

OBJSO=udr0.o

all: udrlib0.so

udrlib0.so: $(OBJSO)
$(LD) $(SOFLAGS) $(INFORMIXLIB) -lrt -o$@ $(OBJSO)
# $(STRIP) $@

clean:
$(RM) *.o udrlib0.so
//--------------------------------------
file udrlib0.so
udrlib0.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped


Регистрирую в БД на informix

CREATE FUNCTION lib_tmptest( INT )
RETURNING INT
WITH ( PARALLELIZABLE )
EXTERNAL NAME
"/usr/informix/lib/test/udrlib0.so(lib_tmptest)"
LANGUAGE C;

на директорию где лижит права такие
drwxr-xr-x 3 informix informix 512 Mar 27 00:21 test
/usr/informix/lib/test/
на саму библиотеку ставлю права
-rwxr-xr-x 1 informix informix 5592 Mar 27 00:16 udrlib0.so

при попытке позвать функцию
execute function lib_tmptest( 100 );
получаю сообщение об ошибке
"-9793: User Defined Routine (lib_tmptest) module load failed."
а в online.log запись

12:18:49 Loading Module </usr/informix10/lib/rap/udrlib0.so>
12:18:49 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load
reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory
12:18:49 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so>

Пробовал ставить права на udrlib0.so 700, 750, 550, 500, 640, 400>:0 , регистриовать и размещать не под пользователем informix. Ничего не меняется, всё та же ошибка.
Если библиотеку удалить из того места которе указано при регистрации, выдаёт сообщения:
"-9793: User Defined Routine (lib_tmptest) module load failed."
и в online.log
12:25:53 Loading Module </usr/informix/lib/rap/udrlib0.so>
12:25:53 (2): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load
reason: Cannot access library file
12:25:53 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so>

если подложить вместо библиотечного файла что то левое с тем же именем
12:28:11 Loading Module </usr/informix/lib/test/udrlib0.so>
12:28:11 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load
reason: ld.so.1: oninit: fatal: /usr/informix/lib/rap/udrlib0.so: unknown file type
12:28:11 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so>
На клиенте в обих случаях -9793 ошибка.
Вроде бы всё логично.
Из всего что я нашел в документации про необходимые права сказано 750, и важно что бы не было w прав для other, а informix мог читать. Правда в некотоых статьях на IBM-овском сайте видел указание ставить права 550.
Но как уже наисал это не помогает.

Пробовал менять нововведённый параметр
IFX_EXTEND_ROLE 0 # To control the usage of EXTEND role.
В onconfig. Параметр работает, но ошибки остались все те же.

Не сталкивался ли кто с подобным проблемами? Куда копать?
...
Рейтинг: 0 / 0
UDR load problem
    #33629849
лшк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/*************************************************************mi_integer lib_tmptest_1( mi_integer p_seed )
{
mi_integer x_rand;

x_rand = p_seed;

return x_rand;
}
CREATE FUNCTION lib_tmptest( INT )
RETURNING INT
WITH ( PARALLELIZABLE )
EXTERNAL NAME
"/usr/informix/lib/test/udrlib0.so(lib_tmptest)"
LANGUAGE C;

Попробуй точку входа в библиотеку сделать такое же , как название функции.
...
Рейтинг: 0 / 0
UDR load problem
    #33630687
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не богатый опыт с UDR, но он именно на Solaris, правда X86. Именно этот код ошибки у меня был, когда на тестовом серваке вместо 8-ки поставили 10-ку. И там и там используется 9.21UC2.
Для 8-ки синтаксис получился таким:
CREATE PROCEDURE
"informix".do_syslog(priority integer, message lvarchar)
EXTERNAL NAME
"/usr/informix/lib/logger.so/(do_syslog)"
LANGUAGE C
END PROCEDURE;

А вот на 10-ке потребовалось так:
"/usr/informix/lib/logger.so(do_syslog)"

Причем на 8-ке в такой нотации не работает. От чего зависит не копал.
...
Рейтинг: 0 / 0
UDR load problem
    #33633069
tigra4x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 лшк
mi_integer lib_tmptest_1( mi_integer p_seed )
^^^^ тут я конечно ошибочную версию запостил
Должно быть так
mi_integer lib_tmptest( mi_integer p_seed )

Просто экспериментировал, но похоже до разрешения функции внутри библиотеки дело не доходит. Обламывается сам Informix при попытке грузить библиотеку


2 Daugava
попробовал поменять синтаксис процедуры регистрации, ничего не поменялось.

У меня на
Informix Dynamic Server 2000 Version 9.21.UC5 (32bit) ,
SunOS i 5.9 Generic_112233-12 sun4u sparc SUNW,Sun-Fire-V240 (64bit)

SunOS s1 5.8 Generic_108528-13 sun4u sparc SUNW,Ultra-60 (64bit),
Informix Dynamic Server 2000 Version 9.20.UC2/9.21.UC5 (32bit)
работает

На
Linux g2 2.6.10-1.770_FC3smp #1 SMP EST 2005 i686 i686 i386 GNU/Linux (32bit)
IBM Informix Dynamic Server Version 9.40.UC2 (32bit)
SunOS s2 5.9 Generic_112233-12 sun4u sparc SUNW,Ultra-60
IBM Informix Dynamic Server Version 10.00.FC3

не работает, пичём ошибка на не работающих платформах одинаковая
...
Рейтинг: 0 / 0
UDR load problem
    #33633095
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если положить в каталог /usr/lib/ тогда чего?

-----------------------------------------------------------
Решительный шаг вперед -- результат хорошего пинка сзади
...
Рейтинг: 0 / 0
UDR load problem
    #33634138
tigra4x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ысё то же самое:( Не грузится с теми же сообщениями
...
Рейтинг: 0 / 0
UDR load problem
    #33634173
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ничего не знаю про UDR. Перечитал первое сообщение:

12:18:49 Loading Module </usr/informix10/lib/ rap /udrlib0.so>
12:25:53 Loading Module </usr/informix/lib/ rap /udrlib0.so>
reason: ld.so.1: oninit: fatal: /usr/informix/lib/ rap /udrlib0.so: unknown file type


Причем тут каталог rap, вроде речь про test?
...
Рейтинг: 0 / 0
UDR load problem
    #33634203
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если саппорта нет, можно попробовать в cdi написать: "Купил я 9.21, работал, работал, решил купить 10-ку, попробовал триал, а он глючит, зачем сломали UDR?".

-----------------------------------------------------------------------------------------------------------------------------------------
нужно делать то что нужно, а то что не нужно -- делать не нужно (перефразируя В-Пуха).
...
Рейтинг: 0 / 0
UDR load problem
    #33634371
tigra4x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конечно должно быть так

12:18:49 Loading Module </usr/informix10/lib/test/udrlib0.so>
12:18:49 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load
reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory
12:18:49 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so>
...
Рейтинг: 0 / 0
UDR load problem
    #33634384
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tigra4x4конечно должно быть так

12:18:49 Loading Module </usr/informix10/lib/test/udrlib0.so>
12:18:49 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load
reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory
12:18:49 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so>Я не понял, вы нам копипаст показываете? Или придумываете на ходу?

12:18:49 Loading Module </usr/ informix10 /lib/test/udrlib0.so>
12:18:49 (4): The C Language Module </usr/ informix /lib/test/udrlib0.so> can't load
reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory
12:18:49 (-1): ERROR: Loading Module </usr/ informix /lib/test/udrlib0.so>

Опять каталоги разные. Аа, они и в 4-м посте тоже разные были.
...
Рейтинг: 0 / 0
UDR load problem
    #33634585
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tigra4x4

Куда копать?


Начинаем отсюда
tigra4x4
#include "mi.h"


Потом смотрим сюда
tigra4x4
INFORMIXLIB=-L/usr/informix/lib/esql `esql -libs`\
-L/usr/informix/lib/dmi -lifdmi


потом сюда
tigra4x4
reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory


потом
Код: plaintext
1.
$find / -name libifsql.so -print

Потом закидывыем ссылку на библиотеку libifsql.so в директорию
системных библиотек.

ИХМО должно помочь.
...
Рейтинг: 0 / 0
UDR load problem
    #33634619
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tigra4x4
INFORMIXLIB=-L/usr/informix/lib/esql `esql -libs`\
-L/usr/informix/lib/dmi -lifdmi





Наверное следующей ошибкой буде невозможность загрузить
какую либо библиотеку из

idmisXXa.so
libifdmi.so
libthdmi.so
idmitXXa.so

Они у вас участвуют в линковке

Но принцип решения проблемы тот же.
...
Рейтинг: 0 / 0
UDR load problem
    #33636696
tigra4x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про возможность подгрузить используемые скомпилированным модулем библиотеки смотрели, переменную LD_LIBRARY_PATH и LD_LIBRARY_PATH_64 под экаунтом informix (сервер то под ним работает, если я чего правильно понимаю) выставляли

$ ldd udrlib0.so
libifsql.so => /usr/informix/lib/esql/libifsql.so
libifasf.so => /usr/informix/lib/libifasf.so
libifgen.so => /usr/informix/lib/esql/libifgen.so
libifos.so => /usr/informix/lib/esql/libifos.so
libifgls.so => /usr/informix/lib/esql/libifgls.so
libnsl.so.1 => /usr/lib/64/libnsl.so.1
libsocket.so.1 => /usr/lib/64/libsocket.so.1
libdl.so.1 => /usr/lib/64/libdl.so.1
libm.so.1 => /usr/lib/64/libm.so.1
libifglx.so => /usr/informix/lib/esql/libifglx.so
libifdmi.so => /usr/informix/lib/libifdmi.so
librt.so.1 => /usr/lib/64/librt.so.1
libc.so.1 => /usr/lib/64/libc.so.1
libmp.so.2 => /usr/lib/64/libmp.so.2
libaio.so.1 => /usr/lib/64/libaio.so.1
libmd5.so.1 => /usr/lib/64/libmd5.so.1
/usr/platform/SUNW,Ultra-60/lib/sparcv9/libc_psr.so.1
/usr/platform/SUNW,Ultra-60/lib/sparcv9/libmd5_psr.so.1
^^^ это под informix выполненная команда

Про неверные пути в предыдущих постах:

12:18:49 Loading Module </usr/informix/lib/test/udrlib0.so>
12:18:49 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load
reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory
12:18:49 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so>
...
Рейтинг: 0 / 0
UDR load problem
    #33638267
tigra4x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужно в Makefile подправить INFORMIXLIB так

INFORMIXLIB=-L/usr/informix/lib/esql \
-L/usr/informix/lib/dmi -L/usr/informix/lib
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / UDR load problem
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]