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.96) (envelope-from ) id 1wA7HO-0024qC-33 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 14:19:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wA7HN-000ZAr-1a for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 14:19:45 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wA7HN-000ZAZ-0J for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 14:19:45 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wA7HL-000000012uK-2cTU for pgsql-hackers@postgresql.org; Tue, 07 Apr 2026 14:19:44 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-488b00ed86fso22268575e9.3 for ; Tue, 07 Apr 2026 07:19:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775571582; cv=none; d=google.com; s=arc-20240605; b=AGTyFycd7y+93f84Fz9tY/ogt9ZoOZkCiWTch0WYCB6JTB5R1/PAD7m/ubqyJoud4E hRzeEyh9+rV6zMUkY7CzB18C+Qo4qtfwFT4RgDpjcgwQANuR0jErYeC+GKdviPZQmq/I 6/xSjxhPEtta0/dI3+pHKyjJmLbVZ55KklZLD9HYnzJIVKfgf62oiXYoY77Cy67d/ODW cWAfBg2BuyamM4apqVg7nwh2dae11r2Lz2v3xJpU0pdPleF2l+r9fpOFHIcsWQeTHA3V dRId2G6e/7jkJpIi93qMZJMoCzBCP6jpQPHhYiCDI3onEbw+wK5Ra54ByJBwKTpsYmYh LxIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=n8L7WFmAAAtoiscAaB8Ly29UL/CEiHy/89wxjSg5NOM=; fh=y1Cw/001LHW2uETk2SX7aNhHbaekQb4VGRfVslbXA4U=; b=WRSibo/5VjKHo7mMdA/Ito4vh3SUsAsmv8KQ5dFrlrw8IL1larB9J2Ny3qEX4CINQB Pr8L4aXoSM67wvdsC4oAXLweCo1gPCeQLq7/LRGTCJsrSebU+En/epyWN9c20hmxdaLL BZmPihxIbaBe3l0zMMM85/mf0lSTfNMUzCgoc2tZwZaO7pp77sOdkj55LRxIf3pOqN5q fC4wsAmYz6ZtTGRQMJQwpiVun68YDIAs0BinuRhkbMKRhclewrVgj19W4lREPtM+ywMU susUHaDGio4BolPYeKO+bde72O4jKmUCvCBlR5x0yXRzX4Ja9DKlcJ0H02WZKarwn5t8 IpfQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775571582; x=1776176382; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=n8L7WFmAAAtoiscAaB8Ly29UL/CEiHy/89wxjSg5NOM=; b=dQRZmq+f0K5oJKOfFcKA8En0a78F6bysAaGmLZ1LbV1DoKAYLngs4WBzlYNUsb0QpM FtNL+qy9Fc8DA2r2ZlCyJK3VngYVb6WfnVN32BESEVBCfDoGyBBYdc4W27nU5O0ygpnP bNcWyhYcELktqWEMiH0A3csrh5JPJD49wy/Qx+LGCEuQswanK2XxYo/08Cu2r+e9BVEh la+0R/PznMdz6RhZKsNy8DMO8kJZrMjM4Gjj9zCD8ruaVzlOJ/mRLEz9RcNfeqZwQVQJ C5DCXg1PZDU/RCgwKylZMykPqlIBLLlopw9Ji3k51Jy468woM7wF5CmyxtQQOSTWk1s4 4xDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775571582; x=1776176382; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=n8L7WFmAAAtoiscAaB8Ly29UL/CEiHy/89wxjSg5NOM=; b=rBM/SNqCmyNLmPWSr3rIxt698cpQ7y0YXvub7SKH+sYaCxZR7TdjsA4QehPcTolt1f cKsRcIucprXv1kykVxrqDxPkMFOGZs38EfreDkDvEZx0p2DuVavP0pCyG7xtKMZfUV4X wO7NistcuxKuuONFCp8cott75M/d/S5YTryqTDzQ+cApXuC3AeLjod5zQjlYroeV7Cdi 35RqCn2tu0BikZBuG4kerOsR5MEZXwZg0NQQqR4HbY533lZrn7BgpiJ3iPiOPlvSCSFv v64RWeEyv+0g6SBOSlngP9rEYhW0fwLTHOQ4txax9VnF5Qyy07khE/9RCU2sZ2K1pUso uwog== X-Forwarded-Encrypted: i=1; AJvYcCUAe6uxzKgZvQOCcSNWSL612Sz1q39tDwUYlPzV6FOUgcUC7BDo8LsxkuB0H9VaEATnhbc+XtRI6cH9eTal@postgresql.org X-Gm-Message-State: AOJu0YyzPahco/YvFR8l/Bb82jJmowP+oJJDbDaaSwPuScBTUcF2icg0 HJVMGP+IR/h2rgCGPHdEOy693xJelO1FCDd/YP5WgHNnI9UFny0Hm/snaQcWDu6fgo/tYnyCEro SXHxQuycrgJSfsAN9ORTwf4DnCX8jxig= X-Gm-Gg: AeBDietEnAr5MxN7AsgftXq4wByWMTeW7u44rG0K0p9H+rE2W6elpHMPssgt1s5Od74 9uB+p2axeF+bMEwVcx+WgmzwKe4gg5uCW/vtNpwltrcKbRm/GQIxGqbSCoRbZ9O+z4E4zGhF4Ad FROsaO1cklSpV5qJLhb9k4Z3eeYRjD5bKfrSGtt9NCvt/f3DzNxeo1oUtM9ErQvgkFUSnpiEzcE 3Cs46B9g4fGN/lJ/roaZ3PxIjflTNqAfoEiSLeCGt7izdq448W205RQzfsW9uhUvyADdCNS8Jy3 zjXdetpejZDc6mUCT/ejNOckE1s3VMNa9PJU8b83tfpE+XAwvYjZMGbJ3oaG8w== X-Received: by 2002:a05:600c:3048:b0:488:9bf8:7f17 with SMTP id 5b1f17b1804b1-4889bf8821fmr138094575e9.14.1775571581961; Tue, 07 Apr 2026 07:19:41 -0700 (PDT) MIME-Version: 1.0 References: <8a6799be-bd42-49fb-8914-856c97bb1977@iki.fi> <113724ab-0028-493f-9605-6e8570f0939f@iki.fi> <791c3f18-f4de-4d84-ac6b-c7ccc074dd38@iki.fi> <9d919bd9-94dd-4bda-8ccf-ebced4178c53@iki.fi> <470e7ebe-0971-49f6-8e46-9b8f6395f88b@iki.fi> <87y0iz2c1v.fsf@wibble.ilmari.org> <4297b4ee-5248-415f-ae12-abf2a23f4ab6@iki.fi> In-Reply-To: <4297b4ee-5248-415f-ae12-abf2a23f4ab6@iki.fi> From: Ashutosh Bapat Date: Tue, 7 Apr 2026 19:49:28 +0530 X-Gm-Features: AQROBzC5oq_KsPT-YB9V8SzhBtwABLHm9iWUX31jnGpGkgzaOy5EKLmmQugRMys Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Heikki Linnakangas Cc: =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= , Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="0000000000006b12a5064edf79c0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006b12a5064edf79c0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Heikki, CallShmemCallbacksAfterStartup() holds ShmemIndexLock while invoking init_fn/attach_fn callbacks. That looks wrong. Before this commit, init or attach code was not run with the lock held. Any reason the lock is held while calling init and attach callbacks. Since these function can come from extensions, we don't have control on what goes in those functions, and thus looks problematic. Further, it will serialize all the attach_fn executions across backends, since each will be run under the lock. In my case, the init_fn was performing ShmemIndex lookup which deadlocked. It's questionable whether init function should lookup ShmemIndex but, it's not something that needs to be prohibited either. Here's patch fixing it. -- Best Wishes, Ashutosh Bapat On Tue, Apr 7, 2026 at 6:56=E2=80=AFPM Heikki Linnakangas = wrote: > > On 07/04/2026 15:24, Dagfinn Ilmari Manns=C3=A5ker wrote: > > Heikki Linnakangas writes: > > > >> Those are now committed, and here's a new version rebased over those > >> changes. > > > > I noticed this bit during my habitual morning skim of new commits: > > > >> diff --git a/src/backend/utils/misc/injection_point.c b/src/backend/ut= ils/misc/injection_point.c > >> index c06b0e9b800..9981d6e212f 100644 > >> --- a/src/backend/utils/misc/injection_point.c > >> +++ b/src/backend/utils/misc/injection_point.c > >> @@ -17,6 +17,7 @@ > >> */ > >> #include "postgres.h" > >> > >> +#include "storage/subsystems.h" > >> #include "utils/injection_point.h" > >> > >> #ifdef USE_INJECTION_POINTS > >> @@ -109,6 +110,11 @@ typedef struct InjectionPointCacheEntry > >> > >> static HTAB *InjectionPointCache =3D NULL; > >> > >> +#ifdef USE_INJECTION_POINTS > >> +static void InjectionPointShmemRequest(void *arg); > >> +static void InjectionPointShmemInit(void *arg); > >> +#endif > >> + > > > > This is already inside an `#ifdef USE_INJECTION_POINTS` guard (in fact > > visible at the end of the previous diff hunk), no need for another one. > > Fixed, thanks. I also noticed that the #include "storage/subsystems.h" > can be moved inside the #ifdef block; fixed that too. > > - Heikki > --0000000000006b12a5064edf79c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260407-0001-Unlock-ShmemIndexLock-before-calling-init_.patch" Content-Disposition: attachment; filename="v20260407-0001-Unlock-ShmemIndexLock-before-calling-init_.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnopgg4c0 RnJvbSBmMDhiZjk0YjRmMThjN2FlYTljNmU3ZDNmMzIxYzE1M2RhN2E3NmQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCA3IEFwciAyMDI2IDE5OjI0OjE1ICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2MjAyNjA0MDddIFVubG9jayBTaG1lbUluZGV4TG9jayBiZWZvcmUgY2FsbGluZyBpbml0 X2ZuCiBjYWxsYmFjawoKQ2FsbFNobWVtQ2FsbGJhY2tzQWZ0ZXJTdGFydHVwKCkgY2FsbHMgaW5p dF9mbiBvciBhdHRhY2hfZm4gY2FsbGJhY2tzCndoaWxlIGhvbGRpbmcgU2htZW1JbmRleExvY2su IFRob3NlIGNhbGxiYWNrcyBkbyBub3QgcmVxdWlyZSB0aGUgbG9jayB0bwpiZSBoZWxkLiBCZWZv cmUgZDQ4ODVhZjNkNjUzMjVjMWZjZDMxOWU5OGM2MzRmZGU5YTIwMDQ0MywgY29kZQppbml0aWFs aXppbmcgdGhlIHNoYXJlZCBzdHJ1Y3R1cmVzIGV4ZWN1dGVkIHdpdGhvdXQgaG9sZGluZwpTaG1l bUluZGV4TG9jay4KCk9uIHRoZSBvdGhlciBoYW5kLCB0aG9zZSBjYWxsYmFja3MgbWF5IGJlIHBl cmZvcm1pbmcgbG9uZyBydW5uaW5nCm9wZXJhdGlvbnMgbGlrZSBkaXNrIGFjY2VzcyBlLmcuIHBn c3Nfc2htZW1faW5pdC4gSG9sZGluZyBhIGxpZ2h0d2VpZ2h0CmxvY2sgdGhhdCBsb25nIHNob3Vs ZCBiZSBhdm9pZGVkLCBpZiBwb3NzaWJsZS4gSXQgd2lsbCBjYXVzZSBhIGRlbGF5IGluCmxvYWRp bmcgYW4gZXh0ZW5zaW9uIGluIGFsbCB0aGUgYmFja2VuZHMgc2luY2UgYWxsIGF0dGFjaF9mbnMg d2lsbCBiZQpzZXJpYWxpemVkLgoKQXV0aG9yOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFw YXQub3NzQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIHwg MyArKy0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2htZW0uYwppbmRleCAxZWJmZmU1YTMyYS4uNjZiOTU3MTMwMjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtOTU2LDYgKzk1Niw4IEBAIENhbGxTaG1lbUNhbGxiYWNr c0FmdGVyU3RhcnR1cChjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJhY2tzKQogCWxpc3RfZnJl ZV9kZWVwKHBlbmRpbmdfc2htZW1fcmVxdWVzdHMpOwogCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMg PSBOSUw7CiAKKwlMV0xvY2tSZWxlYXNlKFNobWVtSW5kZXhMb2NrKTsKKwogCS8qIEZpbmlzaCBi eSBjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSBzdWJzeXN0ZW0tc3BlY2lmaWMgY2FsbGJhY2sgKi8K IAlpZiAoZm91bmRfYW55KQogCXsKQEAgLTk2OCw3ICs5NzAsNiBAQCBDYWxsU2htZW1DYWxsYmFj a3NBZnRlclN0YXJ0dXAoY29uc3QgU2htZW1DYWxsYmFja3MgKmNhbGxiYWNrcykKIAkJCWNhbGxi YWNrcy0+aW5pdF9mbihjYWxsYmFja3MtPm9wYXF1ZV9hcmcpOwogCX0KIAotCUxXTG9ja1JlbGVh c2UoU2htZW1JbmRleExvY2spOwogCXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfRE9ORTsKIH0K IAoKYmFzZS1jb21taXQ6IDI5ZTdkYmY1ZTRkYWE4ZmFmYzJiMThhMTU1MWU3YjMxYzg4NDczNDAK LS0gCjIuMzQuMQoK --0000000000006b12a5064edf79c0--