[devel] proftpd: сегфолт при работе с модулями (mod_sql_mysql в частности)
Dmitry Afanasov
=?iso-8859-1?q?afanasovdmitry_=CE=C1_gmail=2Ecom?=
Чт Сен 25 19:06:13 MSD 2008
грыз я proftpd на предмет какой libltdl он будет юзать - системный или
свой, слинкованный статикой. и налетел на интересное поведение:
настройки /etc/proftpd.conf
-----
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
SQLAuthenticate on
SQLAuthTypes plaintext
SQLBackend mysql
SQLConnectInfo ftp user
-----
работает недостаточно полно, но для testcase'а сойдет.
что наблюдается:
1. коментим mod_sql.c
# LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
proftpd орет undefined symbol: sql_register_backend. что логично, так
как этот символ находится в mod_sql.c
2. коментим mod_sql_mysql.c
LoadModule mod_sql.c
# LoadModule mod_sql_mysql.c
ребёнок proftpd валится с Segmentation fault.
что показывает gdb:
0xb7fcb310 in _sql_dispatch (cmd=0x81581dc, cmdname=0xb7fdb2c8
"sql_identify") at mod_sql.c:398
398 for (i = 0; sql_cmdtable[i].command; i++) {
просмотр показывает, что тут sql_cmdtable == NULL
на этом месте падает и в 1.3.2rc1 и текущим сизифным 1.3.2rc2.
отличия rc1 от rc2 - если rc1 подает молча, то rc2 начинает срать в
лог до тех пор, пока его не убьют.
3. расскоментированы все.
тут всё работает.
ошибка наблюдается в независимости от вида взаимодействия с libltdl -
статика там или динамика. завтра постараюсь уточнить.
вот я сижу и думаю - что со всем этим делать. не патчить же на предмет
ругани mod_sql, если у него нет ни одного бакенда. либо крутить
handler SQLBackend на предмет dso_module_load.
а лучше всего разобраться с mainstream, но тут мне поддержка
переводчиков нужна будет :)
в общем, я даже не знаю.
lakostis: не та ли это ошибка, о которой ты говорил?
--
С уважением
Афанасов Дмитрий
Подробная информация о списке рассылки Devel