You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2005/08/18 05:05:00 UTC

DO NOT REPLY [Bug 36234] New: - certain VirtualHost directives in httpd.conf cause httpd -S to core in dump_a_vhost

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=36234>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=36234

           Summary: certain VirtualHost directives in httpd.conf cause httpd
                    -S to core in dump_a_vhost
           Product: Apache httpd-2.0
           Version: 2.0.54
          Platform: Sun
        OS/Version: Solaris
            Status: NEW
          Severity: normal
          Priority: P2
         Component: mod_vhost_alias
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: jtingiris@bellsouth.net


The following configuration causes a seg fault on Solaris 10 (sparc):

--cut--
NameVirtualHost *:80

<VirtualHost *>
ServerName adminconsole.test.com
DocumentRoot /opt/apache2/htdocs
ErrorLog logs/adminconsole.test.com-error_log
CustomLog logs/adminconsole.test.com-access_log common
</VirtualHost>

<VirtualHost *>
ServerName control.test.com
DocumentRoot /opt/apache2/htdocs
ErrorLog logs/control.test.com-error_log
CustomLog logs/control.test.com-access_log common
</VirtualHost>
--cut--

Some playing with the above configuration proves that it is only the last
<VirtualHost *> entry that causes the core.  If <VirtualHost *:80>, or
<VirutalHost hostname> is used for the last entry everything works as expected
if using <VirtualHost *> in prior declarations.

Here is a truss and map of the core:

--cut--
[root@core {SunOS 5.10} - (via 192.168.52.88)]
[507] /opt/apache2/conf 7 truss /opt/apache2/bin/httpd -S
--snip--
stat("/opt/apache2/htdocs", 0xFFBFF378)         = 0
VirtualHost configuration:
write(2, " V i r t u a l H o s t  ".., 27)      = 27
wildcard NameVirtualHosts and _default_ servers:
write(2, " w i l d c a r d   N a m".., 49)      = 49
*:*                    adminconsole.test.com (/opt/apache2/conf/httpd.conf:252)
write(2, " * : *                  ".., 80)      = 80
*:*                    control.test.com (/opt/apache2/conf/httpd.conf:259)
write(2, " * : *                  ".., 75)      = 75
    Incurred fault #6, FLTBOUNDS  %pc = 0x000364C4
      siginfo: SIGSEGV SEGV_MAPERR addr=0x0000000C
    Received signal #11, SIGSEGV [default]
      siginfo: SIGSEGV SEGV_MAPERR addr=0x0000000C
--cut--

--cut--
[root@core {SunOS 5.10} - (via localhost)]
[547] /opt/apache2/conf 47 pmap core
core 'core' of 9410:    /opt/apache2/bin/httpd -S
00010000     328K r-x--  /opt/apache2/bin/httpd
00070000      24K rwx--  /opt/apache2/bin/httpd
00076000     952K rwx--    [ heap ]
FEA20000      56K r-x--  /opt/apache2/modules/mod_rewrite.so
FEA3C000      16K rwx--  /opt/apache2/modules/mod_rewrite.so
FEA50000       8K r-x--  /opt/apache2/modules/mod_alias.so
FEA60000      16K rwx--  /opt/apache2/modules/mod_alias.so
FEA70000       8K rwx--
FEA80000       8K r-x--  /opt/apache2/modules/mod_dir.so
FEA90000       8K rwx--  /opt/apache2/modules/mod_dir.so
FEAA0000      32K r-x--  /opt/apache2/modules/mod_negotiation.so
FEAB6000       8K rwx--  /opt/apache2/modules/mod_negotiation.so
FEAC0000       8K r-x--  /opt/apache2/modules/mod_vhost_alias.so
FEAD0000       8K rwx--  /opt/apache2/modules/mod_vhost_alias.so
FEAE0000      32K r-x--  /opt/apache2/modules/mod_cgid.so
FEAF6000       8K rwx--  /opt/apache2/modules/mod_cgid.so
FEB00000      16K r-x--  /opt/apache2/modules/mod_info.so
FEB12000       8K rwx--  /opt/apache2/modules/mod_info.so
FEB20000       8K rwx--
FEB30000       8K r-x--  /opt/apache2/modules/mod_asis.so
FEB40000       8K rwx--  /opt/apache2/modules/mod_asis.so
FEB50000      40K r-x--  /opt/apache2/modules/mod_autoindex.so
FEB68000       8K rwx--  /opt/apache2/modules/mod_autoindex.so
FEB70000      16K r-x--  /opt/apache2/modules/mod_mime.so
FEB82000       8K rwx--  /opt/apache2/modules/mod_mime.so
FEB90000       8K r-x--  /opt/apache2/modules/mod_setenvif.so
FEBA0000       8K rwx--  /opt/apache2/modules/mod_setenvif.so
FEBB0000       8K r-x--  /opt/apache2/modules/mod_unique_id.so
FEBC0000       8K rwx--  /opt/apache2/modules/mod_unique_id.so
FEBD0000       8K r-x--  /opt/apache2/modules/mod_expires.so
FEBE0000       8K rwx--  /opt/apache2/modules/mod_expires.so
FEBF0000       8K rwx--
FEC00000      24K r-x--  /opt/apache2/modules/mod_mime_magic.so
FEC14000      16K rwx--  /opt/apache2/modules/mod_mime_magic.so
FEC20000       8K r-x--  /opt/apache2/modules/mod_env.so
FEC30000       8K rwx--  /opt/apache2/modules/mod_env.so
FEC40000      24K r-x--  /opt/apache2/modules/mod_log_config.so
FEC54000       8K rwx--  /opt/apache2/modules/mod_log_config.so
FEC60000      40K r-x--  /opt/apache2/modules/mod_include.so
FEC78000       8K rwx--  /opt/apache2/modules/mod_include.so
FEC80000       8K r-x--  /opt/apache2/modules/mod_auth.so
FEC90000       8K rwx--  /opt/apache2/modules/mod_auth.so
FECA0000       8K rwx--
FECB0000       8K r-x--  /opt/apache2/modules/mod_access.so
FECC0000       8K rwx--  /opt/apache2/modules/mod_access.so
FECE0000       8K r-x--  /platform/sun4u-us3/lib/libc_psr.so.1
FECF0000      24K rwx--
FED00000     848K r-x--  /lib/libc.so.1
FEDE4000      32K rwx--  /lib/libc.so.1
FEDEC000       8K rwx--  /lib/libc.so.1
FEE00000       8K r-x--  /lib/libmd5.so.1
FEE12000       8K rwx--  /lib/libmd5.so.1
FEE20000     240K r-x--  /lib/libresolv.so.2
FEE6C000      16K rwx--  /lib/libresolv.so.2
FEE80000     584K r-x--  /lib/libnsl.so.1
FEF22000      40K rwx--  /lib/libnsl.so.1
FEF2C000      24K rwx--  /lib/libnsl.so.1
FEF40000      32K r-x--  /lib/libaio.so.1
FEF58000       8K rwx--  /lib/libaio.so.1
FEF60000      40K r-x--  /usr/sfw/lib/libgcc_s.so.1
FEF78000       8K rwx--  /usr/sfw/lib/libgcc_s.so.1
FEF80000     680K r-x--  /lib/libm.so.2
FF038000      32K rwx--  /lib/libm.so.2
FF050000       8K rwx--
FF060000      48K r-x--  /lib/libsocket.so.1
FF07C000       8K rwx--  /lib/libsocket.so.1
FF090000       8K rwx--
FF0A0000      24K r-x--  /lib/librt.so.1
FF0B6000       8K rwx--  /lib/librt.so.1
FF0C0000       8K r-x--  /lib/libsendfile.so.1
FF0D2000       8K rwx--  /lib/libsendfile.so.1
FF0E0000      16K r-x--  /usr/lib/libmtmalloc.so.1
FF0F4000       8K rwx--  /usr/lib/libmtmalloc.so.1
FF100000     120K r-x--  /opt/apache2/lib/libapr-0.so.0.9.6
FF12C000      16K rwx--  /opt/apache2/lib/libapr-0.so.0.9.6
FF140000     168K r-x--  /opt/apache2/lib/libexpat.so.0.1.0
FF178000       8K rwx--  /opt/apache2/lib/libexpat.so.0.1.0
FF180000    1240K r-x--  /opt/apache2/lib/libcrypto.so.0.9.8
FF2C4000      88K rwx--  /opt/apache2/lib/libcrypto.so.0.9.8
FF2DA000       8K rwx--  /opt/apache2/lib/libcrypto.so.0.9.8
FF2F0000      80K r-x--  /opt/apache2/lib/libaprutil-0.so.0.9.6
FF312000      16K rwx--  /opt/apache2/lib/libaprutil-0.so.0.9.6
FF328000      16K r-x--  /lib/libpthread.so.1
FF330000       8K rwx--
FF340000     232K r-x--  /opt/apache2/lib/libssl.so.0.9.8
FF388000      24K rwx--  /opt/apache2/lib/libssl.so.0.9.8
FF3A0000       8K r-x--  /lib/libdl.so.1
FF3B0000     176K r-x--  /lib/ld.so.1
FF3EC000       8K rwx--  /lib/ld.so.1
FF3EE000       8K rwx--  /lib/ld.so.1
FFBFC000      16K rw---    [ stack ]
 total      6896K
--cut--

Stack dump shows a problem in dump_a_vhost:

--cut--
[root@core {SunOS 5.10} - (via localhost)]
[548] /opt/apache2/conf 48 pstack core
core 'core' of 9410:    /opt/apache2/bin/httpd -S
 000364c4 dump_a_vhost (158c30, ffffe000, 400, 0, 5c800, 15c070) + 8c
 00036d88 ap_fini_vhost_config (74c00, 5c400, a4078, 80, 74c00, 75000) + 7a4
 00035ac4 main     (a20f0, a4078, ffbff8e0, 75e14, 1117e, 0) + 2d0
 00025d94 _start   (0, 0, 0, 0, 0, 0) + 5c
--cut--

I'm using the latest vhost.c from HEAD.  More analysis shows that if ic=0,
dump_a_vhost still has a problem at line 419 of vhost.c, here:

--cut--
if (ic->sar->host_port == 0) {
        buf[len-1] = '*';
    }
--cut--

The following diff prevents the core, but I'm not sure it's correct overall:

--cut--
diff
diff vhost.c vhost.c.2.0.54.orig
1c1,2
< /* Copyright 1999-2004 The Apache Software Foundation
---
> /* Copyright 1999-2005 The Apache Software Foundation or its licensors, as
>  * applicable.
184,187c185
<         if (rv) {
<             return "Cannot not resolve address '0.0.0.0' -- "
<                 "check resolver configuration.";
<         }
---
>         ap_assert(rv == APR_SUCCESS); /* must be bug or out of storage */
192,195c190
<         if (rv) {
<             return "Cannot resolve address '255.255.255.255' -- "
<                 "check resolver configuration.";
<         }
---
>         ap_assert(rv == APR_SUCCESS); /* must be bug or out of storage */
405d399
<        printf("ic %i\n", ic);
464,467c458
<                               // Solaris core is here ... ERROR
<                               // printf("ic %i\n", ic->next);
<                               // only dump_a_vhost if ic->next is valid -jjt
<                               if (ic->next != 0) dump_a_vhost(f, ic);
---
>             dump_a_vhost(f, ic);
--cut--

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org