Am 29.06.2016 um 11:58 schrieb Michael Diener:
I get occasional Apache 2 crashes being caused by mod_jk and I'm running out of ideas about the cause of the problem. I hope somebody here can point me in the right direction.
Can you reproduce? Does it also happen on a test system?
tomcat6 6.0.39-1 libapache2-mod-jk 1:1.2.37-3
Latest we provide in the project is 1.2.41. It is pretty easy to compile yourself and would be an interesting check to see, whether it is just an old already fixed problem.
apache2 2.4.7-1ubuntu4 java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) /var/log/apache2/error.log
**** buffer overflow detected ***: /usr/sbin/apache2 terminated======= Backtrace: =========/lib/x86_64-linux-gnu/libc.so.6(+0x7329f)[0x7fe9aa7de29f]/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7fe9aa875bbc]/lib/x86_64-linux-gnu/libc.so.6(+0x109a90)[0x7fe9aa874a90]/lib/x86_64-linux-gnu/libc.so.6(+0x10ab07)[0x7fe9aa875b07]/usr/lib/apache2/modules/mod_jk.so(jk_open_socket+0x8d8)[0x7fe9a7c60cb8]/usr/lib/apache2/modules/mod_jk.so(ajp_connect_to_endpoint+0x65)[0x7fe9a7c7bf75]/usr/lib/apache2/modules/mod_jk.so(+0x36422)[0x7fe9a7c7d422]/usr/lib/apache2/modules/mod_jk.so(+0x1674c)[0x7fe9a7c5d74c]/usr/sbin/apache2(ap_run_handler+0x40)[0x7fe9ab65fbe0]/usr/sbin/apache2(ap_invoke_handler+0x69)[0x7fe9ab660129]/usr/sbin/apache2(ap_process_async_request+0x20a)[0x7fe9ab6756ca]/usr/sbin/apache2(+0x69500)[0x7fe9ab672500]/usr/sbin/apache2(ap_run_process_connection+0x40)[0x7fe9ab669220]/usr/lib/apache2/modules/mod_mpm_event.so(+0x681b)[0x7fe9a783981b]/lib/x86_64-linux-gnu/libpthread.so.0(+0x8184)[0x7fe9aab38184]/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fe9aa86537d]* ======= Memory map: ======== 7fe688000000-7fe68806a000 rw-p 00000000 00:00 0 7fe68806a000-7fe68c000000 ---p 00000000 00:00 0 ....... 7fffa6c27000-7fffa6c48000 rw-p 00000000 00:00 0 [stack] 7fffa6c86000-7fffa6c88000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] [Wed Jun 29 05:01:50.052325 2016] [core:notice] [pid 1747:tid 140641581987712] AH00051: child pid 17018 exit signal Aborted (6), possible coredump in /etc/apache2 The log indicates there might be a coredump, but there is not.
Configure your system so that it writes core dump files, look at the core dump file with "gdb", e.g. running "thread apply all bt full" and provide the output.
Likely your httpd is running as a suid process (started as root but the children switch uid to something else, like www or similar). You have to enable core dump for suid processes explicitly in your Linux.
There is no log in /var/log/apache2/mod_jk.log at the same time. /var/log/tomcat6/catalina.out Jun 29, 2016 5:01:49 AM org.apache.jk.common.ChannelSocket processConnection WARNING: processCallbacks status 2 Jun 29, 2016 5:01:49 AM org.apache.jk.common.ChannelSocket processConnection WARNING: processCallbacks status 2 The Tomcat log indicates AFAIK that the client connection has been lost. /etc/libapache2-mod-jk/httpd-jk.conf <IfModule jk_module> JkWorkersFile /etc/libapache2-mod-jk/workers.properties JkLogFile /var/log/apache2/mod_jk.log JkLogLevel warn JkShmFile /var/log/apache2/jk-runtime-status </IfModule> /etc/libapache2-mod-jk/workers.properties
The next lines look like they are coming from very old and partially nonsense recipies. Your crash won't be a result of those but you should probably start to create your config based on what's inside the conf folder of our source distribution for mod_jk. The files can also be found under http://svn.apache.org/viewvc/tomcat/jk/trunk/conf/.
workers.tomcat_home=/usr/share/tomcat6 workers.java_home=/usr/lib/jvm/java-6-sun ps=/ worker.list=loadbalancer worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=ajp13_worker,ajp13_worker2 worker.loadbalancer.sticky_session=0 worker.ajp13_worker.port=xxx worker.ajp13_worker.host=localhost worker.ajp13_worker.type=ajp13 worker.ajp13_worker.lbfactor=50
If you don't really need the increased max_packet_size, you should comment it out here and the packetSize below and retry. Those settings are not so common. There were also changes related to them in newer versions.
worker.ajp13_worker.max_packet_size=65536
Not crash related, but I don't like the general socket_timeout. Look at the configs proposed above. They use lots of good timeouts, but socket_timeout is not one of them.
worker.ajp13_worker.socket_timeout=300 worker.ajp13_worker.ping_mode=A worker.ajp13_worker.secret=xxx worker.ajp13_worker.fail_on_status=503 worker.ajp13_worker.connection_pool_size=32768 #worker.ajp13_worker.activation=disabled worker.ajp13_worker.redirect=ajp13_worker2 worker.ajp13_worker2.port=xxx worker.ajp13_worker2.host=otherhost worker.ajp13_worker2.type=ajp13 worker.ajp13_worker2.lbfactor=1 worker.ajp13_worker2.max_packet_size=65536 worker.ajp13_worker2.socket_timeout=300 worker.ajp13_worker2.ping_mode=A worker.ajp13_worker2.secret=xxx worker.ajp13_worker2.fail_on_status=503 worker.ajp13_worker2.connection_pool_size=32768 worker.ajp13_worker2.activation=disabled #worker.ajp13_worker2.redirect=ajp13_worker /etc/tomcat6/server.xml <Connector port="xxx" protocol="AJP/1.3" redirectPort="8443" enableLookups="false" maxThreads="65536" minSpareThreads="25" maxSpareThreads="75" connectionTimeout="300000" packetSize="65536" request.secret="xxx" /> ls /etc/apache2/mods-enabled/ access_compat.load auth_basic.load authz_core.load autoindex.conf deflate.load env.load headers.load mime.conf mpm_event.load rewrite.load socache_shmcb.load status.conf alias.conf authn_core.load authz_host.load autoindex.load dir.conf expires.load jk.conf mime.load negotiation.conf setenvif.conf ssl.conf status.load alias.load authn_file.load authz_user.load deflate.conf dir.load filter.load jk.load mpm_event.conf negotiation.load setenvif.load ssl.load lsb_release -rd Description: Ubuntu 14.04.4 LTS Release: 14.04
Regards, Rainer