Re: ubsan fails on 32bit builds
От | Robert Haas |
---|---|
Тема | Re: ubsan fails on 32bit builds |
Дата | |
Msg-id | CA+TgmoaUWPObBGgTCPD9VHOXAVUSLSLpsVTDaqrjb-GOqbZDLg@mail.gmail.com обсуждение исходный текст |
Ответ на | ubsan fails on 32bit builds (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: ubsan fails on 32bit builds
|
Список | pgsql-hackers |
On Wed, Nov 16, 2022 at 8:42 PM Andres Freund <andres@anarazel.de> wrote: > Afaict the problem is that > proc = (PGPROC *) &(waitQueue->links); > > is a gross gross hack - this isn't actually a PGPROC, it's pointing to an > SHM_QUEUE, but *not* one embedded in PGPROC. It kinda works because ->links > is at offset 0 in PGPROC, which means that > SHMQueueInsertBefore(&(proc->links), &(MyProc->links)); > will turn &proc->links back into waitQueue->links. Which we then can enqueue > again. Not that I object to a targeted fix, but it's been 10 years since slist and dlist were committed, and we really ought to eliminate SHM_QUEUE entirely in favor of using those. It's basically an open-coded implementation of something for which we now have a toolkit. Not that it's impossible to make this kind of mistake with a toolkit, but in general open-coding the same logic in multiple places increases the risk of bugs. -- Robert Haas EDB: http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: