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 1tQQlN-002WWS-Jl for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Dec 2024 12:45:21 +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 1tQQkN-00DO5a-1m for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Dec 2024 12:44:18 +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.94.2) (envelope-from <3danissimo@gmail.com>) id 1tQQkM-00DO5R-Jo for pgsql-hackers@lists.postgresql.org; Wed, 25 Dec 2024 12:44:18 +0000 Received: from mail-yb1-xb35.google.com ([2607:f8b0:4864:20::b35]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1tQQkJ-000V2h-2c for pgsql-hackers@postgresql.org; Wed, 25 Dec 2024 12:44:16 +0000 Received: by mail-yb1-xb35.google.com with SMTP id 3f1490d57ef6-e3978c00a5aso5510714276.1 for ; Wed, 25 Dec 2024 04:44:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735130655; x=1735735455; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=0RzvDVs//BQroH1Z0vpUXt0fZwjDCLeGpM1XCNrW+nk=; b=mw59DIX3ws6ZIlAIPFrctE0frmynXDjWGGvwetBqMaKeJkZQToaCJHt094A5kAIpVH DSxiUGpXzLOOxUL2j3zipOSPxOLtIB0gmq3ov9YQssbKjTJGlyqlgkwJfb9kkObDbTdO DuA6qnoJTncxJX2iSiudcf15C3+Na/MLGLBdWbx18xaDLckgdFYm//FLn5fSUJ5Vu9H7 h73RepTWgcJ/4QW+PR9tmwE1+B2IP52OnNl/Y0tnlU/vJjHkMouZ8vfEbGJ+aTNbucy/ h+Etxngvo04ujMEgBUPyuAmfcXVGxFhWGGClhgCCYt9ffee6oD9GksRHMPmbiH55/u2Y ja4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735130655; x=1735735455; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=0RzvDVs//BQroH1Z0vpUXt0fZwjDCLeGpM1XCNrW+nk=; b=NB7V/ToM9pFKmdkaXAt/YCkUIieHraOWoLFQLtgCGEHLkCbVdJsCjrFGA4vMbjaVyj 1JilhMToYvUObrvr1e13/UtxKhcqCdhqs34HLasMydaAs5hg1PSoTfIC3lKh3DhgEj/U L0RFwFtBarLgpu056eS1tIxLRAiLlR2iXxLHlj9r0KfXsHb3bhqri2H5cOTvw9zR9UE4 BVSJMXmbUKF+XPASMZp3Jiu9sXMme8CrGX4OzpIXGKMA2wpZNQq7evtL7kFf1PYQOSHZ aqdKdVS7FqbhSf0eIPuhv4mwRuCsbWCpa/ZCwIIf/ijqysl16xEqu8Wmx1W9xW7LYG8B Ge0w== X-Gm-Message-State: AOJu0YytThK61d/ekjq+n4CaPY7leA8rk8sodaQrFnupWEOtimbPkOuU 1eG4EchJm+UdCATuz89zw2JR5SpCakVOIPCv88g8+5XuDOa1n50RTjSV1MyFLg0IEknCbg2oh4o KV8M+v3nadXFupI5RrYi1dvDsEUjJCOE3GXs= X-Gm-Gg: ASbGncuC9moGCucwG1fSS1ToZdqeK09ZbtwYfs8UMR8ApJe/JwIkJb30UrAJqleR5zm dkrhwqvFi/TFyOaHEKg409Vi+AjFr+gaF5ltfpvI= X-Google-Smtp-Source: AGHT+IFsaVUdQtOtuyOZALgpAJCtp8zBZTx3hW/QvU9v07C0aOXZInoiNc1QPcPGPGw2li2kuhZHo1EN4kUsXbEKwlA= X-Received: by 2002:a05:690c:112:b0:6ef:7c8e:f00e with SMTP id 00721157ae682-6f3f8236f71mr157612727b3.35.1735130654795; Wed, 25 Dec 2024 04:44:14 -0800 (PST) MIME-Version: 1.0 From: Daniil Davydov <3danissimo@gmail.com> Date: Wed, 25 Dec 2024 19:44:03 +0700 Message-ID: Subject: Improve consistency checks in tbm_prepare_shared_iterate To: pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="00000000000051a7c8062a179654" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000051a7c8062a179654 Content-Type: text/plain; charset="UTF-8" Hi, Currently, iterating through TIDBitmap contains this code (REL_16_STABLE) : *** while ((page = pagetable_iterate(tbm->pagetable, &i)) != NULL) { idx = page - ptbase->ptentry; if (page->ischunk) ptchunks->index[nchunks++] = idx; else ptpages->index[npages++] = idx; } Assert(npages == tbm->npages); Assert(nchunks == tbm->nchunks); *** Two asserts in the end seem to be overdue to me, because if (for example) nchunks > tbm->nchunks (due to another error), we have already accessed to invalid memory chunk and overwritten it. If we want to monitor the correctness of these variables, it might be better to add a few checks, as in the attached patch. I'm not sure if the comment in the error message is written correctly, but first I would like to hear your opinion. -- Best regards, Daniil Davydov --00000000000051a7c8062a179654 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-new-checks-for-tidbitmap-scan.patch" Content-Disposition: attachment; filename="0001-Add-new-checks-for-tidbitmap-scan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m53vlx9h0 RnJvbSAwNGU0MTk2OWVmOWVhMmM5NmFmMjE4YTU1MTliNWVmYjE5YmFlZWQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZGF2eWRvdmRhbmlpbDUwMUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjUgRGVjIDIwMjQgMTk6MzI6NTUgKzA3MDAKU3ViamVjdDogW1BB VENIXSBBZGQgbmV3IGNoZWNrcyBmb3IgdGlkYml0bWFwIHNjYW4KCi0tLQogc3JjL2JhY2tlbmQv bm9kZXMvdGlkYml0bWFwLmMgfCAxMSArKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy90aWRiaXRtYXAuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3RpZGJpdG1hcC5jCmluZGV4IDI5YTE4 NTg0NDEwLi4zNGEwMTVlNWVhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvdGlkYml0 bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvdGlkYml0bWFwLmMKQEAgLTgyNywxMCArODI3 LDE3IEBAIHRibV9wcmVwYXJlX3NoYXJlZF9pdGVyYXRlKFRJREJpdG1hcCAqdGJtKQogCQkJd2hp bGUgKChwYWdlID0gcGFnZXRhYmxlX2l0ZXJhdGUodGJtLT5wYWdldGFibGUsICZpKSkgIT0gTlVM TCkKIAkJCXsKIAkJCQlpZHggPSBwYWdlIC0gcHRiYXNlLT5wdGVudHJ5OwotCQkJCWlmIChwYWdl LT5pc2NodW5rKQorCQkJCWlmIChwYWdlLT5pc2NodW5rICYmIChuY2h1bmtzICsgMSA8PSB0Ym0t Pm5jaHVua3MpKQogCQkJCQlwdGNodW5rcy0+aW5kZXhbbmNodW5rcysrXSA9IGlkeDsKLQkJCQll bHNlCisJCQkJZWxzZSBpZiAobnBhZ2VzICsgMSA8PSB0Ym0tPm5wYWdlcykKIAkJCQkJcHRwYWdl cy0+aW5kZXhbbnBhZ2VzKytdID0gaWR4OworCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVEVSTkFMX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNn KCJpbnZhbGlkIGNodW5rcy9wYWdlcyBudW0gaW4gdGlkYml0bWFwIDogJWQiCisJCQkJCQkJIAkJ IiBjaHVua3MgbWV0IG9mICVkIGF2YWlsYWJsZSwgJWQgcGFnZXMgbWV0ICIKKwkJCQkJCQkJCSJv ZiAlZCBhdmFpbGFibGUiLCBuY2h1bmtzLCB0Ym0tPm5jaHVua3MsCisJCQkJCQkJCQlucGFnZXMs IHRibS0+bnBhZ2VzKSkpOwogCQkJfQogCiAJCQlBc3NlcnQobnBhZ2VzID09IHRibS0+bnBhZ2Vz KTsKLS0gCjIuNDMuMAoK --00000000000051a7c8062a179654--