Mantis - Resin
Viewing Issue Advanced Details
5744 major always 06-03-14 01:01 11-11-14 11:09
ssmax  
ferg  
normal  
closed 4.0.40  
fixed  
none    
none 4.0.42  
0005744: mod_caucho conflict with mod_fcgid under apache 2.2
mod_caucho conflict with mod_fcgid under apache 2.2

system: centos / debian
httpd: 2.2.22 and 2.2.27 has been tested
resin: 4.0.37 and 4.0.40 has been tested

mod_caucho lead the fcgid exit with CauchoHost config like this:


    LoadModule caucho_module /home/apache/modules/mod_caucho.so
    CauchoHost 127.0.0.1 6800

    <Location /resin-doc>
        SetHandler caucho-request
    </Location>

    Alias /cgi-bin "/home/apache/cgi-bin"
    <Directory "/home/apache/cgi-bin">
        AllowOverride Options
        Options -Indexes +FollowSymLinks +ExecCGI
        Order allow,deny
        Allow from all
        AddHandler fcgid-script .fcgi
    </Directory>


[Tue Jun 03 15:44:18 2014] [error] mod_fcgid: process /home/apache/cgi-bin/test.fcgi(28764) exit(communication error), get unexpected signal 11


/home/apache/cgi-bin/test.fcgi
#!/usr/bin/perl

use strict;
use CGI::Fast;

my $count = 0;
while (my $q = CGI::Fast->new) {
    print("Content-Type: text/plain\n\n");
    print("Process ID: $$; Count is: " . ++$count);
}

look into the core dump, it seems mod_caucho access some invalid memory when fcgid request clean up.

0 0x0000000000000000 in ?? ()
0000001 0x00007f1d4936812e in run_child_cleanups (p=0x1031138) at memory/unix/apr_pools.c:2365
0000002 cleanup_pool_for_exec (p=0x1031138) at memory/unix/apr_pools.c:2372
0000003 0x00007f1d49368148 in cleanup_pool_for_exec (p=0x1031138) at memory/unix/apr_pools.c:2375
0000004 0x00007f1d49368148 in cleanup_pool_for_exec (p=0x102f128) at memory/unix/apr_pools.c:2375
0000005 0x00007f1d49372666 in apr_proc_create (new=<value optimized out>,
    progname=0x10f6d40 "/home/apache/cgi-bin/test.fcgi", args=0x10f6d30, env=0x10f6d88, attr=0x10f6df0, pool=0x10f6578)
    at threadproc/unix/proc.c:425
0000006 0x00007f1d460d53f9 in fcgid_create_privileged_process (cmdline=<value optimized out>, procinfo=0x7fff65ab4890,
    procnode=0x7f1d45069248) at fcgid_proc_unix.c:146
0000007 proc_spawn_process (cmdline=<value optimized out>, procinfo=0x7fff65ab4890, procnode=0x7f1d45069248)
    at fcgid_proc_unix.c:373
0000008 0x00007f1d460d2429 in fastcgi_spawn (main_server=<value optimized out>, configpool=0x1031138) at fcgid_pm_main.c:609
0000009 pm_main (main_server=<value optimized out>, configpool=0x1031138) at fcgid_pm_main.c:644
0000010 0x00007f1d460d3e82 in create_process_manager (main_server=0x1038870, configpool=0x1031138) at fcgid_pm_unix.c:305
0000011 procmgr_post_config (main_server=0x1038870, configpool=0x1031138) at fcgid_pm_unix.c:420
0000012 0x00007f1d460cdaea in fcgid_init (config_pool=0x1031138, plog=<value optimized out>, ptemp=<value optimized out>,
    main_server=0x1038870) at mod_fcgid.c:709
0000013 0x0000000000439e19 in ap_run_post_config (pconf=0x1031138, plog=0x1039178, ptemp=0x1035158, s=0x1038870) at config.c:94
0000014 0x000000000042649b in main (argc=3, argv=0x7fff65ab4ca8) at main.c:742

when only replace the older mod_caucho.so(4.0.24), other things remain the same, and then every thing is good.

Notes
(0006451)
ssmax   
06-03-14 01:42   
it seems that this happen since 4.0.36 after fixing some failover problem and support httpd 2.4.

test with 4.0.35 , everything is fine too.