ID: 14529
Updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
Status: Open
Bug Type: Output Control
Operating System: Linux RH 7.2
PHP Version: 4.1.2
New Comment:
I've been seeing the same thing in 4.1.2. In some cases, it partially
displays pages. In others (I think
this may be related), it doesn't acknowledge a POST until it's been
submitted multiple times (3 or 4
generally). Both behaviors are very inconsistent (they happen
frequently on a site with moderate use, but I
can't reproduce them).
Here's a backtrace:
Program received signal SIGSEGV, Segmentation fault.
0x402ad693 in _zend_is_inconsistent (ht=0x5a5a5a5a,
file=0x403fcb84 "zend_hash.c", line=975) at zend_hash.c:84
84 if (ht->inconsistent==HT_OK) {
(gdb) bt
#0 0x402ad693 in _zend_is_inconsistent (ht=0x5a5a5a5a,
file=0x403fcb84 "�
>���>����\025?��G?F?����k?l?\205uTv���?��Uv���?�v�v�?��������x@z@u@��v@w@�����@�@�@���@\017y����\204A\205A\203A���A�A�A��������UB��PBLBHB��SB��WBTBNBJBQB����IBKBcB�����B�B�B�������|�|����e~N~\027C��\026C����cC����\202\177��{C|C��"...,
line=975) at zend_hash.c:84
#1 0x4046b258 in ?? () from /usr/local/apache/libexec/libphp4.so
#2 0x402aff9f in zend_hash_internal_pointer_reset_ex (ht=0x5a5a5a5a,
pos=0xbffff090) at zend_hash.c:975
First symbol in segment of executable not a source symbol
Previous Comments:
------------------------------------------------------------------------
[2002-02-28 17:15:48] [EMAIL PROTECTED]
Regarding the configure line and your MySQL problems. You should NEVER
(okay this is my opinion) use the bundled MySQL libs. On your
configure line you should do
--with-mysql=/usr | --with-mysql=/usr/local
Just depends on where it put your libs, which you can find like so
[root@somemachine /]# ldconfig -p | grep mysql
libmysqlclient.so.10 (libc6) =>
/usr/local/lib/mysql/libmysqlclient.so.10
libmysqlclient.so (libc6) =>
/usr/local/lib/mysql/libmysqlclient.so
I think the RPM puts it in /usr.
-Chris
------------------------------------------------------------------------
[2002-02-28 16:27:48] [EMAIL PROTECTED]
We are getting closer, I've got a small team of people at this end
working on solving this bug and are now trying to dedicate much more
time and money into getting this bug solved! (Our business success
depends on it) The problem, we only know PHP programming well and are
weaker in the server end of things (I'm the only one with some Linux
knowledge) so we need your help to solve this. Here is a summary of
all things done so far to narrow this down (much already due to your
help). We've seperated everything into sections below.
PROBLEM:
While running some more complex PHP scripts they will not work on
anything newer than 4.0.6 but works 100% on 4.0 -> 4.0.6. The page
simply stops displaying part ways through a script (usually right in
the middle of an echo statement or between echo statements). The
script seemed to finish commands past the point of where it stopped but
is only known through the sessions (seeing nothing else is being
displayed to screen) But, we've discovered when this crash happens
where it has been giving us problems as well so we can not confirm this
anymore.
APACHE ERROR_LOG:
When a page is loaded with my problem scripts I get either 1 or 2
errors in my apache error_log:
[date] [notice] child pid #### exit signal Segmentation fault (11)
(if two errors the second is the same except different pid number)
SCRIPTS CAUSING CRASHES:
These scripts that cause the problems have been in development for
almost 3 years now and are fairly complex. Not all scripts give me
hassles, but from the tests I have done, it appears only scripts that
have sessions AND use fairly large hashes (passed into and out from
sessions via serialize() functions) is where I have problems. Even
complex or large scripts without this in it seem to run fine. All
scripts run fine in PHP versions 4.0.6 or older but not since 4.1.0 or
newer (up to 4.2.2)
PHP compiling configurations:
Have tried compiling with various combinations of options trying to
narrow down if a particular option is what is causing the problems. So
far I can not find anything consistent.
GDB RESULTS:
You gave me the link to the generating bug-traces and I'm having
problems getting it to run apache properly.
I could not find a core file on my server. (Apache isn't generating
them, or I simply can not find them). So I've been using your
suggested method of running the script through gdb itself. Here is
what I've done so far.
Stopped the apache server (tested going to web page and confirmed it
was down), I then typed:
gdb /usr/sbin/httpd
run -X (from inside the gdb prompt)
It then says it's starting /usr/sbin/httpd with a new thread and then
starts a new blank line (while it's waiting for an apache crash
signal).
If at this point I use my browser and go to plain html web page it
works (so that tells me the apache server is running again), BUT if I
go to a php page, I get a page not available error. This means I am
unable to load the pages that will make apache crash.
What am I doing wrong to get apache running with PHP through the gdb?
Also, once httpd is started through gdb, how do I stop it and exit gdb
- I can CNTL-C but apache keeps running and I can't find the process to
kill it. There must be a cleaner way.
------------------------------------------------------------------------
[2002-02-18 13:29:41] [EMAIL PROTECTED]
I think i had something similar happen to me. It would just stop
printing to the screen and either spit out crazy characters or stop
altogether.
I commented out every line and brought it back one by one until i
located the problem. Although i'm still not exactly sure what's going
on I might have a solution. (worked in my case) I put a flush() every
now and then. It seemed to fix the problem.
------------------------------------------------------------------------
[2002-02-15 20:23:31] [EMAIL PROTECTED]
I've followed the instructions on the gdb backtrace page but I can not
find a core file anywhere on the site. When I tried running httpd -X
in the gdb itself I can not access the page.
I'm using RedHat 7.2 on my test server. I ran the command (to test
it)
/usr/sbin/httpd -X
and it starts fine and no prompt comes back (which I think is normal).
The moment I open a webpage it returns the line:
Segmentation fault
and then goes back to the command prompt.
So this would tell me I found the right command line to run but when I
try:
gdb /usr/sbin/httpd
run -X (from inside the gdb prompt)
it says starting new thread and then locks up.
If I try opening a web page it comes up as not found (just like it does
when the httpd server is not running at all).
Any tips on what I'm doing wrong. At least I've finally confirmed it
is PHP crashing. I've tried compiling with various options enabled or
disabled. I've got the --enable-debug take and I did not set the
--enable-trans-sid this time.
Thanks
------------------------------------------------------------------------
[2002-02-05 20:37:39] [EMAIL PROTECTED]
To properly diagnose this bug, we need a backtrace to see what is
happening behind the scenes. To find out how to generate a backtrace,
please read http://bugs.php.net/bugs-generating-backtrace.php
Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open".
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/14529
--
Edit this bug report at http://bugs.php.net/?id=14529&edit=1