Re: BUG #17781: Assert in setrefs.c

From: Robins Tharakan <tharakan(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17781: Assert in setrefs.c
Date: 2023-02-10 06:50:06
Message-ID: CAEP4nAx9C5gXNBfEA0JBfz7B+5f1Bawt-RWQWyhev-wdps8BZA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

This assert() is still reproducible (as of 40d0b2d415(at)master) although
intermittent when trying to reach manually, in that I could reduce to
a simpler crash but after a while the crashes stop (maybe it's just
lack of coffee). Owing to this, this time I only provide table-data
instead of a simplified repro.

What I can confirm is that the test setup easily steps on this every
few minutes, so I'd say this still needs attention.

TRAP: failed Assert("varattno <= 0 || (nrm_match == NRM_SUBSET ?
bms_is_subset(var->varnullingrels, vinfo->varnullingrels) : nrm_match
== NRM_SUPERSET ? bms_is_subset(vinfo->varnullingrels,
var->varnullingrels) : bms_equal(vinfo->varnullingrels,
var->varnullingrels))"), File: "setrefs.c", Line: 2792, PID: 2005079

2023-02-10 00:28:34.886 UTC [1798150] LOG: server process (PID
2005079) was terminated by signal 6: Aborted
2023-02-10 00:28:34.886 UTC [1798150] DETAIL: Failed process was
running: SELECT
FROM (SELECT NULL AS c1
LIMIT ALL) AS subq_2
RIGHT JOIN public.caster AS ref_3 ON ref_3.int8 > ref_3.int2
LEFT JOIN (SELECT
LIMIT ALL) AS subq_3 ON ref_3.name !~ subq_2.c1
RIGHT JOIN testxmlschema.test3 AS sample_2 ON ref_3.boolean = sample_2.c1

postgres=# select int2 is null, int8 is null, boolean is null,
count(*) from caster group by 1,2,3;
?column? | ?column? | ?column? | count
----------+----------+----------+-------
t | t | t | 80
(1 row)

postgres=# \d testxmlschema.test3
Table "testxmlschema.test3"
Column | Type | Collation | Nullable | Default
--------+-------------------+-----------+----------+---------
c1 | boolean | | |
c2 | testboolxmldomain | | |
c3 | date | | |
c4 | testdatexmldomain | | |

postgres=# table testxmlschema.test3 ;
c1 | c2 | c3 | c4
----+----+------------+------------
t | t | 2013-02-21 | 2013-02-21
(1 row)

=== Backtrace - PID 2005079 - 40d0b2d415(at)master ===
Core was generated by `postgres: 40d0b2d415(at)master@sqith: ubuntu
postgres 127.0.0.1(39074) SELECT '.
Program terminated with signal SIGABRT, Aborted.
#0 __GI_raise (sig=sig(at)entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#0 __GI_raise (sig=sig(at)entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007fbd65b54859 in __GI_abort () at abort.c:79
#2 0x000055da10f04d9d in ExceptionalCondition (
conditionName=0x55da110bcde8 "varattno <= 0 || (nrm_match ==
NRM_SUBSET ? bms_is_subset(var->varnullingrels, vinfo->varnullingrels)
: nrm_match == NRM_SUPERSET ? bms_is_subset(vinfo->varnullingrels,
var->varnullingrels) : bms_equa"..., fileName=0x55da110bc90f
"setrefs.c", lineNumber=2792) at assert.c:66
#3 0x000055da10bf3d35 in search_indexed_tlist_for_var (var=0x55da123a4178,
itlist=0x55da123adeb0, newvarno=-2, rtoffset=0, nrm_match=NRM_EQUAL)
at setrefs.c:2792
#4 0x000055da10bf419e in fix_join_expr_mutator (node=0x55da123a4178,
context=0x7ffe3bd446a0) at setrefs.c:3016
#5 0x000055da10b30d6e in expression_tree_mutator_impl (node=0x55da123a3e78,
mutator=0x55da10bf4129 <fix_join_expr_mutator>, context=0x7ffe3bd446a0)
at nodeFuncs.c:3137
#6 0x000055da10bf44ad in fix_join_expr_mutator (node=0x55da123a3e78,
context=0x7ffe3bd446a0) at setrefs.c:3104
#7 0x000055da10b2fbd9 in expression_tree_mutator_impl (node=0x55da123a40b8,
mutator=0x55da10bf4129 <fix_join_expr_mutator>, context=0x7ffe3bd446a0)
at nodeFuncs.c:2771
#8 0x000055da10bf44ad in fix_join_expr_mutator (node=0x55da123a40b8,
context=0x7ffe3bd446a0) at setrefs.c:3104
#9 0x000055da10b30d6e in expression_tree_mutator_impl (node=0x55da123ad820,
mutator=0x55da10bf4129 <fix_join_expr_mutator>, context=0x7ffe3bd446a0)
at nodeFuncs.c:3137
#10 0x000055da10bf44ad in fix_join_expr_mutator (node=0x55da123ad820,
context=0x7ffe3bd446a0) at setrefs.c:3104
#11 0x000055da10bf4113 in fix_join_expr (root=0x55da123949f0,
clauses=0x55da123ad820, outer_itlist=0x55da123adeb0,
inner_itlist=0x55da123ae080, acceptable_rel=0, rtoffset=0,
nrm_match=NRM_EQUAL, num_exec=2) at setrefs.c:2999
#12 0x000055da10bf2ee3 in set_join_references (root=0x55da123949f0,
join=0x55da123ad850, rtoffset=0) at setrefs.c:2260
#13 0x000055da10beff6b in set_plan_refs (root=0x55da123949f0,
plan=0x55da123ad850, rtoffset=0) at setrefs.c:870
#14 0x000055da10beea91 in set_plan_references (root=0x55da123949f0,
plan=0x55da123ad850) at setrefs.c:354
#15 0x000055da10be043f in standard_planner (parse=0x55da1229de28,
query_string=0x55da1226a508 "SELECT\nFROM (SELECT NULL AS c1\n
LIMIT ALL) AS subq_2\n RIGHT JOIN public.caster AS ref_3 ON
ref_3.int8 > ref_3.int2\n LEFT JOIN (SELECT\n", ' ' <repeats 16
times>, "LIMIT ALL) AS subq_3 ON ref_3.name !~"...,
cursorOptions=2048, boundParams=0x0) at planner.c:504
#16 0x00007fbd62b4208b in pgss_planner (parse=0x55da1229de28,
query_string=0x55da1226a508 "SELECT\nFROM (SELECT NULL AS c1\n
LIMIT ALL) AS subq_2\n RIGHT JOIN public.caster AS ref_3 ON
ref_3.int8 > ref_3.int2\n LEFT JOIN (SELECT\n", ' ' <repeats 16
times>, "LIMIT ALL) AS subq_3 ON ref_3.name !~"...,
cursorOptions=2048, boundParams=0x0)
at pg_stat_statements.c:954
#17 0x000055da10bdfce0 in planner (parse=0x55da1229de28,
query_string=0x55da1226a508 "SELECT\nFROM (SELECT NULL AS c1\n
LIMIT ALL) AS subq_2\n RIGHT JOIN public.caster AS ref_3 ON
ref_3.int8 > ref_3.int2\n LEFT JOIN (SELECT\n", ' ' <repeats 16
times>, "LIMIT ALL) AS subq_3 ON ref_3.name !~"...,
cursorOptions=2048, boundParams=0x0) at planner.c:279
#18 0x000055da10d24f88 in pg_plan_query (querytree=0x55da1229de28,
query_string=0x55da1226a508 "SELECT\nFROM (SELECT NULL AS c1\n
LIMIT ALL) AS subq_2\n RIGHT JOIN public.caster AS ref_3 ON
ref_3.int8 > ref_3.int2\n LEFT JOIN (SELECT\n", ' ' <repeats 16
times>, "LIMIT ALL) AS subq_3 ON ref_3.name !~"...,
cursorOptions=2048, boundParams=0x0) at postgres.c:870
#19 0x000055da10d250e0 in pg_plan_queries (querytrees=0x55da123949c0,
query_string=0x55da1226a508 "SELECT\nFROM (SELECT NULL AS c1\n
LIMIT ALL) AS subq_2\n RIGHT JOIN public.caster AS ref_3 ON
ref_3.int8 > ref_3.int2\n LEFT JOIN (SELECT\n", ' ' <repeats 16
times>, "LIMIT ALL) AS subq_3 ON ref_3.name !~"...,
cursorOptions=2048, boundParams=0x0) at postgres.c:962
#20 0x000055da10d254c3 in exec_simple_query (
query_string=0x55da1226a508 "SELECT\nFROM (SELECT NULL AS c1\n
LIMIT ALL) AS subq_2\n RIGHT JOIN public.caster AS ref_3 ON
ref_3.int8 > ref_3.int2\n LEFT JOIN (SELECT\n", ' ' <repeats 16
times>, "LIMIT ALL) AS subq_3 ON ref_3.name !~"...) at postgres.c:1156
#21 0x000055da10d2a379 in PostgresMain (dbname=0x55da122aa2e8 "postgres",
username=0x55da12265478 "ubuntu") at postgres.c:4565
#22 0x000055da10c52dd6 in BackendRun (port=0x55da122a72b0)
at postmaster.c:4461
#23 0x000055da10c526a9 in BackendStartup (port=0x55da122a72b0)
at postmaster.c:4189
#24 0x000055da10c4ead8 in ServerLoop () at postmaster.c:1779
#25 0x000055da10c4e3ad in PostmasterMain (argc=3, argv=0x55da122633d0)
at postmaster.c:1463
#26 0x000055da10b015eb in main (argc=3, argv=0x55da122633d0) at main.c:200

=== Backtrace FULL - PID 2005079 - 40d0b2d415(at)master ===
#2 0x000055da10f04d9d in ExceptionalCondition (
conditionName=0x55da110bcde8 "varattno <= 0 || (nrm_match ==
NRM_SUBSET ? bms_is_subset(var->varnullingrels, vinfo->varnullingrels)
: nrm_match == NRM_SUPERSET ? bms_is_subset(vinfo->varnullingrels,
var->varnullingrels) : bms_equa"..., fileName=0x55da110bc90f
"setrefs.c", lineNumber=2792) at assert.c:66
No locals.
#3 0x000055da10bf3d35 in search_indexed_tlist_for_var (var=0x55da123a4178,
itlist=0x55da123adeb0, newvarno=-2, rtoffset=0, nrm_match=NRM_EQUAL)
at setrefs.c:2792
newvar = 0x55da123ae140
varno = 1
varattno = 1
vinfo = 0x55da123aded0
i = 0
#4 0x000055da10bf419e in fix_join_expr_mutator (node=0x55da123a4178,
context=0x7ffe3bd446a0) at setrefs.c:3016
var = 0x55da123a4178
newvar = 0x55da10b2690d <lappend+133>
__func__ = "fix_join_expr_mutator"
#5 0x000055da10b30d6e in expression_tree_mutator_impl (node=0x55da123a3e78,
mutator=0x55da10bf4129 <fix_join_expr_mutator>, context=0x7ffe3bd446a0)
at nodeFuncs.c:3137
temp__state = {l = 0x55da123a3e78, i = 1}
resultlist = 0x55da123adc10
temp = 0x55da123a41d0
__func__ = "expression_tree_mutator_impl"
#6 0x000055da10bf44ad in fix_join_expr_mutator (node=0x55da123a3e78,
context=0x7ffe3bd446a0) at setrefs.c:3104
newvar = 0x0
__func__ = "fix_join_expr_mutator"
#7 0x000055da10b2fbd9 in expression_tree_mutator_impl (node=0x55da123a40b8,
mutator=0x55da10bf4129 <fix_join_expr_mutator>, context=0x7ffe3bd446a0)
at nodeFuncs.c:2771
expr = 0x55da123a40b8
newnode = 0x55da123ae0a0
__func__ = "expression_tree_mutator_impl"
#8 0x000055da10bf44ad in fix_join_expr_mutator (node=0x55da123a40b8,
context=0x7ffe3bd446a0) at setrefs.c:3104
newvar = 0xe0e36faee4a53e00
__func__ = "fix_join_expr_mutator"
#9 0x000055da10b30d6e in expression_tree_mutator_impl (node=0x55da123ad820,
mutator=0x55da10bf4129 <fix_join_expr_mutator>, context=0x7ffe3bd446a0)
at nodeFuncs.c:3137
temp__state = {l = 0x55da123ad820, i = 0}
resultlist = 0x0
temp = 0x55da123ad838
__func__ = "expression_tree_mutator_impl"
#10 0x000055da10bf44ad in fix_join_expr_mutator (node=0x55da123ad820,
context=0x7ffe3bd446a0) at setrefs.c:3104
newvar = 0x55da123ae080
__func__ = "fix_join_expr_mutator"
#11 0x000055da10bf4113 in fix_join_expr (root=0x55da123949f0,
clauses=0x55da123ad820, outer_itlist=0x55da123adeb0,
inner_itlist=0x55da123ae080, acceptable_rel=0, rtoffset=0,
nrm_match=NRM_EQUAL, num_exec=2) at setrefs.c:2999
context = {root = 0x55da123949f0, outer_itlist = 0x55da123adeb0,
inner_itlist = 0x55da123ae080, acceptable_rel = 0, rtoffset = 0,
nrm_match = NRM_EQUAL, num_exec = 2}
#12 0x000055da10bf2ee3 in set_join_references (root=0x55da123949f0,
join=0x55da123ad850, rtoffset=0) at setrefs.c:2260
outer_plan = 0x55da123ad670
inner_plan = 0x55da123ad790
outer_itlist = 0x55da123adeb0
inner_itlist = 0x55da123ae080
__func__ = "set_join_references"
#13 0x000055da10beff6b in set_plan_refs (root=0x55da123949f0,
plan=0x55da123ad850, rtoffset=0) at setrefs.c:870
l = 0x55da1226a3f0
__func__ = "set_plan_refs"
#14 0x000055da10beea91 in set_plan_references (root=0x55da123949f0,
plan=0x55da123ad850) at setrefs.c:354
result = 0x55da10bcbe95 <create_plan_recurse+134>
glob = 0x55da1226c2d8
rtoffset = 0
lc = 0x0
#15 0x000055da10be043f in standard_planner (parse=0x55da1229de28,
query_string=0x55da1226a508 "SELECT\nFROM (SELECT NULL AS c1\n
LIMIT ALL) AS subq_2\n RIGHT JOIN public.caster AS ref_3 ON
ref_3.int8 > ref_3.int2\n LEFT JOIN (SELECT\n", ' ' <repeats 16
times>, "LIMIT ALL) AS subq_3 ON ref_3.name !~"...,
cursorOptions=2048, boundParams=0x0) at planner.c:504
result = 0x55da10ee048d <SearchCatCacheInternal+607>
glob = 0x55da1226c2d8
tuple_fraction = 0
root = 0x55da123949f0
final_rel = 0x55da123ab050
best_path = 0x55da123aaba0
top_plan = 0x55da123ad850
lp = 0x0
lr = 0x0

-
Robins Tharakan
Amazon Web Services

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Robins Tharakan 2023-02-10 07:34:36 Re: BUG #17781: Assert in setrefs.c
Previous Message Michael Paquier 2023-02-10 06:32:16 Re: BUG #17760: SCRAM authentication fails with "modern" (rsassaPss signature) server certificate