You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Miroslav Zubcic <mv...@crol.cz> on 2001/04/05 16:30:05 UTC

general/7525: Apache SEGFAULTS when started (see below)

>Number:         7525
>Category:       general
>Synopsis:       Apache SEGFAULTS when started (see below)
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    apache
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Thu Apr 05 07:40:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     mvz@crol.cz
>Release:        2.0.16
>Organization:
apache
>Environment:
OS: Linux (RedBug 7.0)
Kernel: linux-2.4.3
glibc: 2.2
gcc: 2.96
CFLAGS: "-g" (for second time - eh :-) ...)
ld: GNU ld 2.10.90

Apache compile-time configuration:
---------------------------------------------------------------------

./configure --prefix=/usr/demo/apache --with-libtool --enable-auth-db -enable-auth-digest --enable-auth-anon --enable-echo --enable-dav-fs --enable-dav --enable-ext-filter --enable-generic-hook-export --enable-generic-hook-import --enable-optional-fn-import --enable-optional-fn-export --enable-speling --enable-rewrite --enable-vhost-alias --enable-so --with-ssl=/usr/include --enable-info --enable-suexec --enable-cgi --enable-cgid --enable-shared --with-gnu-ld --enable-mods-shared="access dav echo cgi info status suexec mime alias actions asis auth auth_db auth_ldap autoindex bandwidth cern_meta define digest dir env example expires headers imap include log_agent log_config log_refer mime_magic mmap_static negotiation put rewrite setenvif speling status throttle unique_id userdir usertrack vhost_alias auth_anon generic_hook_export generic_hook_import optional_fn_import optional_fn_export dav_fs auth_digest file_cache ext_filter" ; make
------------------------------------------------------------------------------

ldd /usr/demo/apache/bin/httpd:

        libnsl.so.1 => /lib/libnsl.so.1 (0x40022000)
        libdb-3.1.so => /lib/libdb-3.1.so (0x40039000)
        libm.so.6 => /lib/libm.so.6 (0x400b5000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x400d4000)
        libdl.so.2 => /lib/libdl.so.2 (0x40103000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x40106000)
        libc.so.6 => /lib/libc.so.6 (0x4011c000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
>Description:
GNU gdb 5.0rh-3 Red Hat Linux 7.1
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
Core was generated by `/usr/demos/apache/bin/httpd'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libdb-3.1.so...done.
Loaded symbols for /lib/libdb-3.1.so
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libcrypt.so.1...done.
Loaded symbols for /lib/libcrypt.so.1
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/libpthread.so.0...done.warning: Unable to set global thread event mask: generic error
[New Thread 1024 (LWP 16407)]
Error while reading shared library symbols:
Cannot enable thread event reporting for Thread 1024 (LWP 16407): generic error
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /usr/demos/apache/modules/mod_vhost_alias.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_vhost_alias.so
Reading symbols from /usr/demos/apache/modules/mod_env.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_env.so
Reading symbols from /usr/demos/apache/modules/mod_log_config.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_log_config.so
Reading symbols from /usr/demos/apache/modules/mod_mime.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_mime.so
Reading symbols from /usr/demos/apache/modules/mod_negotiation.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_negotiation.so
Reading symbols from /usr/demos/apache/modules/mod_status.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_status.so
Reading symbols from /usr/demos/apache/modules/mod_info.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_info.so
Reading symbols from /usr/demos/apache/modules/mod_include.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_include.so
Reading symbols from /usr/demos/apache/modules/mod_autoindex.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_autoindex.so
Reading symbols from /usr/demos/apache/modules/mod_dir.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_dir.so
Reading symbols from /usr/demos/apache/modules/mod_cgi.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_cgi.so
Reading symbols from /usr/demos/apache/modules/mod_asis.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_asis.so
Reading symbols from /usr/demos/apache/modules/mod_imap.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_imap.so
Reading symbols from /usr/demos/apache/modules/mod_actions.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_actions.so
Reading symbols from /usr/demos/apache/modules/mod_userdir.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_userdir.so
Reading symbols from /usr/demos/apache/modules/mod_alias.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_alias.so
Reading symbols from /usr/demos/apache/modules/mod_rewrite.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_rewrite.so
Reading symbols from /usr/demos/apache/modules/mod_access.so...done.

Loaded symbols for /usr/demos/apache/modules/mod_access.so
Reading symbols from /usr/demos/apache/modules/mod_auth.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_auth.so
Reading symbols from /usr/demos/apache/modules/mod_auth_anon.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_auth_anon.so
Reading symbols from /usr/demos/apache/modules/mod_auth_db.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_auth_db.so
Reading symbols from /usr/demos/apache/modules/mod_expires.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_expires.so
Reading symbols from /usr/demos/apache/modules/mod_headers.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_headers.so
Reading symbols from /usr/demos/apache/modules/mod_setenvif.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_setenvif.so
Reading symbols from /usr/demos/apache/modules/mod_dav.so...done.
Loaded symbols for /usr/demos/apache/modules/mod_dav.so
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Reading symbols from /lib/libnss_dns.so.2...done.
Loaded symbols for /lib/libnss_dns.so.2
Reading symbols from /lib/libresolv.so.2...done.
Loaded symbols for /lib/libresolv.so.2
#0  0x080b1373 in apr_hash_get (ht=Error accessing memory address 0x82cfd3a5: No such process.
) at apr_hash.c:266
266         for (hep = &ht->array[hash & ht->max], he = *hep;(gdb) where
#0  0x080b1373 in apr_hash_get (ht=Error accessing memory address 0x82cfd3a5: No such process.
) at apr_hash.c:266
#1  0x40236660 in __morecore () from /lib/libc.so.6
Error accessing memory address 0x82cfd365: No such process.
(gdb)q

>How-To-Repeat:
Don't know... try to compile that version of apache on same configuration with
same options... ?
>Fix:
Sorry, I'm not C programmer, but I'm very good bug reporter. :-)

Maybe pthread implementation on Linux?

Sendmail people was thankful for my trace of problem in their 8.12.0.Beta5, and
their fixed bug - it was similar to this - imposibility to acces some memory
segment.

Good Luck guys!

-- 
Miroslav
>Release-Note:
>Audit-Trail:
>Unformatted:
 [In order for any reply to be added to the PR database, you need]
 [to include <ap...@Apache.Org> in the Cc line and make sure the]
 [subject line starts with the report component and number, with ]
 [or without any 'Re:' prefixes (such as "general/1098:" or      ]
 ["Re: general/1098:").  If the subject doesn't match this       ]
 [pattern, your message will be misfiled and ignored.  The       ]
 ["apbugs" address is not added to the Cc line of messages from  ]
 [the database automatically because of the potential for mail   ]
 [loops.  If you do not include this Cc, your reply may be ig-   ]
 [nored unless you are responding to an explicit request from a  ]
 [developer.  Reply only with text; DO NOT SEND ATTACHMENTS!     ]
 
 


Re: general/7525: Apache SEGFAULTS when started (see below)

Posted by "William A. Rowe, Jr." <ad...@rowe-clan.net>.
> >Release:        2.0.16
> >Environment:
> OS: Linux (RedBug 7.0)
> Kernel: linux-2.4.3
> glibc: 2.2
> gcc: 2.96
> CFLAGS: "-g" (for second time - eh :-) ...)
> ld: GNU ld 2.10.90

This looks _very_ familiar...

> #0  0x080b1373 in apr_hash_get (ht=Error accessing memory address 0x82cfd3a5: No such process.
> ) at apr_hash.c:266
> 266         for (hep = &ht->array[hash & ht->max], he = *hep;(gdb) where
> #0  0x080b1373 in apr_hash_get (ht=Error accessing memory address 0x82cfd3a5: No such process.
> ) at apr_hash.c:266
> #1  0x40236660 in __morecore () from /lib/libc.so.6
> Error accessing memory address 0x82cfd365: No such process.
> (gdb)q
> 
> >How-To-Repeat:
> Don't know... try to compile that version of apache on same configuration with
> same options... ?
> >Fix:
> Sorry, I'm not C programmer, but I'm very good bug reporter. :-)
> 
> Maybe pthread implementation on Linux?


apr_hash gets me, we use that code within the apr_register_optional_fn code, and perhaps
we have trashed the stack on linux.

The bugfix I committed last night is very win32 specific, though.  It resolved the ambiguity
of taking the apr_register_optional_fn 's address (which was stdcall) and reforming a fn
pointer (which was cdecl).  By changing apr_register_optional_fn() to _NONSTD, we walk away
from this problem.

But there may be other platforms where this behavior is simply evil.  Any platform that
encodes call/return information _might_ have trouble doing so to the optional fn pointer.

And one last note, Ben acks the problem but I don't see a reminder in status.  It is very,
very WRONG to use a void* as a void (*)(void)!!!  And the void* is what we stuff into the
hash.  Now I wouldn't be against an apr_anyvoid_t that is the minimum size of either a
data or fn pointer, to retain the ambiguity.  That might not be too ethical either, but
at least we won't overflow on the odder platforms.

Anyone have a RedBug 7.0 linux-2.4.3 glibc 2.2 that could replicate?

Bill