On Tue, Jul 12, 2022 at 2:53 PM Masahiko Sawada <sawada.m...@gmail.com> wrote: > > On Tue, Jul 12, 2022 at 5:58 PM shiy.f...@fujitsu.com > <shiy.f...@fujitsu.com> wrote: > > > > > > It happened when executing the following code because it tried to free a > > NULL > > pointer (catchange_xip). > > > > /* be tidy */ > > if (ondisk) > > pfree(ondisk); > > + if (catchange_xip) > > + pfree(catchange_xip); > > } > > > > It seems to be related to configure option. I could reproduce it when using > > `./configure --enable-debug`. > > But I couldn't reproduce with `./configure --enable-debug CFLAGS="-Og > > -ggdb"`. > > Hmm, I could not reproduce this problem even if I use ./configure > --enable-debug. And it's weird that we checked if catchange_xip is not > null but we did pfree for it: >
Yeah, this looks weird to me as well but one difference in running tests could be the timing of WAL LOG for XLOG_RUNNING_XACTS. That may change the timing of SnapBuildSerialize. The other thing we can try is by checking the value of catchange_xcnt before pfree. BTW, I think ReorderBufferGetCatalogChangesXacts should have an Assert to ensure rb->catchange_ntxns and xcnt are equal. We can probably then avoid having xcnt_p as an out parameter as the caller can use rb->catchange_ntxns instead. -- With Regards, Amit Kapila.