Назад | Перейти на главную страницу

Apache HTTPD - Ошибка сегментации при загрузке модуля mod_jk

Я только что установил mod_jk с моей установкой Apache httpd 2.0.52, но теперь, когда я пытаюсь запустить Apache, у него возникает ошибка сегментации. Я проверил, что использую mod_jk, скомпилированный для 2.0.x .., фактически созданный для той же версии, что и у меня. Я также проверил, что путь, который я указываю для LoadModule, правильный, а разрешения и права собственности на файл такие же, как и у остальных модулей. Когда я удаляю команду «LoadModule» для mod_jk из моего httpd.conf, ошибки сегментации не возникает.

В журналах ошибок Apache ничего не отображается. Я попытался перезапустить сервер с этим модулем, используя оба service httpd restart и httpd.

Это последние несколько строк, возвращаемых strace httpd -X:

gettimeofday({1292100295, 434487}, NULL) = 0
socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = -1 EAFNOSUPPORT (Address family not supported by protocol)
socket(PF_NETLINK, SOCK_RAW, 0)         = 3
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=22378, groups=00000000}, [12]) = 0
time(NULL)                              = 1292100295
sendto(3, "\24\0\0\0\26\0\1\3\307\342\3M\0\0\0\0\0\305\333\267", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"<\0\0\0\24\0\2\0\307\342\3MjW\0\0\2\10\200\376\1\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 664
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\307\342\3MjW\0\0\0\0\0\0\1\0\0\0\10\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
close(3)                                = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Process 22378 detached

У кого-нибудь была подобная проблема при использовании Apache 2.0.52 с mod_jk? Я могу попробовать загрузить и собрать исходный код для сервера Apache и mod_jk самостоятельно, если для этого не обнаружено исправления.

Это предварительно скомпилированный mod_jk, который вы нашли? Если это так, то достаточно просто взять последний исходный код для mod_jk и скомпилировать его, я подозреваю, что здесь ваша проблема - я много раз скомпилировал mod_jk для поставляемого поставщиком (Red Hat) Apache без ошибок segfaults.

Убедитесь, что httpd-devel установлен (Red Hat / CentOS)

Распакуйте настоящий JDK по некоторому пути, например /usr/local/jdk1.6.0_18/

Возьмите исходный код "tomcat-connector" с tomcat.apache.org и скомпилируйте его:

cd tomcat-connectors-1.2.28-src/native
./configure --with-apxs=/usr/sbin/apxs --with-java=/usr/local/jdk1.6.0_18 --enable-prefork
make
cp apache-2.0/mod_jk.so /etc/httpd/modules/

Теперь ваши модули должны работать должным образом.