Re: psql leaking? - Mailing list pgsql-general

From Russ Brown
Subject Re: psql leaking?
Date
Msg-id opsdtnkwy0g2z5qo@relay.plus.net
Whole thread Raw
In response to psql leaking?  ("Russ Brown" <postgres@dot4dot.plus.com>)
Responses Re: psql leaking? - SOLVED
List pgsql-general
Thanks very much for your reply, Daniel.

I'm not a C programmer, so I don't really know anything about the tools
mentioned. I don't seem to get any core file at all when psql is
terminated (checked in the working directory, home directory and temp
directory): I reckon that's probably due to a system setting that disables
core dumps. I don't know what it might be though.

Anyway, I compiled strace and ltrace. ltrace gave no output, but strace
certainly did, and it helped me find a workaround to the problem (though
not a fix).

 From what I can tell (and bearing in mind my lack of knowlege and
experience on this) strace shows that psql opens a number of files, most
of which are libraries. After this it goes into what looks like an
infinite loop with plenty of commands exactly like this:

read(4, "", 131072)                     = 0

Every now and then there are a pair of lines like this (but not exactly
the same values in each case):

brk(0)                                  = 0x808e000
brk(0x80af000)                          = 0x80af000

So I looked at the last sane instructions before the loop, and its'
reading the history file:

open("/home/rbrown/.psql_history", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0600, st_size=384, ...}) = 0
mmap2(NULL, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x403ad000
read(4, "_HiStOrY_V2_\nSET\\040search_path="..., 131072) = 384

So I moved the file away and it I was able to log into psql! Result! And
for the acid test, I quit and connected again. No go, same problem. So I
moved away the file again and it's fine.

So, the problem is the history file, and since I can move the file away
and have exactly the same problem happen again, I'm starting to wonder if
it's not a psql bug. But surely something like this would have happened
before? There must be something on my system that is prompting the unusual
behaviour from psql.

If anyone has any ideas I'll be happy to try them, but in the meantime I
have a workaround so I can get on with things.

Oh, and here's the content of the history file as written by just opening
and closing psql (obtained from cat):

_HiStOrY_V2_
\134l

Thanks again Daniel.

On Sat, 04 Sep 2004 23:03:32 +0200, Daniel Verite
<daniel@manitou-mail.org> wrote:

>      Russ Brown writes
>
>> > I'm suspecting that there's a problem with one of the libraries that
>> > psql uses: I really can't see this being a psql bug as I'd have
>> noticed
>> > it before: there must be something else going on. Trouble is, I don't
>> > know what libraries it uses other than glibc (which I'm currently
>> > recompiling just in case).
>
> libreadline, libtermcap?
>
>> >
>> > I'm at a loss, and can't think of anything else. This has just
>> happened
>> > totally unprompted and without any real clues that I can see.
>
> Some suggestions:
>
> - kill psql when it's errating and examine the stack of the resulting
> core file
> with gdb
>
> - launch psql with strace and see if the output gives any clue.
>
> - ditto with ltrace
>
> Regards,
>



--

  Russell Brown

pgsql-general by date:

Previous
From: Wes
Date:
Subject: Re: How to determine a database is intact?
Next
From: "Russ Brown"
Date:
Subject: Re: psql leaking? - SOLVED