From: | Geoffrey <esoteric(at)3times25(dot)net> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-general(at)postgresql(dot)org, Terry Lee Tucker <terry(at)leetuckert(dot)net>, John Allgood <john(at)turbocorp(dot)com>, "j(dot) >> \"J(dot) D(dot) Pearson\"" <jpearson(at)turbocorp(dot)com> |
Subject: | Re: backend reset of database |
Date: | 2007-04-10 00:31:42 |
Message-ID: | 461ADAEE.10208@3times25.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Tom Lane wrote:
> Geoffrey <esoteric(at)3times25(dot)net> writes:
>> Tom Lane wrote:
>>> The trace is *really* suspicious given what you say here. I'm inclined
>>> to think that what is really happening is that something is jumping to
>>> never-never land (via a clobbered function pointer or overwriting a
>>> return address on the stack) and it just happens to end up in FileRead.
>>> Unfortunately that guess doesn't provide much help for debugging it :-(
>
>> I just find it hard to believe that an address is getting clobbered or
>> some such thing and we just happen to fall into the very beginning of a
>> function.
>
> Well, this trace doesn't prove any such thing. If it was a wild jump,
> we can surmise that it landed someplace in the first few instructions of
> FileRead (before the call to FileAccess), but there's no proof here that
> it landed on-the-nose at the first instruction.
So you're saying that the debugger will simply point to that function if
the address it 'jumps to' is somewhere in address space of this
function? I don't know the intricacies of the debugger to understand
how all that works. My expectation is that a random address is unlikely
to make any sense to the debugger.
>> I would also have expected that all the parms to the FileRead call would
>> have been garbage, yet that does not seem to be the case:
>
>> #1 0x0814b2e7 in FileRead (file=168481968, buffer=0xbff816ce "", amount=2)
>
> That's actually one of the things I find suspicious: AFAICS all the
> calls to FileRead in the backend (and there aren't many) use a constant
> BLCKSZ value for "amount". So I doubt the 2 is an intentionally passed
> parameter, it's more likely whatever happened to be in the relevant word
> of the stack.
Thanks, that makes sense. Now I've just got to figure out how it's
'getting there' to start with. :)
--
Until later, Geoffrey
Those who would give up essential Liberty, to purchase a little
temporary Safety, deserve neither Liberty nor Safety.
- Benjamin Franklin
From | Date | Subject | |
---|---|---|---|
Next Message | Dhaval Shah | 2007-04-10 01:23:07 | Errors during recovery of a postgres. Need some help understanding them... |
Previous Message | Lorenzo Thurman | 2007-04-10 00:21:37 | Re: NEWBIE: How do I get the oldest date contained in 3 tables |