Hi, While running valgrind on 32-bit ARM (rpi5 with debian), I got this really strange report:
==25520== Use of uninitialised value of size 4 ==25520== at 0x94A550: wrapper_handler (pqsignal.c:108) ==25520== by 0x4D7826F: ??? (sigrestorer.S:64) ==25520== Uninitialised value was created by a heap allocation ==25520== at 0x8FB780: palloc (mcxt.c:1340) ==25520== by 0x913067: tuplestore_begin_common (tuplestore.c:289) ==25520== by 0x91310B: tuplestore_begin_heap (tuplestore.c:331) ==25520== by 0x3EA717: ExecMaterial (nodeMaterial.c:64) ==25520== by 0x3B2FF7: ExecProcNodeFirst (execProcnode.c:464) ==25520== by 0x3EF73F: ExecProcNode (executor.h:274) ==25520== by 0x3F0637: ExecMergeJoin (nodeMergejoin.c:703) ==25520== by 0x3B2FF7: ExecProcNodeFirst (execProcnode.c:464) ==25520== by 0x3C47DB: ExecProcNode (executor.h:274) ==25520== by 0x3C4D4F: fetch_input_tuple (nodeAgg.c:561) ==25520== by 0x3C8233: agg_retrieve_direct (nodeAgg.c:2364) ==25520== by 0x3C7E07: ExecAgg (nodeAgg.c:2179) ==25520== by 0x3B2FF7: ExecProcNodeFirst (execProcnode.c:464) ==25520== by 0x3A5EC3: ExecProcNode (executor.h:274) ==25520== by 0x3A8FBF: ExecutePlan (execMain.c:1646) ==25520== by 0x3A6677: standard_ExecutorRun (execMain.c:363) ==25520== by 0x3A644B: ExecutorRun (execMain.c:304) ==25520== by 0x6976D3: PortalRunSelect (pquery.c:924) ==25520== by 0x6972F7: PortalRun (pquery.c:768) ==25520== by 0x68FA1F: exec_simple_query (postgres.c:1274) ==25520== { <insert_a_suppression_name_here> Memcheck:Value4 fun:wrapper_handler obj:/usr/lib/arm-linux-gnueabihf/libc.so.6 } **25520** Valgrind detected 1 error(s) during execution of "select count(*) from **25520** (select * from tenk1 x order by x.thousand, x.twothousand, x.fivethous) x **25520** left join **25520** (select * from tenk1 y order by y.unique2) y **25520** on x.thousand = y.unique2 and x.twothousand = y.hundred and x.fivethous = y.unique2;" I'm mostly used to weird valgrind stuff on this platform, but it's usually about libarmmmem and (possibly) thinking it might access undefined stuff when calculating checksums etc. This seems somewhat different, so I wonder if it's something real? But also, at the same time, it's rather weird, because the report says it's this bit in pqsignal.c (*pqsignal_handlers[postgres_signal_arg]) (postgres_signal_arg); but it also says the memory was allocated in tuplestore, and that's obviously very unlikely, because it does not do anything with signals. I've only seen this once, but if it's related to signals, that's not surprising - the window may be pretty narrow. Anyone saw/investigated a report like this? regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company