2014-11-13 5 views
0

Я хотел бы добавить атрибут описания буфера в исходном коде 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 все остальные буферы инициализируются. Как это может вызвать ошибку спин-блокировки?

ответ

0

Похоже, что беговая очистка сначала исправила проблему.