On Wed, Mar 15, 2017 at 8:11 PM, Emre Hasegeli <e...@hasegeli.com> wrote:
>> * thread #1: tid = 0x5045a8f, 0x000000010ae44558 
>> postgres`brin_deform_tuple(brdesc=0x00007fea3c86a3a8, 
>> tuple=0x00007fea3c891040) + 40 at brin_tuple.c:414, queue = 
>> 'com.apple.main-thread', stop reason = signal SIGUSR1
>>  * frame #0: 0x000000010ae44558 
>> postgres`brin_deform_tuple(brdesc=0x00007fea3c86a3a8, 
>> tuple=0x00007fea3c891040) + 40 at brin_tuple.c:414 [opt]
>>    frame #1: 0x000000010ae4000c 
>> postgres`bringetbitmap(scan=0x00007fea3c875c20, tbm=<unavailable>) + 428 at 
>> brin.c:398 [opt]
>>    frame #2: 0x000000010ae9b451 
>> postgres`index_getbitmap(scan=0x00007fea3c875c20, bitmap=<unavailable>) + 65 
>> at indexam.c:726 [opt]
>>    frame #3: 0x000000010b0035a9 
>> postgres`MultiExecBitmapIndexScan(node=<unavailable>) + 233 at 
>> nodeBitmapIndexscan.c:91 [opt]
>>    frame #4: 0x000000010b002840 postgres`BitmapHeapNext(node=<unavailable>) 
>> + 400 at nodeBitmapHeapscan.c:143 [opt]

Further analyzing the call stack, seems like this is not exact call
stack where it crashed.  Because, if you notice the code in the
brin_deform_tuple (line 414)

brin_deform_tuple(BrinDesc *brdesc, BrinTuple *tuple)

{
      dtup = brin_new_memtuple(brdesc);

     if (BrinTupleIsPlaceholder(tuple))
         dtup->bt_placeholder = true;
     dtup->bt_blkno = tuple->bt_blkno;  --> line 414

This can crash at line:414, if either tuple is invalid memory(but I
think it's not because we have already accessed this memory in above
if check) or dtup is invalid (this is also not possible because
brin_new_memtuple has already accessed this).

-- 
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to