Re: BUG #12918: Segfault in BackendIdGetTransactionIds - Mailing list pgsql-bugs
| From | Vladimir Borodin |
|---|---|
| Subject | Re: BUG #12918: Segfault in BackendIdGetTransactionIds |
| Date | |
| Msg-id | 165253DA-253D-4CBE-A89C-28DEB6CFD0B1@simply.name Whole thread Raw |
| In response to | Re: BUG #12918: Segfault in BackendIdGetTransactionIds (Vladimir Borodin <root@simply.name>) |
| List | pgsql-bugs |
> 30 =D0=BC=D0=B0=D1=80=D1=82=D0=B0 2015 =D0=B3., =D0=B2 20:54, Vladimir =
Borodin <root@simply.name> =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB(=D0=B0=
):
>=20
>>=20
>> 30 =D0=BC=D0=B0=D1=80=D1=82=D0=B0 2015 =D0=B3., =D0=B2 20:00, Tom =
Lane <tgl@sss.pgh.pa.us <mailto:tgl@sss.pgh.pa.us>> =D0=BD=D0=B0=D0=BF=D0=B8=
=D1=81=D0=B0=D0=BB(=D0=B0):
>>=20
>> Vladimir Borodin <root@simply.name <mailto:root@simply.name>> writes:
>>> I=E2=80=99ve also tried to revert dd1a3bcc where this function =
appeared but couldn=E2=80=99t do it :( If you would be able to make a =
build without this commit (if it is easier than fix it in right way), I =
could install it on several production hosts to test it.
>>=20
>> Try this.
>=20
> 38 minutes from a bug report to the patch with a fix! You are =
fantastic. Thanks.
>=20
> It compiles, passes 'make check' and 'make check-world=E2=80=99 (I =
think, you have checked it but just in case...). I=E2=80=99ve built a =
package and installed it on one host. If everything would be ok, =
tomorrow I will install it on several hosts and slowly farther. The =
problem reproduces on our number of hosts approximately once a week. If =
the problem disappears I will let you know in a couple of weeks.
No segfaults for more than a week since I=E2=80=99ve upgraded all hosts. =
Seems, that the patch is good. Thank you very much.
>=20
> Thanks again.
>=20
>>=20
>> regards, tom lane
>>=20
>> 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 =3D shmInvalBuffer;
>> - PGXACT *xact;
>>=20
>> *xid =3D InvalidTransactionId;
>> *xmin =3D InvalidTransactionId;
>> --- 403,409 ----
>> *************** BackendIdGetTransactionIds(int backendID
>> *** 415,425 ****
>>=20
>> if (backendID > 0 && backendID <=3D segP->lastBackend)
>> {
>> ! stateP =3D &segP->procState[backendID - 1];
>> ! xact =3D &ProcGlobal->allPgXact[stateP->proc->pgprocno];
>>=20
>> ! *xid =3D xact->xid;
>> ! *xmin =3D xact->xmin;
>> }
>>=20
>> LWLockRelease(SInvalWriteLock);
>> --- 413,428 ----
>>=20
>> if (backendID > 0 && backendID <=3D segP->lastBackend)
>> {
>> ! ProcState *stateP =3D &segP->procState[backendID - 1];
>> ! PGPROC *proc =3D stateP->proc;
>>=20
>> ! if (proc !=3D NULL)
>> ! {
>> ! PGXACT *xact =3D =
&ProcGlobal->allPgXact[proc->pgprocno];
>> !=20
>> ! *xid =3D xact->xid;
>> ! *xmin =3D xact->xmin;
>> ! }
>> }
>>=20
>> LWLockRelease(SInvalWriteLock);
>=20
>=20
> --
> May the force be with you=E2=80=A6
> https://simply.name <https://simply.name/>
--
May the force be with you=E2=80=A6
https://simply.name
pgsql-bugs by date: