Re: Is RecoveryConflictInterrupt() entirely safe in a signal handler?
От | Tom Lane |
---|---|
Тема | Re: Is RecoveryConflictInterrupt() entirely safe in a signal handler? |
Дата | |
Msg-id | 4185146.1649538041@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Is RecoveryConflictInterrupt() entirely safe in a signal handler? (Thomas Munro <thomas.munro@gmail.com>) |
Ответы |
Re: Is RecoveryConflictInterrupt() entirely safe in a signal handler?
|
Список | pgsql-hackers |
Thomas Munro <thomas.munro@gmail.com> writes: > Unlike most "procsignal" handler routines, RecoveryConflictInterrupt() > doesn't just set a sig_atomic_t flag and poke the latch. Is the extra > stuff it does safe? For example, is this call stack OK (to pick one > that jumps out, but not the only one)? > procsignal_sigusr1_handler > -> RecoveryConflictInterrupt > -> HoldingBufferPinThatDelaysRecovery > -> GetPrivateRefCount > -> GetPrivateRefCountEntry > -> hash_search(...hash table that might be in the middle of an update...) Ugh. That one was safe before somebody decided we needed a hash table for buffer refcounts, but it's surely not safe now. Which, of course, demonstrates the folly of allowing signal handlers to call much of anything; but especially doing so without clearly marking the called functions as needing to be signal safe. regards, tom lane
В списке pgsql-hackers по дате отправления: