[urgent] HPUX + PHP3 + ORACLE -> Stronghold core dumps

Santiago Romero sromero@servicom2000.com
Wed, 11 Jul 2001 13:05:26 +0200


 Hi!

 I'm using IMP 2.2.5 with horde 1.2.4, Apache Stronghold 3 (a
 simple Apache 1.3.9+ modssl), PHP 3.0.18 and Oracle.
 
 I have a big problem... browsing Apache-Stronghold's logfiles
 I've noticed LOTS of messages like:

[Mon Jul  9 15:19:43 2001] [notice]
   child pid 28827 exit signal Segmentation fault (11),
   possible coredump in /opt/apli/dintranet/stronghold3/apache_sh3
[Mon Jul  9 15:29:27 2001] [notice]
   child pid 7555 exit signal Segmentation fault (11),
   possible coredump in /opt/apli/dintranet/stronghold3/apache_sh3
(etc etc etc etc)

 No another warnings nor errors, all works perfectly (IMP is working
 fine) except for the above: sometimes an apache child dies. If all
 the apache child would die, I would think it's an Apache problem,
 but this happens only sometines...

 Efectively, the ServerRoot contains a core file (date = the last
 coredump message of the logfile)...

 I saw the following when compiling php3:

+--------------------------------------------------------------------+
| Notice:                                                            |
| If you encounter <defunc> processes when using a local Oracle-DB   |
| please recompile PHP and specify --enable-sigchild when configuring|
| (This problem has been reported un Linux using Oracle >= 8.1.5)    |
+--------------------------------------------------------------------+

 But the processes are not defunc, they just core and disappear, so
 I'm not sure the problem is the above... In fact, i've tested it
 with --enable-sigchild and I get the same results...

 I've noticed the following:
 
 http://www.php.net/bugs.php?id=900
 
 But it's said to be close :?

 When stronghold says "Segmentation fault" I get a Document No Data
 error on the web client...

 I've done a simple debugging of the core dump and I get:

Core was generated by `httpd'.
Program terminated with signal 11, Segmentation fault.

warning: The shared libraries were not privately mapped; setting a
breakpoint in a shared library will not work until you rerun the program.

(gdb) bt
#0  0xc01f2740 in kill () from /usr/lib/libc.2
#1  0x1a15a0 in sig_coredump ()
#2  <signal handler called>
#3  0xcda50 in read_next_token (tcm=0x40049b20, token=0x77ff1eb8, 
    phplval=0x77ff1d58) at token_cache.c:161
#4  0xb2f68 in phplex (phplval=0x77ff1d58) at main.c:488
#5  0xbb9d8 in phpparse () at /usr/lib/bison.simple:432
#6  0xb5974 in php3_parse (yyin=0x40113c98) at main.c:1564
#7  0xb5ed8 in apache_php3_module_main (r=0x400cd840, fd=26,
    display_source_mode=0, preprocessed=0) at main.c:1929
#8  0xb18a4 in send_php3 ()
#9  0xb1970 in send_parsed_php3 ()
#10 0x197204 in ap_invoke_handler ()
#11 0x1ab36c in process_request_internal ()
#12 0x1ab3ec in ap_process_request ()
#13 0x1a2ff8 in child_main ()
#14 0x1a3254 in make_child ()
#15 0x1a35b8 in perform_idle_server_maintenance ()
#16 0x1a3b78 in standalone_main ()
#17 0x1a45c8 in main ()

 The line 161 of php3/token_cache.c is:

GLOBAL(tc)->tokens[GLOBAL(tc)->count] = next_token;

 I have no idea of what's happening! I firstly thought it was
 an HPUX + oracle related problem, but I also had the same problem
 on a Linux machine with postgresql + oracle...

 It's clear that is a bug cause by PHP3 interpretation of the
 webmail code... Surely is not an IMP bug, but maybe anyone here
 as an idea to solve this... Maybe PHP4 solves this? 

 thanks a lot for any help.

 
-- 
Santiago Romero
Departamento de Sistemas
sromero@servicom2000.com

Av. Primado Reig 189, entlo
46020 Valencia - Spain
Telf. (+34) 96 332 12 00
Fax. (+34) 96 332 12 01
http://www.servicom2000.com