Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r9nfT-002MZ4-8i for pgsql-hackers@arkaria.postgresql.org; Sun, 03 Dec 2023 14:41:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r9nfR-00Cb7A-Qj for pgsql-hackers@arkaria.postgresql.org; Sun, 03 Dec 2023 14:41:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r9nfR-00Cb72-DQ for pgsql-hackers@lists.postgresql.org; Sun, 03 Dec 2023 14:41:57 +0000 Received: from meesny.iki.fi ([195.140.195.201]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r9nfP-009td1-IQ for pgsql-hackers@postgresql.org; Sun, 03 Dec 2023 14:41:56 +0000 Received: from [192.168.1.115] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by meesny.iki.fi (Postfix) with ESMTPSA id 4SjqHz6gRhzyYF; Sun, 3 Dec 2023 16:41:48 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1701614512; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6kEtlZdbkcTzyw9wtrter4EVwmIZ9vFbkxyFu/h1n/o=; b=HRygouwTqW2YsD418opTHi+gI0zGCRHOWrHElhpw8nObyGs0yuwcYnDaFCPNteAyFigN9l 5Im9j1SNOoFnsTkRmWRXIExlHRrExdk/IeKrefTrvqgUuwmntG3Vv8ODVOpGa+AyJWxS9P uG1J++HBBoXPWK9FEj7s7BsaHxH3ocE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1701614512; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6kEtlZdbkcTzyw9wtrter4EVwmIZ9vFbkxyFu/h1n/o=; b=f0ya4mRIwdYnu0+s++CIq8vB7ibMbXQ0ZrwypBqWzng1z5iMxW1kYjVFvN+ivc1Y/CFaVY FJ+3eaGMu2GcIsy/cc4+vXmXyQS06MC8YQV4cVCVLNi3xeThkld/JVKe2TxmHsWypLvxnr 5my4aPkvrvG8RCDVZALPL/cyhaUJZA4= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Seal: i=1; s=meesny; d=iki.fi; t=1701614512; a=rsa-sha256; cv=none; b=Pbx+TMVFWzlzg9weQuxduUUcHRff/QJbBrxWx6AHo75NY794R+udmQ/XnvcYkB7QewPLIf E9y/jllLLhWBjz4FOqvu4GiOySbL7JaM8/p500XuovawG8i86+gNbw+85ZgB9CeJDTpyX8 UmiPslXK2lWejPmUKEsjOrPsis2x1Uk= Message-ID: <70e5dada-3cd4-4d7e-80eb-e841a6f35df8@iki.fi> Date: Sun, 3 Dec 2023 16:41:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Refactoring backend fork+exec code Content-Language: en-US To: Alexander Lakhin , Tristan Partin , Andres Freund Cc: pgsql-hackers , Thomas Munro References: <7a59b073-5b5b-151e-7ed3-8b01ff7ce9ef@iki.fi> <20230710225043.svl7fqxecwshwc7a@awork3.anarazel.de> <119551e6-60f6-49b2-ae04-a382a89f900c@iki.fi> <3b02a5a1-81ea-44e4-a09e-c0a594a4cef8@iki.fi> <014768ed-8b39-c44f-b07c-098c87b1644c@gmail.com> <5e976369-2925-e0cc-b5a1-e9e356264596@gmail.com> From: Heikki Linnakangas In-Reply-To: <5e976369-2925-e0cc-b5a1-e9e356264596@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 02/12/2023 05:00, Alexander Lakhin wrote: > What bothered me additionally, is an error detected after server start. I > couldn't see it without the patches applied. I mean, on HEAD I now see > `make check` passing, but with the patches it fails: > ... > # parallel group (20 tests):  interval date numerology polygon box macaddr8 macaddr multirangetypes line timestamp > timetz timestamptz time circle strings lseg inet md5 path point > not ok 22    + strings                                  1048 ms > # (test process exited with exit code 2) > not ok 23    + md5                                      1052 ms > # (test process exited with exit code 2) > ... > src/test/regress/log/postmaster.log contains: > ==00:00:00:30.730 1713480== Syscall param write(buf) points to uninitialised byte(s) > ==00:00:00:30.730 1713480==    at 0x5245A37: write (write.c:26) > ==00:00:00:30.730 1713480==    by 0x51BBF6C: _IO_file_write@@GLIBC_2.2.5 (fileops.c:1180) > ==00:00:00:30.730 1713480==    by 0x51BC84F: new_do_write (fileops.c:448) > ==00:00:00:30.730 1713480==    by 0x51BC84F: _IO_new_file_xsputn (fileops.c:1254) > ==00:00:00:30.730 1713480==    by 0x51BC84F: _IO_file_xsputn@@GLIBC_2.2.5 (fileops.c:1196) > ==00:00:00:30.730 1713480==    by 0x51B1056: fwrite (iofwrite.c:39) > ==00:00:00:30.730 1713480==    by 0x5540CF: internal_forkexec (postmaster.c:4526) > ==00:00:00:30.730 1713480==    by 0x5543C0: bgworker_forkexec (postmaster.c:5624) > ==00:00:00:30.730 1713480==    by 0x555477: do_start_bgworker (postmaster.c:5665) > ==00:00:00:30.730 1713480==    by 0x555738: maybe_start_bgworkers (postmaster.c:5928) > ==00:00:00:30.730 1713480==    by 0x556072: process_pm_pmsignal (postmaster.c:5080) > ==00:00:00:30.730 1713480==    by 0x556610: ServerLoop (postmaster.c:1761) > ==00:00:00:30.730 1713480==    by 0x557BE2: PostmasterMain (postmaster.c:1469) > ==00:00:00:30.730 1713480==    by 0x47216B: main (main.c:198) > ==00:00:00:30.730 1713480==  Address 0x1ffeffd8c0 is on thread 1's stack > ==00:00:00:30.730 1713480==  in frame #4, created by internal_forkexec (postmaster.c:4482) > ==00:00:00:30.730 1713480== > ... Ack, I see this too. I fixed it by adding MCXT_ALLOC_ZERO to the allocation of the BackendWorker struct. That's a little heavy-handed, like with the previous failures the uninitialized padding bytes are written to the file and read back, but not accessed after that. But it seems like the simplest fix. This isn't performance critical after all. I also renamed the 'has_worker' field to 'has_bgworker', per Tristan's suggestion. Pushed with those changes. Thanks for the reviews! > 2023-12-02 05:14:30.751 MSK client backend[1713740] pg_regress/rangetypes FATAL:  terminating connection due to > unexpected postmaster exit > 2023-12-02 05:14:31.033 MSK client backend[1713734] pg_regress/numeric FATAL:  postmaster exited during a parallel > transaction > TRAP: failed Assert("!IsTransactionOrTransactionBlock()"), File: "pgstat.c", Line: 591, PID: 1713734 > > I haven't looked deeper yet, but it seems that we see two issues here (and > Assert is not directly caused by the patches set.) I have not been able to reproduce this one. -- Heikki Linnakangas Neon (https://neon.tech)