|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Nikki Chumakov 2:5020/400 19 Jul 2005 01:27:40 To : All Subject : конфликт .so объектов под apache mod_perl (GD, libgd.so) и php(gd.so) --------------------------------------------------------------------------------
Привет,
Стоит FC4 и стандартно в нее входящие httpd-2.0.54, mod_perl-2.0.1,
php-5.0.4, gd-2.0.33 (libgd).
В апаче нужны и php и mod_perl. php использует разделяемые модули, в
частности php-gd (/usr/lib/php/modules/gd.so), который ему нужен. Скипты
на mod_perl используют GD, точнее GD::SecurityImage. GD использует
/usr/lib/libgd.so.2.
libgd.so содержит функции с тем же именами, что и в gd.so от php-gd, но
с несовместимым интерфейсом или функциональностью. В результате
происходит следующее: скрипт под mod_perl GD::SecurityImage зовет GD,
который зовет функцию из libgd.so.2, которая зовет свои внутренние
функции, но некоторый момент вместо них зовутся одноименные функции из
php-gd(/usr/lib/php/modules/gd.so) и тут сервер падает.
Стек в момент падения выглядит так (gdCacheGet есть в libgd.so.2 и
gd.so, вызывается не оттуда, откуда надо).
#0 0x0285653b in gdCacheGet () from /usr/lib/php/modules/gd.so
#1 0x05d9cf90 in gdImageStringFTEx () from /usr/lib/libgd.so.2
#2 0x05d9e384 in gdImageStringFT () from /usr/lib/libgd.so.2
#3 0x00c641e6 in XS_GD__Image_stringFT (my_perl=0xa3e3658, cv=0xa6ef520)
at GD.xs:2166
#4 0x00b4998c in Perl_pp_entersub ()
from /usr/lib/perl5/5.8.6/i386-linux-thread-multi/CORE/libperl.so
#5 0x00b2b6e1 in Perl_runops_debug ()
from /usr/lib/perl5/5.8.6/i386-linux-thread-multi/CORE/libperl.so
#6 0x00ad8b9e in Perl_get_cv ()
from /usr/lib/perl5/5.8.6/i386-linux-thread-multi/CORE/libperl.so
#7 0x00add2e5 in Perl_call_sv ()
from /usr/lib/perl5/5.8.6/i386-linux-thread-multi/CORE/libperl.so
#8 0x0026de84 in modperl_callback () from /etc/httpd/modules/mod_perl.so
#9 0x0026e819 in modperl_callback_run_handlers ()
from /etc/httpd/modules/mod_perl.so
#10 0x0026eac4 in modperl_callback_per_dir ()
from /etc/httpd/modules/mod_perl.so
#11 0x00268fa7 in modperl_response_finish ()
from /etc/httpd/modules/mod_perl.so
#12 0x00269241 in modperl_response_handler_cgi ()
from /etc/httpd/modules/mod_perl.so
#13 0x00ee2f3c in ap_run_handler () from /usr/sbin/httpd
#14 0x00ee32d7 in ap_invoke_handler () from /usr/sbin/httpd
#15 0x00edfe11 in ap_process_request () from /usr/sbin/httpd
#16 0x00eda693 in _start () from /usr/sbin/httpd
#17 0x00eedafb in ap_run_process_connection () from /usr/sbin/httpd
#18 0x00eede30 in ap_process_connection () from /usr/sbin/httpd
#19 0x00ee0d9e in ap_graceful_stop_signalled () from /usr/sbin/httpd
#20 0x00ee100e in ap_graceful_stop_signalled () from /usr/sbin/httpd
#21 0x00ee112a in ap_graceful_stop_signalled () from /usr/sbin/httpd
#22 0x00ee1b0b in ap_mpm_run () from /usr/sbin/httpd
#23 0x00ee888e in main () from /usr/sbin/httpd
Как это можно починить, если в одном сервере хочется иметь и mod_perl:GD
и php-gd, с минимальным изменением дистрибутива? Пересобирать все подряд
статически не очень хочется. Может быть есть более простой способ?
--- ifmail v.2.15dev5.3
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/657733578fac.html, оценка из 5, голосов 10
|