On Fri, Jul 1, 2016 at 9:38 AM, Thomas Munro <thomas.mu...@enterprisedb.com> wrote: > On Fri, Jul 1, 2016 at 3:25 PM, Amit Kapila <amit.kapil...@gmail.com> wrote: >> On Fri, Jul 1, 2016 at 8:48 AM, Thomas Munro <thomas.mu...@enterprisedb.com> >> 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 (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers