On Fri, Jul 1, 2016 at 9:38 AM, Thomas Munro <[email protected]> wrote: > On Fri, Jul 1, 2016 at 3:25 PM, Amit Kapila <[email protected]> wrote: >> On Fri, Jul 1, 2016 at 8:48 AM, Thomas Munro <[email protected]> >> wrote: >>> If serialized_snapshot->xcnt == 0, then snapshot->xip never gets >>> initialized to a non-NULL value. Then if serialized_snapshot->subxcnt >>> > 0, we set snapshot->subxip = snapshot->xip + >>> serialized_snapshot->xcnt (so that's NULL too). Then in line the line >>> you show we call memcpy(snapshot->subxip, ...). The fix might be >>> something like the attached. >> >> I was just typing the mail, when I see this mail. I also reached to the >> conclusion that this is the reason of crash. You can see how CopySnapshot >> calculates the subxipoff, may be writing code that way will be more >> consistent. > > Or maybe just like this? > > - snapshot->subxip = snapshot->xip + serialized_snapshot->xcnt; > + snapshot->subxip = ((TransactionId *) (snapshot + 1)) + > + serialized_snapshot->xcnt; >
This way it looks better to me. Thanks for the patch. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
