Re: BUG #13530: sort receives "unexpected out-of-memory situation during sort"
От | Tom Lane |
---|---|
Тема | Re: BUG #13530: sort receives "unexpected out-of-memory situation during sort" |
Дата | |
Msg-id | 6977.1438451753@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: BUG #13530: sort receives "unexpected out-of-memory situation during sort" (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: BUG #13530: sort receives "unexpected out-of-memory situation
during sort"
Re: BUG #13530: sort receives "unexpected out-of-memory situation during sort" |
Список | pgsql-bugs |
I wrote: > brent_despain@selinc.com writes: >> We are occasionally receiving "unexpected out-of-memory situation during >> sort". > Hmm. Looking at the code here, it suddenly strikes me that it's assuming > that LACKMEM() wasn't true to begin with, and that this is not guaranteed, > because we adjust the memory consumption counter *before* we call > puttuple_common. In the light of day that theory doesn't hold up, because if LACKMEM were true on entry (ie, availMem < 0) then we'd compute a grow_ratio less than one, so that the "Must enlarge array by at least one element" check would trigger, and we'd never get to the code that's failing. Another idea that occurred to me is that the "memory chunk overhead won't increase" assumption could fail if sizeof(SortTuple) weren't a multiple of MAXALIGN (because repalloc internally rounds the request up to a MAXALIGN boundary) but that doesn't seem plausible either. I'd expect that struct to be 16 bytes on 32-bit or 24 bytes on 64-bit, so it should be maxaligned on any hardware I know about. So I'm about out of ideas. Could you modify your copy of the code to log interesting details when you get this error, like the old and new memtupsize and chunk space measurements? That might give us a clue what's the problem. regards, tom lane
В списке pgsql-bugs по дате отправления: