public inbox for [email protected]  
help / color / mirror / Atom feed
From: Tomas Vondra <[email protected]>
To: PostgreSQL Hackers <[email protected]>
Cc: John Naylor <[email protected]>
Cc: Masahiko Sawada <[email protected]>
Subject: suspicious valgrind reports about radixtree/tidstore on arm64
Date: Wed, 19 Jun 2024 16:34:52 +0200
Message-ID: <[email protected]> (raw)

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

Attachments:

  [text/x-log] valgrind.102928.log (12.6K, ../[email protected]/2-valgrind.102928.log)
  download | inline:
==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
}

view thread (2+ messages)

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected]
  Subject: Re: suspicious valgrind reports about radixtree/tidstore on arm64
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox