Greetings everyone,

I've been having a very frustrating problem over the past few months that
I've ***finally*** tracked down the "cause" of....

Any questions/comments/thoughts/ideas you can provide would be *greatly*
appreciated.

Symptoms:
- IE, Opera, Lynx all report "page cannot be displayed" and/or "server
error" about "half the time"....
- NS has no problems at all.
- Apache error.log shows child (PID) seg faulted.

Problem post analysis:
- The Apache processes can accept and successfully serve one connection from
a client.  The next connection results in the Apache child process seg
faulting, the error getting logged in error.log, nothing gets reported in
access.log, and the Apache parent process respawns a new child.
- The newly spawned child will accept and serve one connection from a client
before also segfaulting.

I've eliminated every possibility I could think of while troubleshooting
this.  i.e. it's not SSL, it's not PHP itself, it's not Apache itself.  It's
the pg_pconnect() function.

Throughout my troubleshooting, I came upon it by accident, really, that I
discovered all my problems went away when I replaced the pg_pconnect()
function with the (almost deprecated according to the docs) pg_connect()
function.

In troubleshooting this, I created a shell script that continuously loads
various pages from the site (using Lynx -dump -mime_header <url>), counts
the iterations, and bails as soon as a page fails to load.  Running this
against plain HTML files, PHP scripts (i.e. that simply echo something or
provide phpinfo(), etc.), over SSL or not all work just fine.  (>15,000
loads in each case without fault.)

As soon as I try accessing a PHP script that includes the pg_pconnect()
function, it dies almost immediately.  If I stop/start Apache right before
trying this, I'll get X successful loads (where X = Apache's 'StartServers'
property).   After that, I'll get a continuous mixture of successful and
failed loads from then on....

So, let me repeat here.... As soon as I switched from pg_pconnect() to
pg_connect(), everything worked perfectly after that.  (i.e. >15000 loads
without an error.)

More info:
- My platform is up-to-date Debian GNU/Linux (sid) (Apache 1.3.23, PHP
4.1.1, PostgreSQL 7.1.3, etc.)
- As above, this is *not* browser specific.  (Found a *lot* of google hits
with people having problems with IE and SSL and seg faults, etc.  Completely
unrelated.)
- Note from above, though, that NS is unaffected by this problem.  It
*never* has a problem.  My assumption is that NS will simply silently retry
(several times) if the connection fails for some reason, until it does get a
valid response from the server....   (Kudos!!!  ;-)

So, any thoughts?  Comments?  Suggestions?

Have I found a bug in pg_pconnect()?   How can I provide more info to track
this down further?

Best regards,
Kevin Traas
Chief Information Officer, Co-founder
Merilus, Inc.     ---=== www.merilus.com  ===---


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to