Re: ERROR: invalid memory alloc request size <a_big_number_here>

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Matteo Beccati <php(at)beccati(dot)com>, Martijn van Oosterhout <kleptog(at)svana(dot)org>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: ERROR: invalid memory alloc request size <a_big_number_here>
Date: 2005-10-27 16:08:47
Message-ID: 19645.1130429327@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> writes:
> Tom Lane wrote:
>> I don't see any easy way to fix this except by introducing a lot more
>> locking than is there now --- ie, holding the MultiXactGenLock until the
>> new mxact's starting offset has been written to disk. Any better ideas?

> Well, it isn't a very good solution because it requires us to retain the
> MultiXactGenLock past a XLogInsert and some I/O on SLRU pages.

Yeah :-(. If MultiXactGenLock wasn't a bottleneck before, it will soon
become one.

> I confess being attracted to Martijn's idea of looping until the correct
> answer is obtained. I don't think it's even too difficult to implement.
> But I wonder if there's some hidden pitfall.

I've been looking at that and I think it can work. The key point is
that GetNewMultiXactId() does guarantee that space has been allocated
for the new mxact's offset before it releases the lock (else we'd risk
trying to read a nonexistent slru page when we fetch the offset in
GetMultiXactIdMembers). And we are careful to zero out newly allocated
space. So it should be safe to assume that the offset will be zero if
it hasn't been initialized yet. So we could loop if we see zero.

We'd have to make sure zero is never the *correct* value of the offset,
but that just means wasting one word, which seems no problem.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Matteo Beccati 2005-10-27 16:16:24 Re: ERROR: invalid memory alloc request size <a_big_number_here>
Previous Message Andrew Dunstan 2005-10-27 16:08:05 Re: Ideas for easier debugging of backend problems