Я хотел бы добавить атрибут описания буфера в исходном коде PostgreSQL, но когда я пытаюсь инициализировать его я получаю ошибку: PANIC: застрял SpinLock (0x7fc1cddd0cd0), обнаруженную в freelist.c: 206Добавление атрибута в описание буфера в источнике PostgreSQL, теперь имеет ошибку спин-блокировки?
структура описана в buf_internals.h как:
typedef struct sbufdesc
{
BufferTag tag; /* ID of page contained in buffer */
BufFlags flags; /* see bit definitions above */
uint16 usage_count; /* usage counter for clock sweep code */
unsigned refcount; /* # of backends holding pins on buffer */
int wait_backend_pid; /* backend PID of pin-count waiter */
int buf_age; //<<<<<<<<<<< The age of the buffer
slock_t buf_hdr_lock; /* protects the above fields */
int buf_id; /* buffer's index number (from 0) */
int freeNext; /* link in freelist chain */
LWLockId io_in_progress_lock; /* to wait for I/O to complete */
LWLockId content_lock; /* to lock access to buffer contents */
} BufferDesc;
но застревает на линии 206 freelist.c, который находится всего:
LockBufHdr(buf);
Все, что я добавил был ИНТ к struct и установить его в ноль в sam e все остальные буферы инициализируются. Как это может вызвать ошибку спин-блокировки?