Re: PostgreSQL / PHP Overrun Error

Поиск
Список
Период
Сортировка
От Mike Rogers
Тема Re: PostgreSQL / PHP Overrun Error
Дата
Msg-id OE58mXL3zF6GEe6zLuy00002aed@hotmail.com
обсуждение исходный текст
Ответ на Re: PostgreSQL / PHP Overrun Error  ("Brent R. Matzelle" <bmatzelle@yahoo.com>)
Список pgsql-php
As you can see here, I commented out the efree line and instead just set it
to none.  This means that PHP is simply freeing it in it's own memory-leak
cleanup.  It means the logs gets:
    pgsql.c(170) :  Freeing 0x085D3AAC (62 bytes),
script=/path/to/index.html
    Last leak repeated 7 times
instead of segmentation faulting.

If you efree() something which was not emalloc()'ed nor estrdup()'ed you
will probably get a segmentation fault.  That's my understanding of efree()-
I'd say that's probably be what's going on... So by me just NULL'ing
PGG(last_notice) instead of efree'ing it, it means that should it not have
been emalloc'd or estrdup'd then it won't crash miserably... And it's not.

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) = NULL;
                }
                PGG(last_notice) = estrdup(message);
        }
}

So yes-  I wish there was a real solution rather than relying on php's
internal cleanup mechanism... But I will happily start from here as a point
to move from...  I will send patches once i get the problem completely
fixed- in a better solution than this trial.

--
Mike

----- Original Message -----
From: "Brent R. Matzelle" <bmatzelle@yahoo.com>
To: "Mike Rogers" <temp6453@hotmail.com>; <pgsql-php@postgresql.org>
Sent: Wednesday, September 26, 2001 5:05 PM
Subject: Re: [PHP] PostgreSQL / PHP Overrun Error


> --- Mike Rogers <temp6453@hotmail.com> wrote:
> > I am currently running PHP-4.0.6 (with the memory leak patch
> > as posted to
> > correct a problem in this release [it is on the download
> > page]).
> > The script that causes them mostly "includes" other scripts to
> > do it's job.
> > The home page uses some of the scripts that it uses and I've
> > seen the errors
> > there too.  There errors seem infrequent, and just occur
> > randomly... Maybe
> > every 2-10 minutes on a reasonably high-volume server.  The
> > commands that
> > seem to be getting executed by the script [it's not my
> > script]:
> >     pg_exec
> >     pg_errormessage
> >     pg_fetch_array
> >     pg_errormessage
> >     pg_freeresult
> >     pg_fieldname
> >     pg_fieldtype
> >     pg_fieldsize
> >     pg_cmdtuples
> >     pg_numrows
> >     pg_numfields
>
> All of those functions are okay to use except that I would
> commment out the calls to pg_freeresult().  I have seen various
> older bug reports that have noted that this function can be
> troublesome.  Plus, PHP frees this memory automatically whether
> you call this function or not.  I rarely use this function,
> unless I am making queries that return enormous amounts of data,
> and even then I really do not require it.
>
> Last note, the PHP debug information that you gathered seemed to
> be cleaning up the pg_notice memory if I was not mistaken.  I
> would not be surprised if this function was called by
> pg_freeresult.
>
> Brent
>
> __________________________________________________
> Do You Yahoo!?
> Get email alerts & NEW webcam video instant messaging with Yahoo!
Messenger. http://im.yahoo.com
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>

В списке pgsql-php по дате отправления:

Предыдущее
От: "Mike Rogers"
Дата:
Сообщение: Re: PostgreSQL / PHP Overrun Error
Следующее
От: roypgsqlphp@xemaps.com
Дата:
Сообщение: max length of varchar returned from a function