Hi,
I tried running master under valgrind on 64-bit ARM (rpi5 running debian
12.5), and I got some suspicous reports, all related to the radixtree
code used by tidstore. I'm used to valgrind on arm sometimes reporting
harmless issues, but this seems like it might be an actual issue.
I'm attaching a snippet with a couple example reports. I can provide the
complete report, but AFAIK it's all just repetitions of these cases. If
needed, I can probably provide access to the rpi5 machine.
regards
--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
==103190== Conditional jump or move depends on uninitialised value(s)
==103190== at 0x21FAC4: local_ts_node_16_search_eq (radixtree.h:1022)
==103190== by 0x21FC0F: local_ts_node_search (radixtree.h:1057)
==103190== by 0x220E23: local_ts_get_slot_recursive (radixtree.h:1667)
==103190== by 0x221043: local_ts_set (radixtree.h:1744)
==103190== by 0x2253A7: TidStoreSetBlockOffsets (tidstore.c:427)
==103190== by 0x2912EF: dead_items_add (vacuumlazy.c:2892)
==103190== by 0x28F193: lazy_scan_prune (vacuumlazy.c:1500)
==103190== by 0x28E767: lazy_scan_heap (vacuumlazy.c:975)
==103190== by 0x28D8C7: heap_vacuum_rel (vacuumlazy.c:497)
==103190== by 0x4C0D2B: table_relation_vacuum (tableam.h:1720)
==103190== by 0x4C458F: vacuum_rel (vacuum.c:2210)
==103190== by 0x4C1F8B: vacuum (vacuum.c:622)
==103190== by 0x6A2877: autovacuum_do_vac_analyze (autovacuum.c:3100)
==103190== by 0x6A144F: do_autovacuum (autovacuum.c:2417)
==103190== by 0x69FEE7: AutoVacWorkerMain (autovacuum.c:1569)
==103190== by 0x6A739B: postmaster_child_launch (launch_backend.c:265)
==103190== by 0x6AE9F3: StartChildProcess (postmaster.c:3928)
==103190== by 0x6AEB63: StartAutovacuumWorker (postmaster.c:3997)
==103190== by 0x6AE7DF: process_pm_pmsignal (postmaster.c:3809)
==103190== by 0x6AA937: ServerLoop (postmaster.c:1667)
==103190== Uninitialised value was created by a heap allocation
==103190== at 0x9DAE30: MemoryContextAlloc (mcxt.c:1201)
==103190== by 0x21F7D3: local_ts_alloc_node (radixtree.h:839)
==103190== by 0x2208A3: local_ts_grow_node_4 (radixtree.h:1484)
==103190== by 0x220ADF: local_ts_node_insert (radixtree.h:1547)
==103190== by 0x220E4F: local_ts_get_slot_recursive (radixtree.h:1675)
==103190== by 0x221043: local_ts_set (radixtree.h:1744)
==103190== by 0x2253A7: TidStoreSetBlockOffsets (tidstore.c:427)
==103190== by 0x2912EF: dead_items_add (vacuumlazy.c:2892)
==103190== by 0x28F193: lazy_scan_prune (vacuumlazy.c:1500)
==103190== by 0x28E767: lazy_scan_heap (vacuumlazy.c:975)
==103190== by 0x28D8C7: heap_vacuum_rel (vacuumlazy.c:497)
==103190== by 0x4C0D2B: table_relation_vacuum (tableam.h:1720)
==103190== by 0x4C458F: vacuum_rel (vacuum.c:2210)
==103190== by 0x4C1F8B: vacuum (vacuum.c:622)
==103190== by 0x6A2877: autovacuum_do_vac_analyze (autovacuum.c:3100)
==103190== by 0x6A144F: do_autovacuum (autovacuum.c:2417)
==103190== by 0x69FEE7: AutoVacWorkerMain (autovacuum.c:1569)
==103190== by 0x6A739B: postmaster_child_launch (launch_backend.c:265)
==103190== by 0x6AE9F3: StartChildProcess (postmaster.c:3928)
==103190== by 0x6AEB63: StartAutovacuumWorker (postmaster.c:3997)
==103190==
{
<insert_a_suppression_name_here>
Memcheck:Cond
fun:local_ts_node_16_search_eq
fun:local_ts_node_search
fun:local_ts_get_slot_recursive
fun:local_ts_set
fun:TidStoreSetBlockOffsets
fun:dead_items_add
fun:lazy_scan_prune
fun:lazy_scan_heap
fun:heap_vacuum_rel
fun:table_relation_vacuum
fun:vacuum_rel
fun:vacuum
fun:autovacuum_do_vac_analyze
fun:do_autovacuum
fun:AutoVacWorkerMain
fun:postmaster_child_launch
fun:StartChildProcess
fun:StartAutovacuumWorker
fun:process_pm_pmsignal
fun:ServerLoop
}
==103190== Conditional jump or move depends on uninitialised value(s)
==103190== at 0x21F18C: pg_rightmost_one_pos32 (pg_bitutils.h:114)
==103190== by 0x21FACF: local_ts_node_16_search_eq (radixtree.h:1023)
==103190== by 0x21FC0F: local_ts_node_search (radixtree.h:1057)
==103190== by 0x21FD57: local_ts_find (radixtree.h:1111)
==103190== by 0x225413: TidStoreIsMember (tidstore.c:443)
==103190== by 0x4C4DBF: vac_tid_reaped (vacuum.c:2545)
==103190== by 0x2A86D7: btvacuumpage (nbtree.c:1235)
==103190== by 0x2A829B: btvacuumscan (nbtree.c:1023)
==103190== by 0x2A7F1B: btbulkdelete (nbtree.c:824)
==103190== by 0x296C73: index_bulk_delete (indexam.c:758)
==103190== by 0x4C4C63: vac_bulkdel_one_index (vacuum.c:2498)
==103190== by 0x290957: lazy_vacuum_one_index (vacuumlazy.c:2443)
==103190== by 0x28FD7B: lazy_vacuum_all_indexes (vacuumlazy.c:2026)
==103190== by 0x28FB7B: lazy_vacuum (vacuumlazy.c:1944)
==103190== by 0x28E93F: lazy_scan_heap (vacuumlazy.c:1050)
==103190== by 0x28D8C7: heap_vacuum_rel (vacuumlazy.c:497)
==103190== by 0x4C0D2B: table_relation_vacuum (tableam.h:1720)
==103190== by 0x4C458F: vacuum_rel (vacuum.c:2210)
==103190== by 0x4C1F8B: vacuum (vacuum.c:622)
==103190== by 0x6A2877: autovacuum_do_vac_analyze (autovacuum.c:3100)
==103190== Uninitialised value was created by a heap allocation
==103190== at 0x9DAE30: MemoryContextAlloc (mcxt.c:1201)
==103190== by 0x21F7D3: local_ts_alloc_node (radixtree.h:839)
==103190== by 0x220527: local_ts_grow_node_16 (radixtree.h:1383)
==103190== by 0x220B33: local_ts_node_insert (radixtree.h:1554)
==103190== by 0x220E4F: local_ts_get_slot_recursive (radixtree.h:1675)
==103190== by 0x221043: local_ts_set (radixtree.h:1744)
==103190== by 0x2253A7: TidStoreSetBlockOffsets (tidstore.c:427)
==103190== by 0x2912EF: dead_items_add (vacuumlazy.c:2892)
==103190== by 0x28F193: lazy_scan_prune (vacuumlazy.c:1500)
==103190== by 0x28E767: lazy_scan_heap (vacuumlazy.c:975)
==103190== by 0x28D8C7: heap_vacuum_rel (vacuumlazy.c:497)
==103190== by 0x4C0D2B: table_relation_vacuum (tableam.h:1720)
==103190== by 0x4C458F: vacuum_rel (vacuum.c:2210)
==103190== by 0x4C1F8B: vacuum (vacuum.c:622)
==103190== by 0x6A2877: autovacuum_do_vac_analyze (autovacuum.c:3100)
==103190== by 0x6A144F: do_autovacuum (autovacuum.c:2417)
==103190== by 0x69FEE7: AutoVacWorkerMain (autovacuum.c:1569)
==103190== by 0x6A739B: postmaster_child_launch (launch_backend.c:265)
==103190== by 0x6AE9F3: StartChildProcess (postmaster.c:3928)
==103190== by 0x6AEB63: StartAutovacuumWorker (postmaster.c:3997)
==103190==
{
<insert_a_suppression_name_here>
Memcheck:Cond
fun:pg_rightmost_one_pos32
fun:local_ts_node_16_search_eq
fun:local_ts_node_search
fun:local_ts_find
fun:TidStoreIsMember
fun:vac_tid_reaped
fun:btvacuumpage
fun:btvacuumscan
fun:btbulkdelete
fun:index_bulk_delete
fun:vac_bulkdel_one_index
fun:lazy_vacuum_one_index
fun:lazy_vacuum_all_indexes
fun:lazy_vacuum
fun:lazy_scan_heap
fun:heap_vacuum_rel
fun:table_relation_vacuum
fun:vacuum_rel
fun:vacuum
fun:autovacuum_do_vac_analyze
}
==103190== Conditional jump or move depends on uninitialised value(s)
==103190== at 0x21FD64: local_ts_find (radixtree.h:1112)
==103190== by 0x225413: TidStoreIsMember (tidstore.c:443)
==103190== by 0x4C4DBF: vac_tid_reaped (vacuum.c:2545)
==103190== by 0x2A86D7: btvacuumpage (nbtree.c:1235)
==103190== by 0x2A829B: btvacuumscan (nbtree.c:1023)
==103190== by 0x2A7F1B: btbulkdelete (nbtree.c:824)
==103190== by 0x296C73: index_bulk_delete (indexam.c:758)
==103190== by 0x4C4C63: vac_bulkdel_one_index (vacuum.c:2498)
==103190== by 0x290957: lazy_vacuum_one_index (vacuumlazy.c:2443)
==103190== by 0x28FD7B: lazy_vacuum_all_indexes (vacuumlazy.c:2026)
==103190== by 0x28FB7B: lazy_vacuum (vacuumlazy.c:1944)
==103190== by 0x28E93F: lazy_scan_heap (vacuumlazy.c:1050)
==103190== by 0x28D8C7: heap_vacuum_rel (vacuumlazy.c:497)
==103190== by 0x4C0D2B: table_relation_vacuum (tableam.h:1720)
==103190== by 0x4C458F: vacuum_rel (vacuum.c:2210)
==103190== by 0x4C1F8B: vacuum (vacuum.c:622)
==103190== by 0x6A2877: autovacuum_do_vac_analyze (autovacuum.c:3100)
==103190== by 0x6A144F: do_autovacuum (autovacuum.c:2417)
==103190== by 0x69FEE7: AutoVacWorkerMain (autovacuum.c:1569)
==103190== by 0x6A739B: postmaster_child_launch (launch_backend.c:265)
==103190== Uninitialised value was created by a heap allocation
==103190== at 0x9DAE30: MemoryContextAlloc (mcxt.c:1201)
==103190== by 0x21F7D3: local_ts_alloc_node (radixtree.h:839)
==103190== by 0x220527: local_ts_grow_node_16 (radixtree.h:1383)
==103190== by 0x220B33: local_ts_node_insert (radixtree.h:1554)
==103190== by 0x220E4F: local_ts_get_slot_recursive (radixtree.h:1675)
==103190== by 0x221043: local_ts_set (radixtree.h:1744)
==103190== by 0x2253A7: TidStoreSetBlockOffsets (tidstore.c:427)
==103190== by 0x2912EF: dead_items_add (vacuumlazy.c:2892)
==103190== by 0x28F193: lazy_scan_prune (vacuumlazy.c:1500)
==103190== by 0x28E767: lazy_scan_heap (vacuumlazy.c:975)
==103190== by 0x28D8C7: heap_vacuum_rel (vacuumlazy.c:497)
==103190== by 0x4C0D2B: table_relation_vacuum (tableam.h:1720)
==103190== by 0x4C458F: vacuum_rel (vacuum.c:2210)
==103190== by 0x4C1F8B: vacuum (vacuum.c:622)
==103190== by 0x6A2877: autovacuum_do_vac_analyze (autovacuum.c:3100)
==103190== by 0x6A144F: do_autovacuum (autovacuum.c:2417)
==103190== by 0x69FEE7: AutoVacWorkerMain (autovacuum.c:1569)
==103190== by 0x6A739B: postmaster_child_launch (launch_backend.c:265)
==103190== by 0x6AE9F3: StartChildProcess (postmaster.c:3928)
==103190== by 0x6AEB63: StartAutovacuumWorker (postmaster.c:3997)
==103190==
{
<insert_a_suppression_name_here>
Memcheck:Cond
fun:local_ts_find
fun:TidStoreIsMember
fun:vac_tid_reaped
fun:btvacuumpage
fun:btvacuumscan
fun:btbulkdelete
fun:index_bulk_delete
fun:vac_bulkdel_one_index
fun:lazy_vacuum_one_index
fun:lazy_vacuum_all_indexes
fun:lazy_vacuum
fun:lazy_scan_heap
fun:heap_vacuum_rel
fun:table_relation_vacuum
fun:vacuum_rel
fun:vacuum
fun:autovacuum_do_vac_analyze
fun:do_autovacuum
fun:AutoVacWorkerMain
fun:postmaster_child_launch
}
==103190== Conditional jump or move depends on uninitialised value(s)
==103190== at 0x225420: TidStoreIsMember (tidstore.c:446)
==103190== by 0x4C4DBF: vac_tid_reaped (vacuum.c:2545)
==103190== by 0x2A86D7: btvacuumpage (nbtree.c:1235)
==103190== by 0x2A829B: btvacuumscan (nbtree.c:1023)
==103190== by 0x2A7F1B: btbulkdelete (nbtree.c:824)
==103190== by 0x296C73: index_bulk_delete (indexam.c:758)
==103190== by 0x4C4C63: vac_bulkdel_one_index (vacuum.c:2498)
==103190== by 0x290957: lazy_vacuum_one_index (vacuumlazy.c:2443)
==103190== by 0x28FD7B: lazy_vacuum_all_indexes (vacuumlazy.c:2026)
==103190== by 0x28FB7B: lazy_vacuum (vacuumlazy.c:1944)
==103190== by 0x28E93F: lazy_scan_heap (vacuumlazy.c:1050)
==103190== by 0x28D8C7: heap_vacuum_rel (vacuumlazy.c:497)
==103190== by 0x4C0D2B: table_relation_vacuum (tableam.h:1720)
==103190== by 0x4C458F: vacuum_rel (vacuum.c:2210)
==103190== by 0x4C1F8B: vacuum (vacuum.c:622)
==103190== by 0x6A2877: autovacuum_do_vac_analyze (autovacuum.c:3100)
==103190== by 0x6A144F: do_autovacuum (autovacuum.c:2417)
==103190== by 0x69FEE7: AutoVacWorkerMain (autovacuum.c:1569)
==103190== by 0x6A739B: postmaster_child_launch (launch_backend.c:265)
==103190== by 0x6AE9F3: StartChildProcess (postmaster.c:3928)
==103190== Uninitialised value was created by a heap allocation
==103190== at 0x9DAE30: MemoryContextAlloc (mcxt.c:1201)
==103190== by 0x21F7D3: local_ts_alloc_node (radixtree.h:839)
==103190== by 0x220527: local_ts_grow_node_16 (radixtree.h:1383)
==103190== by 0x220B33: local_ts_node_insert (radixtree.h:1554)
==103190== by 0x220E4F: local_ts_get_slot_recursive (radixtree.h:1675)
==103190== by 0x221043: local_ts_set (radixtree.h:1744)
==103190== by 0x2253A7: TidStoreSetBlockOffsets (tidstore.c:427)
==103190== by 0x2912EF: dead_items_add (vacuumlazy.c:2892)
==103190== by 0x28F193: lazy_scan_prune (vacuumlazy.c:1500)
==103190== by 0x28E767: lazy_scan_heap (vacuumlazy.c:975)
==103190== by 0x28D8C7: heap_vacuum_rel (vacuumlazy.c:497)
==103190== by 0x4C0D2B: table_relation_vacuum (tableam.h:1720)
==103190== by 0x4C458F: vacuum_rel (vacuum.c:2210)
==103190== by 0x4C1F8B: vacuum (vacuum.c:622)
==103190== by 0x6A2877: autovacuum_do_vac_analyze (autovacuum.c:3100)
==103190== by 0x6A144F: do_autovacuum (autovacuum.c:2417)
==103190== by 0x69FEE7: AutoVacWorkerMain (autovacuum.c:1569)
==103190== by 0x6A739B: postmaster_child_launch (launch_backend.c:265)
==103190== by 0x6AE9F3: StartChildProcess (postmaster.c:3928)
==103190== by 0x6AEB63: StartAutovacuumWorker (postmaster.c:3997)
==103190==
{
<insert_a_suppression_name_here>
Memcheck:Cond
fun:TidStoreIsMember
fun:vac_tid_reaped
fun:btvacuumpage
fun:btvacuumscan
fun:btbulkdelete
fun:index_bulk_delete
fun:vac_bulkdel_one_index
fun:lazy_vacuum_one_index
fun:lazy_vacuum_all_indexes
fun:lazy_vacuum
fun:lazy_scan_heap
fun:heap_vacuum_rel
fun:table_relation_vacuum
fun:vacuum_rel
fun:vacuum
fun:autovacuum_do_vac_analyze
fun:do_autovacuum
fun:AutoVacWorkerMain
fun:postmaster_child_launch
fun:StartChildProcess
}