Re: PostgreSQL / PHP Overrun Error

From: Date: Wed, 26 Sep 2001 19:34:53 +0000
Subject: Re: PostgreSQL / PHP Overrun Error
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-66678@lists.php.net to get a copy of this message
If I'm reading it correctly it actually means that a block allocated in the PostgreSQL extension is being overrun. It doesn't necessarily mean that it's the fault of the PostgresSQL extension. The efree() in debug mode just checks the block its freeing, it sees that the block was overrun and warns about it. It doesn't meant that the efree() is at fault. How short of a reproducing script can you create? Andi At 01:35 PM 9/26/2001 -0300, Mike Rogers wrote:
I have just upgraded to the new PostgreSQL 7.1.3 (from 7.0.3) and have been experiencing a pretty serious problem:
    On one particular page, in what seems to be completely random instances,
I get buffer overruns and either 0-rows or a crashed apache child. Turning on PHP's --enable-debug, I receive the following [in httpd error log]: [Wed Sep 26 06:21:12 2001] Script: '/path/to/script.php' --------------------------------------- pgsql.c(167) : Block 0x086A6DF8 status:
Beginning:      Overrun (magic=0x00000000, expected=0x7312F8DC)
      End:      Unknown
--------------------------------------- Sometimes it will actually crash mid-way (probably overwrote some valuable code): --------------------------------------- pgsql.c(167) : Block 0x08684290 status:
Beginning:      Overrun (magic=0x0000111A, expected=0x7312F8DC)
[Wed Sep 26 09:22:46 2001] [notice] child pid 8710 exit signal Segmentation fault (11) This problem is of great concern to me and I have been working for days trying to debug it myself and find other reports, with little success. The line it claims to be failing on is PHP's ext/pgsql/pgsql.c on line 167 (by what this claims) which is the following function [the efree(PGG(last_notice)) line]. static void _notice_handler(void *arg, const char *message) {
        PGLS_FETCH();
        if (! PGG(ignore_notices)) {
                php_log_err((char *) message);
                if (PGG(last_notice) != NULL) {
                        efree(PGG(last_notice));
                }
                PGG(last_notice) = estrdup(message);
        }
} Can anyone provide further input as to why this is causing problems? The PHP code works sometimes and not others, and it seems to be only that one script, so I do not believe it to be a hardware issue. Any thoughts? I can provide any further system information if needed. I have tried recompiling pgsql, php and apache with different optimizations [including none at all and debug mode on as i have now] with little change in the result. Thanks in advance; -- Mike cc: pgp-db-help; pgp-dev -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net For additional commands, e-mail: php-dev-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net


« previous php.dev (#66678) next »