Thread: libpq block allocated before my malloc handler inits?

libpq block allocated before my malloc handler inits?

From
rob
Date:
I am trying to build a small program with libpq as the interface to a
Postgre database.  I am using the most current version.  My program uses
malloc and free hooks to manage memory without having to request memory
from the system all the time.  I expected that the init function
(__malloc_initialize_hook)  would run before anything else, but after
opening a number of connections to the database with PQconnectdb, my
program blows up because of a free which refers to a block of memory
that wasn't allocated using my malloc function.  My program runs without
a hitch if I comment out the PQconnectdb function calls.

Is there something that runs before my malloc init function in libpq?
If there is, is there a way to make it happen afterwards?  Is there a
library interface which doesn't have hidden init functions?



Please reply to me directly as well as CCing to the list; I haven't
subscribed to the list.

Thank you very much for your input,

Rob Stoddard


Re: libpq block allocated before my malloc handler inits?

From
Alvaro Herrera
Date:
rob wrote:

> Is there something that runs before my malloc init function in libpq?
> If there is, is there a way to make it happen afterwards?  Is there a
> library interface which doesn't have hidden init functions?

I don't see anything in our code that would initialize stealthily.
Maybe it's something we're being linked against -- pthread perhaps?
OpenSSL?  Maybe you'd have more luck if you noted what is libpq doing
when this invalid free is called.  Perhaps call abort() and get a stack
trace from the resulting dump.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

Re: libpq block allocated before my malloc handler inits?

From
Russell Smith
Date:
rob wrote:
> I am trying to build a small program with libpq as the interface to a
> Postgre database.  I am using the most current version.  My program
> uses malloc and free hooks to manage memory without having to request
> memory from the system all the time.  I expected that the init
> function (__malloc_initialize_hook)  would run before anything else,
> but after opening a number of connections to the database with
> PQconnectdb, my program blows up because of a free which refers to a
> block of memory that wasn't allocated using my malloc function.  My
> program runs without a hitch if I comment out the PQconnectdb function
> calls.
I've experienced an openSSL, libpq + other library using SSL bug
recently.  Do you get the same crash is you explicitly disable SSL in
the connection string?  sslmode=disable.

Thanks

Russell

Re: libpq block allocated before my malloc handler inits?

From
rob
Date:
All I am doing at the moment is spawning a pool of threads each with
their own database connection.  I am using PQconnectdb to create the
database connection when the offending block is deallocated  (this is
largely to answer the other email I got with regards to this).    I just
tried using sslmode=disable in the connection string, to no avail.   It
still crashes with an invalid free.  Perhaps I should try to compile the
database with no SSL in it at all?   Would that make any difference?

Thanks for the input,

Rob Stoddard


Russell Smith wrote:
> rob wrote:
>
>> I am trying to build a small program with libpq as the interface to a
>> Postgre database.  I am using the most current version.  My program
>> uses malloc and free hooks to manage memory without having to request
>> memory from the system all the time.  I expected that the init
>> function (__malloc_initialize_hook)  would run before anything else,
>> but after opening a number of connections to the database with
>> PQconnectdb, my program blows up because of a free which refers to a
>> block of memory that wasn't allocated using my malloc function.  My
>> program runs without a hitch if I comment out the PQconnectdb function
>> calls.
>>
> I've experienced an openSSL, libpq + other library using SSL bug
> recently.  Do you get the same crash is you explicitly disable SSL in
> the connection string?  sslmode=disable.
>
> Thanks
>
> Russell
>