Hello Thanh,

 

This is regarding apache which is not coming up with PHP. If you can give me some suggestions I will move it further.

 

I found that Apache has a DSO(Dynamic Shared Object). Using this DSO it tries to register any third party shared library which has been compiled as a plug in to be used by apache. When I load PHP module then this DSO registers one function to be called at the time of cleanup. During startup Apache runs this cleanup once and in this process when it calls that function(dso_cleanup) which in turn calls dlclose() causes the SIGABRT to be issued because of which Apache aborts.

I am not able to fugure out why at this moment it aborts. One reason can be that handle which is passed in dlclose does not exist. But dlsym suggests that handle exists. Here is the GDB output I got.

 

(gdb) bt

#0  0x0f584430 in __do_global_dtors_aux ()

   from /home/msingh/httpd-2.2.3/usr/local/modules/libphp5.so

#1  0x0f7bb288 in _fini ()

   from /home/msingh/httpd-2.2.3/usr/local/modules/libphp5.so

#2  0x0fb4f170 in _dl_close () from /lib/libc.so.6

#3  0x0fba1fe4 in dlopen () from /lib/libdl.so.2

#4  0x3000ba24 in _dl_rtld_di_serinfo () from /lib/ld.so.1

#5  0x0fba259c in dlerror () from /lib/libdl.so.2

#6  0x0fba2038 in dlclose () from /lib/libdl.so.2

#7  0x0fceb354 in dso_cleanup (thedso=Variable "thedso" is not available.

) at dso/unix/dso.c:72

#8  0x0fcf1004 in run_cleanups (cref=0x100ba100)

    at memory/unix/apr_pools.c:2034

#9  0x0fcf1f4c in apr_pool_clear (pool=0x100ba0f0)

    at memory/unix/apr_pools.c:689

#10 0x1001d890 in main (argc=2, argv=0x7fc39b74) at main.c:667

(gdb) b main.c:667

Breakpoint 2 at 0x1001d888: file main.c, line 667.

(gdb)

 

Thanks and Regards,

Manish