Bug 19820

Summary: mod_auth_ldap caused signal bus error (10) on Solaris
Product: Apache httpd-2 Reporter: Timothy Arnold <timothy.arnold>
Component: mod_auth_ldapAssignee: Apache HTTPD Bugs Mailing List <bugs>
Status: RESOLVED DUPLICATE    
Severity: major    
Priority: P3    
Version: 2.0.45   
Target Milestone: ---   
Hardware: Sun   
OS: Solaris   

Description Timothy Arnold 2003-05-10 10:42:40 UTC
When trying to authenticate using mod_auth_ldap in Apache 2.0.45 it causes the 
child pid to die and returns a signal bus error (10) in the error_log

[Fri May 09 15:57:54 2003] [notice] child pid 1402 exit signal Bus error (10)
[Fri May 09 15:57:54 2003] [notice] child pid 1401 exit signal Bus error (10)

For informational purposes, the build process was as follows:

1. Installed Solaris 8 and added recommended patch cluster (v.19)
2. Built BerkeleyDB 4.1.25 using the following commands

$ cd db-4.1.25/build_unix
$ ../dist/configure
$ make
$ make install

3. I then built openldap 2.1.17
$ cd openldap-2.1.17
$ CPPFLAGS="-I/usr/local/BerkeleyDB.4.1/include" LDFALGS="-
L/usr/local/BerkeleyDB.4.1/lib" ./configure --prefix=/usr/local/openldap-2.1.17
$ make
$ make install

4. I built apache_2.0.45 using the following configure commands:

./configure \
--prefix=/usr/local/apache_2.0.45 \
--with-mpm=worker \
--enable-dav=static \
--enable-dav_fs=static \
--with-ldap=yes \
--with-ldap-include=/usr/local/openldap-2.1.17/include \
--with-ldap-lib=/usr/local/openldap-2.1.17/lib \
--enable-ldap=static \
--enable-auth_ldap=static \

Once I have successfully built apache, I use the following virtual host:

<VirtualHost *:8080>
        ServerAdmin admin@ngfl.gov.uk
        DocumentRoot /usr/local/apache/htdocs
        ServerName testserver.mydomain.com

                
        <Directory /usr/local/apache/htdocs>

        Options FollowSymLinks Indexes
        AuthName "test mendeleev"
        AuthType Basic
        
        AuthLDAPEnabled On
        AuthLDAPURL ldap://doesntexist.ngfl.gov.uk/o=ngfl?uid?one
        AuthLDAPAuthoritative On

        require valid-user
        </Directory>
</VirtualHost>


When I try to access the page, it will display the standard login box and when 
i enter in any details it will return the signal bus error.

I have tried the above on Redhat Linux 9 and it works fine. It would appear to 
be a problem in Solaris 8.

I am more than willing to run debug if someone can tell me how (im not a 
developer!)

Thanks,
Tim.
Comment 1 Jeff Trawick 2003-05-10 12:27:12 UTC
Can you get a coredump and backtrace?

Assuming you're starting Apache as root, here is the normal mumbo-jumbo on Solaris:
1) use Apache CoredumpDirectory directive to point to directory that web user id
can write to
2) use Solaris coreadm command to allow setuid programs to write coredumps
3) recreate problem, then use Solaris pstack command against coredump to get
backtraces, then post the backtraces to the PR

Thanks!
Comment 2 Timothy Arnold 2003-05-12 08:27:47 UTC
Hi,

Here is the backtrace you have requested. The process ID 1780 matches the signal bus 
error reported in the apache logs.

hth
Tim.

core 'core' of 1780:	/usr/local/apache_2.0.45/bin/httpd -k start
-----------------  lwp# 4 / thread# 6  --------------------
 0002a384 util_ald_create_cache (bd400, 29cc0, 29cd4, 29a70, 29b80, fe8058d4) + 
180
 0002a894 util_ald_create_caches (c9840, 1577f8, 11e398, fef20398, 11e368, bb000) + 
28
 00029318 util_ldap_cache_checkuserid (0, 11e2d8, 1, 157840, 0, 157848) + 468
 0002b2c8 mod_auth_ldap_check_user_id (fe805a34, 8f800, ffffdfe8, 2, 1, 159e60) + 
190
 0008353c ap_process_request_internal (19c4e8, 0, ffffffff, fee70020, fee70020, 0) + 340
 00039b48 ap_process_request (19c4e8, b9800, 4, 19c4e8, 1905f0, a1f28) + e0
 00034bc0 ap_process_http_connection (190598, 15a118, bafb0, 1, 34ac8, 1) + f8
 0007791c ap_process_connection (190598, 0, 1904b8, 1, 190590, 15db68) + f0
 0006ab70 worker_thread (190598, 1, bb400, bb400, ba000, bb400) + 228
 ff2542d0 dummy_worker (11fe10, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11fe10, 0, 0, 0, 0, 0) + 40
-----------------  lwp# 1 / thread# 1  --------------------
 ff01e52c _read    (1, 69cb4, 0, fef1e000, 69c00, 110c65) + c
 00069490 child_main (b8800, 69064, fef1ef98, 0, 0, fef1efb8) + 3a4
 0006859c make_child (0, 0, 6, fee70020, 0, 0) + 84
 0006800c ap_mpm_run (b8800, 103a50, bb400, c8518, 7c, 1c8) + 424
 00070ce0 main     (c39d0, c5958, ffbefa0c, bb060, 0, 0) + 878
 00027708 _start   (0, 0, 0, 0, 0, 0) + 5c
-----------------  lwp# 2 / thread# 2  --------------------
 ff01ea6c _signotifywait (fef1e000, ff245ec0, ffbef6ec, 8e5fc04, 0, ff3e7d60) + 8
 fef02030 thr_yield (0, 0, 0, 0, 0, 0) + 8c
-----------------  lwp# 3 / thread# 30  --------------------
 ff01bd40 _so_accept (fc407bec, c3d40, 18e408, 0, 11fd10, 11000) + 8
 00086ec4 unixd_accept (fc407c64, c3cd8, 18e408, 7ffffffe, 0, b8c00) + 10
 0006a3c8 listener_thread (c3cd8, 0, 4c00, 86eb4, 0, bb400) + 16c
 ff2542d0 dummy_worker (120110, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (120110, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 3  --------------------
 feefddbc _reap_wait (fef229e0, 20520, 0, fef1e000, 0, 0) + 38
 feefdb14 _reaper  (fef1ee30, fef24740, fef229e0, fef1ee08, 1, fe401000) + 38
 fef0b728 _thread_start (0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 4  --------------------
 fef0b6e0 _restorefsr (11fb10, 0, 0, 0, 0, 0) + 8
--------------------------  thread# 5  --------------------
 feef826c cond_wait (fe909d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, fee70020, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fe909c8c, fe909c88, 0, 18e518, 15bb60) + a0
 0006aa18 worker_thread (b8800, 0, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11fdf0, feee5d10, 1, fef2ad8c, 0, 2) + c
 fef0b728 _thread_start (11fdf0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 7  --------------------
 feef826c cond_wait (fe705d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fe705c8c, fe705c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 2, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11fe30, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11fe30, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 8  --------------------
 feef826c cond_wait (fe603d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fe603c8c, fe603c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 3, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11fe50, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11fe50, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 9  --------------------
 feef826c cond_wait (fe501d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fe501c8c, fe501c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 4, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11fe70, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11fe70, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 10  --------------------
 feef826c cond_wait (fe00fd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fe00fc8c, fe00fc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 5, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11fe90, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11fe90, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 11  --------------------
 feef826c cond_wait (fdf0dd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fdf0dc8c, fdf0dc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 6, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11feb0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11feb0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 12  --------------------
 feef826c cond_wait (fde0bd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fde0bc8c, fde0bc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 7, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11fed0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11fed0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 13  --------------------
 feef826c cond_wait (fdd09d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fdd09c8c, fdd09c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 8, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11fef0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11fef0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 14  --------------------
 feef826c cond_wait (fdc07d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fdc07c8c, fdc07c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 9, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11ff10, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11ff10, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 15  --------------------
 feef826c cond_wait (fdb05d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fdb05c8c, fdb05c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, a, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11ff30, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11ff30, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 16  --------------------
 feef826c cond_wait (fda03d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fda03c8c, fda03c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, b, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11ff50, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11ff50, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 17  --------------------
 feef826c cond_wait (fd901d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fd901c8c, fd901c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, c, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11ff70, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11ff70, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 18  --------------------
 feef826c cond_wait (fd40fd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fd40fc8c, fd40fc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, d, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11ff90, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11ff90, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 19  --------------------
 feef826c cond_wait (fd30dd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fd30dc8c, fd30dc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, e, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11ffb0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11ffb0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 20  --------------------
 feef826c cond_wait (fd20bd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fd20bc8c, fd20bc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, f, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11ffd0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11ffd0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 21  --------------------
 feef826c cond_wait (fd109d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fd109c8c, fd109c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 10, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (11fff0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (11fff0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 22  --------------------
 feef826c cond_wait (fd007d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fd007c8c, fd007c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 11, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (120010, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (120010, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 23  --------------------
 feef826c cond_wait (fcf05d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fcf05c8c, fcf05c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 12, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (120030, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (120030, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 24  --------------------
 feef826c cond_wait (fce03d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fce03c8c, fce03c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 13, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (120050, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (120050, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 25  --------------------
 feef826c cond_wait (fcd01d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fcd01c8c, fcd01c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 14, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (120070, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (120070, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 26  --------------------
 feef826c cond_wait (fc80fd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fc80fc8c, fc80fc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 15, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (120090, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (120090, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 27  --------------------
 feef826c cond_wait (fc70dd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fc70dc8c, fc70dc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 16, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (1200b0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (1200b0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 28  --------------------
 feef826c cond_wait (fc60bd70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fc60bc8c, fc60bc88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 17, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (1200d0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (1200d0, 0, 0, 0, 0, 0) + 40
--------------------------  thread# 29  --------------------
 feef826c cond_wait (fc509d70, 0, 0, fef1e000, 0, 11fb50) + 13c
 feef8110 pthread_cond_wait (11fb90, 11fb50, 0, 11fb50, 0, 0) + 8
 0006adb4 ap_queue_pop (11fb30, fc509c8c, fc509c88, 0, 0, 0) + a0
 0006aa18 worker_thread (b8800, 18, bb400, bb400, ba000, bb400) + d0
 ff2542d0 dummy_worker (1200f0, feee5d10, 0, 5, 1, fe401000) + c
 fef0b728 _thread_start (1200f0, 0, 0, 0, 0, 0) + 40
Comment 3 Timothy Arnold 2003-05-14 12:35:55 UTC
I have tested the same server configuration and it returns the same on Solaris 
9. I have successfully built and used the same configuration on Redhat Linux v9 
and works fine.
Comment 4 Joe Orton 2003-05-16 15:28:54 UTC
util_ldap_cache_mgr.c is buggy:

return (void *)apr_rmm_addr_get(util_ldap_rmm, apr_rmm_calloc(util_ldap_rmm, size));

needs to check for apr_rmm_calloc returning 0 when the shm segment is full,
likewise in the _strdup case.  The LDAP caching code is likely to die horribly
once the cache fills up.
Comment 5 Erik Abele 2003-05-16 17:59:38 UTC

*** This bug has been marked as a duplicate of 18756 ***