Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mixKQ-0005e1-PP for pgsql-bugs@arkaria.postgresql.org; Fri, 05 Nov 2021 11:24:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mixKP-00069c-Cd for pgsql-bugs@arkaria.postgresql.org; Fri, 05 Nov 2021 11:24:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mixKO-00069S-Ta for pgsql-bugs@lists.postgresql.org; Fri, 05 Nov 2021 11:24:13 +0000 Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mixKL-0005yJ-IX for pgsql-bugs@lists.postgresql.org; Fri, 05 Nov 2021 11:24:11 +0000 Received: by mail-qt1-x835.google.com with SMTP id d21so6775833qtw.11 for ; Fri, 05 Nov 2021 04:24:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leadboat.com; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=Jn4J1BrvXN7hy/tcLjrlcs3K+ZBC14F9Cz1PC2O01sc=; b=M2zHhL3Tt8A3uQFDsbnFcO77J4zjgTnFKiIRQ3+QKJpvPOq5EGngwNpOxUdJDS+xVg yIMNUjkb3s3XKVRYpK3Pu/ahFqjI5MeJ/M1V8Cl3vZzptld1rj2MbcUjVpZS6ywbLO7P fCgHCiNdXkYM23lJHbiPdPeNhrRViKRVtFtWk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Jn4J1BrvXN7hy/tcLjrlcs3K+ZBC14F9Cz1PC2O01sc=; b=5gZ3WxOps7nkn7tCfRjK1zQMygpO8R1rQ//SVKOs45+a6CxHipHiV2tZD6TpYZqWJp D4Ewja58BN/Mn5viEHHb2sS1BJYjDW489qzaE+rQYjTf2L5B52OO+IDXHX1/1HuoCuBe 6++j4o5TdMAU79C8PLCeCKy0pivgeFMQDgit8kw2yifRdQotHtXquv2iao4IYzVzvv8v d79H0ldr+dJUIvGKJm75UB2VbBk63dv+FpWUazraHGuSZwJBRnT9CHuIdi6YaR2robfI yJoxvG2rhs3ru9foeMUdmxYLjV0WDqWn/IeRktS9QPq/sTYeoBHfSfekLiTLpFNY1OTU 32vg== X-Gm-Message-State: AOAM531M55Y6nsLJE/XfTTpQza02hBlVe19MAOo4WGQOj2Wih02GDrE0 ZJoFi3yUmBiL1ymA91mrjKM0eQ== X-Google-Smtp-Source: ABdhPJwVv3+QR6wRdiMofGOJjy8w5bw/MxznswN42r+TRyQv1ebD9FJ+RH7u7bMjGMCr+ip6hX0Jvg== X-Received: by 2002:a05:622a:18e:: with SMTP id s14mr19268302qtw.203.1636111448418; Fri, 05 Nov 2021 04:24:08 -0700 (PDT) Received: from rfd.leadboat.com ([2600:1702:a20:5750::46]) by smtp.gmail.com with ESMTPSA id v3sm5165160qkd.20.2021.11.05.04.22.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Nov 2021 04:23:31 -0700 (PDT) Date: Fri, 5 Nov 2021 04:22:36 -0700 From: Noah Misch To: Semab Tariq Cc: Thomas Munro , Sandeep Thakkar , Robert Haas , Andrey Borodin , Andres Freund , CM Team , PostgreSQL mailing lists , Michael Paquier , Tom Lane , Peter Geoghegan Subject: Re: CREATE INDEX CONCURRENTLY does not index prepared xact's data Message-ID: <20211105112236.GA711250@rfd.leadboat.com> References: <20211103044203.GA570491@rfd.leadboat.com> <20211105013553.GA671366@rfd.leadboat.com> <20211105090347.GB671366@rfd.leadboat.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Qxx1br4bt0+wmkIi" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --Qxx1br4bt0+wmkIi Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Fri, Nov 05, 2021 at 03:21:15PM +0500, Semab Tariq wrote: > Breakpoint 1, 0x40000000003fcb50:0 in equalTupleDescs ( > tupdesc1=0x40010006f968, tupdesc2=0x87ffffffffffac50) The addresses there are weird. tupdesc1 is neither a stack address nor a heap address; it may be in a program text section. tupdesc2 is a stack address. In the earlier stack trace from https://postgr.es/m/CANFyU94Xa8a5+4sZ7PxOiDLq+yN89g6y-9nNk-eLEvX6YUXbXA@mail.gmail.com both tupdesc1 and tupdesc2 were heap addresses. > /home/pgbfarm/buildroot-gharial-HEAD/postgresql/src/test/subscription/tmp_check/t_080_step_equalTupleDescs_main_data/commands-gdb:8: Error in sourced command file: > Error accessing memory address 0x40010006f968: Bad address. Thanks. Please try the attached test version, which avoids exiting too early like the last version did. --Qxx1br4bt0+wmkIi Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="step-to-crash-v0.2.patch" Author: Noah Misch Commit: Noah Misch diff --git a/src/test/subscription/t/080_step_equalTupleDescs.pl b/src/test/subscription/t/080_step_equalTupleDescs.pl new file mode 100644 index 0000000..f55bd5b --- /dev/null +++ b/src/test/subscription/t/080_step_equalTupleDescs.pl @@ -0,0 +1,111 @@ +# run with: make -C src/test/subscription check PROVE_TESTS=t/080_step_equalTupleDescs.pl +# email src/test/subscription/tmp_check/log/regress_log_080_step_equalTupleDescs + +use strict; +use warnings; +use PostgreSQL::Test::Cluster; +use PostgreSQL::Test::Utils; +use Test::More tests => 1; +use IPC::Run; + +my $node = PostgreSQL::Test::Cluster->new('main'); +$node->init; +$node->start; + +my $in = ''; +my $out = ''; +my $timer = IPC::Run::timeout(180); +my $psql = $node->background_psql('postgres', \$in, \$out, $timer, + on_error_stop => 0); + +$in .= q{ +SELECT pg_backend_pid(), 'after_pid'; +}; +$psql->pump until $out =~ /^([0-9]*)\|after_pid/m; +my $pid = $1; +print "backend pid: $pid\n"; + +$ENV{PATH} =~ /^([^:]*):/; +my $bindir = $1; +die "could not guess bindir from PATH=$ENV{PATH}" unless $1; + +my $gdb_in = ''; +my $gdb_cmdline = [qw(gdb --nx --pid), $pid, "$bindir/postgres"]; +print("# Running: " . join(" ", @{$gdb_cmdline}) . "\n"); +my $gdb = IPC::Run::start($gdb_cmdline, '<', \$gdb_in, $timer); + +$gdb_in = q{ +b equalTupleDescs +ignore 1 9 +set logging file } . $node->basedir . q{/gdb_started.txt +set logging on +set logging off +}; +$gdb->pump until $gdb_in eq ''; +sleep .1 while !-f $node->basedir.'/gdb_started.txt'; + +# first 28 lines of src/test/regress/sql/alter_table.sql +$in .= q{ +-- +-- ALTER_TABLE +-- + +-- Clean up in case a prior regression run failed +SET client_min_messages TO 'warning'; +DROP ROLE IF EXISTS regress_alter_table_user1; +RESET client_min_messages; + +CREATE USER regress_alter_table_user1; + +-- +-- add attribute +-- + +CREATE TABLE attmp (initial int4); + +COMMENT ON TABLE attmp_wrong IS 'table comment'; +COMMENT ON TABLE attmp IS 'table comment'; +COMMENT ON TABLE attmp IS NULL; + +ALTER TABLE attmp ADD COLUMN xmin integer; -- fails + +ALTER TABLE attmp ADD COLUMN a int4 default 3; + +ALTER TABLE attmp ADD COLUMN b name; + +ALTER TABLE attmp ADD COLUMN c text; +}; + +$in .= q{ +\q +}; + +$gdb_in .= q{ +continue +p *tupdesc1 +p *tupdesc2 +p tupdesc1->attrs[0] +p tupdesc1->attrs[1] +p tupdesc1->attrs[2] +p tupdesc2->attrs[0] +p tupdesc2->attrs[1] +p tupdesc2->attrs[2] +backtrace full +set $loopvar = 25000 +while ($loopvar--) + stepi +end +maintenance info sections ALLOBJ +quit +}; + +for (;;) { + $psql->pump_nb; + $gdb->pump_nb; + last if $in eq '' && $gdb_in eq ''; + sleep .1; +} + +$psql->finish; +$gdb->finish; +ok(1); --Qxx1br4bt0+wmkIi--