From: | jingwei_5107(at)qq(dot)com |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #13487: GetBufferFromRing code bug |
Date: | 2015-07-04 15:12:03 |
Message-ID: | 20150704151203.1190.44251@wrigleys.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 13487
Logged by: will
Email address: jingwei_5107(at)qq(dot)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.
From | Date | Subject | |
---|---|---|---|
Next Message | Julien Rouhaud | 2015-07-04 20:21:26 | Re: BUG #12379: pgbench should hint to pgbench -i |
Previous Message | Michael Paquier | 2015-07-04 12:40:31 | Re: PQexec() hangs on OOM |