Re: BUG #13985: Segmentation fault on PREPARE TRANSACTION - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #13985: Segmentation fault on PREPARE TRANSACTION
Date
Msg-id 5857.1456411909@sss.pgh.pa.us
Whole thread Raw
In response to Re: BUG #13985: Segmentation fault on PREPARE TRANSACTION  ("Shulgin, Oleksandr" <oleksandr.shulgin@zalando.de>)
Responses Re: BUG #13985: Segmentation fault on PREPARE TRANSACTION  ("Shulgin, Oleksandr" <oleksandr.shulgin@zalando.de>)
Re: BUG #13985: Segmentation fault on PREPARE TRANSACTION  (Andres Freund <andres@anarazel.de>)
List pgsql-bugs
"Shulgin, Oleksandr" <oleksandr.shulgin@zalando.de> writes:
> On Wed, Feb 24, 2016 at 10:52 PM, Andres Freund <andres@anarazel.de> wrote:
> At the very least ISTM that we have to make pgprocno volatile (or use a
>> memory barrier - but we don't have sufficient support for those in the
>> older branches), and move the PGPROC/PGXACT lookups after the == -1
>> check.

> Use of volatile doesn't change the resulting code dramatically for me.

Marking pgprocno volatile is silly.  What *is* missing is this:

-    ProcArrayStruct *arrayP = procArray;
+    volatile ProcArrayStruct *arrayP = procArray;

which corresponds directly to what the problem is: the storage arrayP
is pointing at may change asynchronously.

            regards, tom lane

pgsql-bugs by date:

Previous
From: "Shulgin, Oleksandr"
Date:
Subject: Re: BUG #13985: Segmentation fault on PREPARE TRANSACTION
Next
From: "Shulgin, Oleksandr"
Date:
Subject: Re: BUG #13985: Segmentation fault on PREPARE TRANSACTION