Re: BUG #16129: Segfault in tts_virtual_materialize in logical replication worker
Ondřej Jirman <ienieghapheoghaiwida@xff.cz>
From: Ondřej Jirman <ienieghapheoghaiwida@xff.cz>
To: Tomas Vondra <tomas.vondra@2ndquadrant.com>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2019-11-21T16:35:06Z
Lists: pgsql-bugs
On Thu, Nov 21, 2019 at 05:09:06PM +0100, Tomas Vondra wrote: > On Thu, Nov 21, 2019 at 04:57:07PM +0100, Ondřej Jirman wrote: > > On Thu, Nov 21, 2019 at 04:27:32PM +0100, Tomas Vondra wrote: > > > On Thu, Nov 21, 2019 at 04:07:16PM +0100, Ondřej Jirman wrote: > > > > I've also managed to get valgrind output on the segfaulting process: > > > > > > > > https://megous.com/dl/tmp/valgrind-105524-109020.log > > > > > > > > Though it probably doesn't show much new. > > > > > > > > > > Is postgres actually compiled with valgrind support? What does pg_config > > > say? > > > > I don't see any valgrind related options in configure --help, I repackaged it > > just with CFLAGS set to -ggdb -Og. > > > > You need to use -DUSE_VALGRIND or edit pg_config_manual.h. I usually > just use > > CFLAGS="-DRANDOMIZE_ALLOCATED_MEMORY -DUSE_VALGRIND -O0 -ggdb" > > which does the trick. Without the USE_VALGRIND defined, we don't include > the valgrind instrumentation, so I suppose the previous results are bogus. Two new valgrind logs, now with -DUSE_VALGRIND: https://megous.com/dl/tmp/valgrind-172090.log https://megous.com/dl/tmp/valgrind-172143.log A lots of uninitialized 1b accesses around VARATT_IS_EXTERNAL_EXPANDED. So slot->tts_values[natt] is probably uninitialized. Which is why the backtrace had a weird value there, I guess. regards, o.
Commits
-
Add test coverage for "unchanged toast column" replication code path.
- f67b173771a0 13.0 landed
- 8b46acf7c423 10.12 landed
- 8047a7b9dd45 12.2 landed
- 785206afdf1f 11.7 landed
-
Fix bogus tuple-slot management in logical replication UPDATE handling.
- b72a44c51ad6 11.7 landed
- a2aa224e05dc 12.2 landed
- 5d3fcb53a6a8 10.12 landed
- 4d9ceb0018cc 13.0 landed