BUG #13487: GetBufferFromRing code bug

Поиск
Список
Период
Сортировка
От jingwei_5107@qq.com
Тема BUG #13487: GetBufferFromRing code bug
Дата
Msg-id 20150704151203.1190.44251@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #13487: GetBufferFromRing code bug  (Thomas Munro <thomas.munro@enterprisedb.com>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      13487
Logged by:          will
Email address:      jingwei_5107@qq.com
PostgreSQL version: 9.4.4
Operating system:   It does not matter
Description:

In GetBufferFromRing method(/src/backend/storage/buffer/freelist.c),I think
the following code:
506     buf = &BufferDescriptors[bufnum - 1];
507    LockBufHdr(buf);
508    if (buf->refcount == 0 && buf->usage_count <= 1)
509    {
510        strategy->current_was_in_ring = true;
511        return buf;
512    }
513    UnlockBufHdr(buf);

should be changed to(Adding line 510):

506     buf = &BufferDescriptors[bufnum - 1];
507    LockBufHdr(buf);
508    if (buf->refcount == 0 && buf->usage_count <= 1)
509    {
510             UnlockBufHdr(buf);// add this line
511        strategy->current_was_in_ring = true;
512        return buf;
513    }
514    UnlockBufHdr(buf);

It should Unlock the buf before returning buf, after exclusively accessing
the buf's refcount&usage_count member.

Am I right? Any reply is appreciated if I'm wrong.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: longzou@hotmail.com
Дата:
Сообщение: BUG #13486: How can I sort unnest results?
Следующее
От: Thomas Munro
Дата:
Сообщение: Re: BUG #13487: GetBufferFromRing code bug