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 1mDQaw-0001BF-Pn for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Aug 2021 12:10:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mDQav-0000Ns-50 for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Aug 2021 12:10:57 +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 1mDQau-0000Nk-Sj for pgsql-hackers@lists.postgresql.org; Tue, 10 Aug 2021 12:10:56 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mDQap-0002GK-By for pgsql-hackers@lists.postgresql.org; Tue, 10 Aug 2021 12:10:55 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 4C3A521CB9CA; Tue, 10 Aug 2021 15:10:49 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1628597449; bh=UkDDwNEBfCRNxEjTsgGhxlAG6wwmLj37+GplAi2hbY0=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=kYy8x+2snqTWptsToZivBnmhgSymhu4k6KaGV1QZaHA0PH4vFJC0auBPa3S4iSwdz lY5geGLMN4/xT62m/xmh8JAhs0PeASpMIWTOhvUamGKeSCz/hABRfyB8jerBcRaV0G Jf1yDBjzZDQaWUMEqrOwggj1ZPJqTvkcqePa/b/U= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_faec255e0455877af49b1097151268b1" Content-Transfer-Encoding: 8bit Date: Tue, 10 Aug 2021 15:10:49 +0300 From: Yura Sokolov To: Ranier Vilela Cc: PostgreSQL Hackers , Andres Freund , Tomas Vondra Subject: Re: Bug in huge simplehash In-Reply-To: References: User-Agent: Roundcube Webmail/1.4.0 Message-ID: X-Sender: y.sokolov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_faec255e0455877af49b1097151268b1 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Ranier Vilela писал 2021-08-10 14:21: > Em ter., 10 de ago. de 2021 às 05:53, Yura Sokolov > escreveu: > >> >> I went to check SH_GROW and.... It is `SH_GROW(SH_TYPE *tb, uint32 >> newsize)` >> :-((( >> Therefore when `tb->size == SH_MAX_SIZE/2` and we call `SH_GROW(tb, >> tb->size * 2)`, >> then SH_GROW(tb, 0) is called due to truncation. >> And SH_COMPUTE_PARAMETERS is also accepts `uint32 newsize`. >> >> Ahh... ok, patch is updated to fix this as well. > > It seems that we need to fix the function prototype too. > > /* void _grow(_hash *tb) */ > -SH_SCOPE void SH_GROW(SH_TYPE * tb, uint32 newsize); +SH_SCOPE void > SH_GROW(SH_TYPE * tb, uint64 newsize); Ahh... Thank you, Ranier. Attached v2. regards, ----- Yura Sokolov --=_faec255e0455877af49b1097151268b1 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0001-Fix-new-size-and-sizemask-computaton-in-simplehash.h.patch Content-Disposition: attachment; filename*0*=UTF-8''v2-0001-Fix-new-size-and-sizemask-computaton-in-simple; filename*1*=hash.h.patch; size=1998 RnJvbSA4MmY0NDk4OTZkNjJiZTg0NDA5MzRkOTU1ZDRlMzY4ZjA1NzAwNWE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdXJhIFNva29sb3YgPHkuc29rb2xvdkBwb3N0Z3Jlc3Byby5y dT4KRGF0ZTogVHVlLCAxMCBBdWcgMjAyMSAxMTo1MToxNiArMDMwMApTdWJqZWN0OiBbUEFUQ0hd IEZpeCBuZXcgc2l6ZSBhbmQgc2l6ZW1hc2sgY29tcHV0YXRvbiBpbiBzaW1wbGVoYXNoLmgKCkZp eCBjb3VwbGUgb2YgMzIvNjRiaXQgcmVsYXRlZCBlcnJvcnMgaW4gc2ltcGxlaGFzaC5oOgotIHNp emUgb2YgU0hfR1JPVyBhbmQgU0hfQ09NUFVURV9QQVJBTUVURVJTIGFyZ3VtZW50cwotIGNvbXB1 dGF0aW9uIG9mIHRiLT5zaXplbWFzay4KLS0tCiBzcmMvaW5jbHVkZS9saWIvc2ltcGxlaGFzaC5o IHwgMTQgKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDkg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3NpbXBsZWhhc2guaCBi L3NyYy9pbmNsdWRlL2xpYi9zaW1wbGVoYXNoLmgKaW5kZXggZGE1MTc4MWU5OGUuLmFkZGE1NTk4 MzM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWIvc2ltcGxlaGFzaC5oCisrKyBiL3NyYy9p bmNsdWRlL2xpYi9zaW1wbGVoYXNoLmgKQEAgLTE5OCw4ICsxOTgsOCBAQCBTSF9TQ09QRSB2b2lk IFNIX0RFU1RST1koU0hfVFlQRSAqIHRiKTsKIC8qIHZvaWQgPHByZWZpeD5fcmVzZXQoPHByZWZp eD5faGFzaCAqdGIpICovCiBTSF9TQ09QRSB2b2lkIFNIX1JFU0VUKFNIX1RZUEUgKiB0Yik7CiAK LS8qIHZvaWQgPHByZWZpeD5fZ3Jvdyg8cHJlZml4Pl9oYXNoICp0YikgKi8KLVNIX1NDT1BFIHZv aWQgU0hfR1JPVyhTSF9UWVBFICogdGIsIHVpbnQzMiBuZXdzaXplKTsKKy8qIHZvaWQgPHByZWZp eD5fZ3Jvdyg8cHJlZml4Pl9oYXNoICp0YiwgdWludDY0IG5ld3NpemUpICovCitTSF9TQ09QRSB2 b2lkIFNIX0dST1coU0hfVFlQRSAqIHRiLCB1aW50NjQgbmV3c2l6ZSk7CiAKIC8qIDxlbGVtZW50 PiAqPHByZWZpeD5faW5zZXJ0KDxwcmVmaXg+X2hhc2ggKnRiLCA8a2V5PiBrZXksIGJvb2wgKmZv dW5kKSAqLwogU0hfU0NPUEUJU0hfRUxFTUVOVF9UWVBFICpTSF9JTlNFUlQoU0hfVFlQRSAqIHRi LCBTSF9LRVlfVFlQRSBrZXksIGJvb2wgKmZvdW5kKTsKQEAgLTMwMiw3ICszMDIsNyBAQCBTSF9T Q09QRSB2b2lkIFNIX1NUQVQoU0hfVFlQRSAqIHRiKTsKICAqIHRoZSBoYXNodGFibGUuCiAgKi8K IHN0YXRpYyBpbmxpbmUgdm9pZAotU0hfQ09NUFVURV9QQVJBTUVURVJTKFNIX1RZUEUgKiB0Yiwg dWludDMyIG5ld3NpemUpCitTSF9DT01QVVRFX1BBUkFNRVRFUlMoU0hfVFlQRSAqIHRiLCB1aW50 NjQgbmV3c2l6ZSkKIHsKIAl1aW50NjQJCXNpemU7CiAKQEAgLTMyMiwxMSArMzIyLDcgQEAgU0hf Q09NUFVURV9QQVJBTUVURVJTKFNIX1RZUEUgKiB0YiwgdWludDMyIG5ld3NpemUpCiAKIAkvKiBu b3cgc2V0IHNpemUgKi8KIAl0Yi0+c2l6ZSA9IHNpemU7Ci0KLQlpZiAodGItPnNpemUgPT0gU0hf TUFYX1NJWkUpCi0JCXRiLT5zaXplbWFzayA9IDA7Ci0JZWxzZQotCQl0Yi0+c2l6ZW1hc2sgPSB0 Yi0+c2l6ZSAtIDE7CisJdGItPnNpemVtYXNrID0gKHVpbnQzMikoc2l6ZSAtIDEpOwogCiAJLyoK IAkgKiBDb21wdXRlIHRoZSBuZXh0IHRocmVzaG9sZCBhdCB3aGljaCB3ZSBuZWVkIHRvIGdyb3cg dGhlIGhhc2ggdGFibGUKQEAgLTQ3Niw3ICs0NzIsNyBAQCBTSF9SRVNFVChTSF9UWVBFICogdGIp CiAgKiBwZXJmb3JtYW5jZS13aXNlLCB3aGVuIGtub3duIGF0IHNvbWUgcG9pbnQuCiAgKi8KIFNI X1NDT1BFIHZvaWQKLVNIX0dST1coU0hfVFlQRSAqIHRiLCB1aW50MzIgbmV3c2l6ZSkKK1NIX0dS T1coU0hfVFlQRSAqIHRiLCB1aW50NjQgbmV3c2l6ZSkKIHsKIAl1aW50NjQJCW9sZHNpemUgPSB0 Yi0+c2l6ZTsKIAlTSF9FTEVNRU5UX1RZUEUgKm9sZGRhdGEgPSB0Yi0+ZGF0YTsKLS0gCjIuMzIu MAoK --=_faec255e0455877af49b1097151268b1--