Re: BUG #12918: Segfault in BackendIdGetTransactionIds

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #12918: Segfault in BackendIdGetTransactionIds
Дата
Msg-id 27537.1427734801@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: BUG #12918: Segfault in BackendIdGetTransactionIds  (Vladimir Borodin <root@simply.name>)
Ответы Re: BUG #12918: Segfault in BackendIdGetTransactionIds  (Vladimir Borodin <root@simply.name>)
Re: BUG #12918: Segfault in BackendIdGetTransactionIds  (David Gould <daveg@sonic.net>)
Список pgsql-bugs
Vladimir Borodin <root@simply.name> writes:
> I���ve also tried to revert dd1a3bcc where this function appeared but couldn���t do it :( If you would be able to
makea build without this commit (if it is easier than fix it in right way), I could install it on several production
hoststo test it. 

Try this.

            regards, tom lane

diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c
index 81b85c0..a2fde89 100644
*** a/src/backend/storage/ipc/sinvaladt.c
--- b/src/backend/storage/ipc/sinvaladt.c
*************** BackendIdGetProc(int backendID)
*** 403,411 ****
  void
  BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin)
  {
-     ProcState  *stateP;
      SISeg       *segP = shmInvalBuffer;
-     PGXACT       *xact;

      *xid = InvalidTransactionId;
      *xmin = InvalidTransactionId;
--- 403,409 ----
*************** BackendIdGetTransactionIds(int backendID
*** 415,425 ****

      if (backendID > 0 && backendID <= segP->lastBackend)
      {
!         stateP = &segP->procState[backendID - 1];
!         xact = &ProcGlobal->allPgXact[stateP->proc->pgprocno];

!         *xid = xact->xid;
!         *xmin = xact->xmin;
      }

      LWLockRelease(SInvalWriteLock);
--- 413,428 ----

      if (backendID > 0 && backendID <= segP->lastBackend)
      {
!         ProcState  *stateP = &segP->procState[backendID - 1];
!         PGPROC       *proc = stateP->proc;

!         if (proc != NULL)
!         {
!             PGXACT       *xact = &ProcGlobal->allPgXact[proc->pgprocno];
!
!             *xid = xact->xid;
!             *xmin = xact->xmin;
!         }
      }

      LWLockRelease(SInvalWriteLock);

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Stephen Frost
Дата:
Сообщение: Re: BUG #12918: Segfault in BackendIdGetTransactionIds
Следующее
От: Vladimir Borodin
Дата:
Сообщение: Re: BUG #12918: Segfault in BackendIdGetTransactionIds