Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMKhj-0006hY-6f for pgsql-bugs@arkaria.postgresql.org; Tue, 05 Dec 2017 21:24:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMKhi-000349-Iy for pgsql-bugs@arkaria.postgresql.org; Tue, 05 Dec 2017 21:24:38 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eMKgN-0007LW-Cy for pgsql-bugs@lists.postgresql.org; Tue, 05 Dec 2017 21:23:15 +0000 Received: from mail-cys01nam02on0044.outbound.protection.outlook.com ([104.47.37.44] helo=NAM02-CY1-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eMKgJ-0002oI-PT for pgsql-bugs@postgresql.org; Tue, 05 Dec 2017 21:23:14 +0000 Received: from MWHPR1001CA0008.namprd10.prod.outlook.com (10.174.165.21) by CY1PR10MB0634.namprd10.prod.outlook.com (10.163.144.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Tue, 5 Dec 2017 21:23:05 +0000 Received: from BL2NAM02FT051.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::203) by MWHPR1001CA0008.outlook.office365.com (2603:10b6:301:2a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.282.5 via Frontend Transport; Tue, 5 Dec 2017 21:23:04 +0000 Authentication-Results: spf=permerror (sender IP is 192.231.134.1) smtp.mailfrom=blackducksoftware.com; 2ndquadrant.com; dkim=none (message not signed) header.d=none;2ndquadrant.com; dmarc=fail action=none header.from=blackducksoftware.com; Received-SPF: PermError (protection.outlook.com: domain of blackducksoftware.com used an invalid SPF mechanism) Received: from ops-mail01.dc2.lan (192.231.134.1) by BL2NAM02FT051.mail.protection.outlook.com (10.152.76.181) with Microsoft SMTP Server id 15.20.282.5 via Frontend Transport; Tue, 5 Dec 2017 21:23:02 +0000 Received: from bds01237.bds-ad.lc (unknown [10.1.6.127]) by ops-mail01.dc2.lan (Postfix) with ESMTPS id B8EBC43505; Tue, 5 Dec 2017 16:23:02 -0500 (EST) Subject: Re: BUG #14932: SELECT DISTINCT val FROM table gets stuck in an infinite loop To: Tom Lane , Thomas Munro CC: Andres Freund , Tomas Vondra , PostgreSQL Bugs References: <20171127185700.1470.20362@wrigleys.postgresql.org> <7a22f496-92b5-d199-984e-183965918304@blackducksoftware.com> <20171127221041.mezzysc4zcfsqkyc@alap3.anarazel.de> <17357.1511841783@sss.pgh.pa.us> From: "Todd A. Cook" Message-ID: <9cd29b81-7ba1-91a2-f491-9014f4ac87e6@blackducksoftware.com> Date: Tue, 5 Dec 2017 16:23:02 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <17357.1511841783@sss.pgh.pa.us> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:192.231.134.1;IPV:CAL;CTRY:;EFV:NLI;SFV:NSPM;SFS:(10009020)(39830400002)(376002)(346002)(2980300002)(448002)(24454002)(189003)(199004)(47776003)(53936002)(6246003)(58126008)(50466002)(110136005)(106466001)(229853002)(104016004)(77096006)(54906003)(86362001)(65806001)(81166006)(356003)(31686004)(31696002)(85326001)(65956001)(6266002)(230700001)(8936002)(316002)(8676002)(81156014)(93886005)(2906002)(4326008)(67846002)(26826003)(83506002)(478600001)(53416004)(97736004)(23676004)(76176011)(2486003)(36756003)(5660300001)(305945005)(65826007)(33646002)(53546010)(64126003)(2950100002)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR10MB0634;H:ops-mail01.dc2.lan;FPR:;SPF:PermError;PTR:ErrorRetry;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2NAM02FT051;1:Tw0I6s1CpX7ZbV2QzXOAJAzamZXwugImGgQH85WEw/Ks2e4lWvkuKic2Dgh0ufYvW6K9KB7nOAQ7lgPTTw5tcylRsoCcxxuST/x97y+Cdnx5iartPlPFbRnz/bPaDjGd X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2423b037-de30-468e-b024-08d53c265e34 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603286);SRVR:CY1PR10MB0634; X-Microsoft-Exchange-Diagnostics: 1;CY1PR10MB0634;3:REpPiY9vjgkS7nbvaVXe1OYMaExWior36PQAj/xwbaW7K+TzOlaBbYXQ1oCX48FU5ql3jY1EwpHRvaoZIbqtW1hOV7SDXQJJOK5dMmDSwoMoHncrh6dvl7nzTS0ULOdhyufSLo31TY5FCzJ0AKu2lcSaASWFq9kFkA/pnu2EPokLUIargtyQmCcApTQLEGwAIEJCSHRFLMrEeDfRmEbMoXWMMZKKKjl029GNj2S15TMKOr3gCpsIWpfQvx4vAUyH/BAlkzvUt5X8ZyjUmENEg+OPcW4beyX0C3+m2QRH5ebCuKKMC/vrrK2QNFGCqoktS4V4ceVTmeXjwAI8Tg3LiQ==;25:EZEti3md0CovQfAkj2gS2poh4pIKgsBHPudfCDFZ+Apv28iJFRJXijPcbBMuF8gfONTVHdMdP/b8vCw697pOqsussrSKmIVBnPX967nHogdd2aBPT1nhPvmZcu60VVaXPLrn/psgw3kG8HMzHihd2mz8VPjSjsIDKlm/S1CFwhnHEV8sEs6X8qg0PfOo86s1hTQEsTGeb40AEboiCQquycjf5i6/M8dqgRoKgIL14yNBymX9V3wnANSdyy0CbeG4bkF8H8mEWdp90+WCZtWWz7XOfKiHBKMpMS9yiGkziGem8dwB853A1hoWcM+as52DthMCERaDq3sxIS/n3Sg+yA==;31:wPkYLAFMHYREDzI2kXlVWSEbH4vpSzbYawrc9mzcO2NleRsGsB4k1lVNm1E4rdqxUp99mAVIBtHoBWlXLuwbyz1X8ld2gvpCaZAmisJphybN1XlB4cHbmGbnGnddoIaGfxSltwo/lsI2eIEkFGXu81KHUMEBQaAvX0ty6WPyuKzgc7GyhDnYSiw1aoTVl/O0hEoFSDFbWusViZRynOT7qbsbIv2qtsHLY5TraNMhGGA= X-MS-TrafficTypeDiagnostic: CY1PR10MB0634: X-Microsoft-Exchange-Diagnostics: 1;CY1PR10MB0634;20:lyeiw8Z0U4yHArmiEZ6uNsszln9pqWfroTtW+yL9iuZKXAhRjjLrdwPNx8kFOBNZ0aocmnjwNejCeuEDOQVthZS/j7/SzdITJM+EhlJghETw+JsLqOqWxg7FJnwU2FMHIHG718eOOAYywtwigm9Nqpeg+k0Ybu2Q+pLgUcFnxNLJWvyz2aU/RXivtYTjwXTB+Y9K4VgfWFUW4aV7SV+o9R0o1c/lPRsyatT5vCnhKrZrpaD6T2wp+LZbtuuv+9xN8kDl20fbxcAw8ULBKTN5J+9nMuDTm4FRhNX6MRqaX+OkR50O3oK+2v0nnDz3k0YvknZqBSVdj4ueZGIOufs0JcfOzDbpO9k6WgGk5yHXzAd0zG3uWv4xFpJjDXPw/D4xcghVYkrgsw99YuCnqNtUa9XgRehiz4s8PAcqcBzujIYgaSn8P+vk8OreISMSa+WI0DQO2KvyOaSEfrhXNSIRl+pmOhJdsIwUMmXWK93PbYbiv63qURM9R+Pb0IGdlBDP;4:1Y6tcaQsn0wPTouaWMs0M5bEbs7yOwyty9aeG8JoexAMCU4V3fBAx9o0BYVhlipGLHjJ9iGm6yJE0FvL0JzOwFiZKo3ZqBDYE3RaiY6eL3ec3oz2UTC7kNHDd+7DaeJ6q0jUQMqebnt4S+dmto33Kiz7rc/Rlvz6gQejI8c5NSGDkdXlTtZyOsZWW2Z0ORk0PflRBADDG//vxyAcraLmCzkX9aLSUbBYO2qca6cyjL+bFSjqgUfwOUPxwmaMPnoTRdyaXzGohkjUVK3sflUcbA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(93006095)(93001095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123562025)(20161123564025)(20161123558100)(20161123555025)(6072148)(201708071742011);SRVR:CY1PR10MB0634;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:CY1PR10MB0634; X-Forefront-PRVS: 0512CC5201 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjEwTUIwNjM0OzIzOjNXUjZidnlKZlFmTEtjdnJ0SDhWWjRVWFVh?= =?utf-8?B?TFBhMlJCRUhqL1VaTzBWdzhGVC85VUJuTUJjRkg2M2tTNEF3VUF5M3U4dm8r?= =?utf-8?B?K3VTVDdIRDZkRGNmYlhZOXlUUDNuQk1kSjZ1MlVIaUFYMXVCSEhtMnNYWkR6?= =?utf-8?B?THdqdUNOeDJwQnlwMU9tTUEyRWVTK3h2cmVFWk1aUkQxdHV3WU5saUh6WTJH?= =?utf-8?B?ZTFRVXFXRTJDS0hxd21nL1NxYnpBOW14SnkxQlJ6bkh6M2JFNlVxQ0Q0QzZr?= =?utf-8?B?Uis2czZ2c0s1ZkQvSksvM3NPcjV5L1V6YVNORDR0bFo1T29tQU1weWFEbHgx?= =?utf-8?B?L2lwT2UvWDIycDZnRGhMT1ZNTnVjUHd3YzZhZGl0Y2VTVjQ4UGxrdG5sblMv?= =?utf-8?B?Wm8vdGlaSzkwdFVoMzdJYitPY2VaUW9XUHdaTUoySGs5YUo0TkZPVVdwY0FS?= =?utf-8?B?Qko1Z0FwZzIwdVpkeWw4cVI1ajdSdUkwZ3ZYR3lBUEF0VGlodVpHQUxKc0NF?= =?utf-8?B?THkxUThSU3JGUTFIbWNia204OXM1QkowVzdpQ1gvcmY4YUpOSEhvWjMxMENC?= =?utf-8?B?dFYwczdhSFhYSmZyUXAyMTFTT2w5SmZuQ3RLWHRMRXZTV21BTmoyM2R4bTVL?= =?utf-8?B?RmZISU90NVpzd0s1Q3VWYjdRSTVKTEJpVytUZGJUVnlZdHpMdUc4cmlZcTk4?= =?utf-8?B?dE4zL1hrWmMvNmc5VkprajljcDV3S2lFYjJQUmxNc1hTN09ORHVacjNYdC80?= =?utf-8?B?SlNSSDduYU1hcC9rb2ZiT3NKUXUzcit1TXhxWW1ZeVpubHh6MWIvc205YzNL?= =?utf-8?B?ZG1HK2FkTFk5NTkySmNKVUR2TVBoaDdSeE9SVzluNDNTeFAxczdBdW1RV0RO?= =?utf-8?B?Wk8wTjVNRExSM2R5a0hMVTFyTGVYQWZyT0FEaWpsNmRjRGx3MHhXMU1SQi9n?= =?utf-8?B?NmNBSDVpYzFlNUhwQjN0Z3EzQzlCNkg3VjBjeTVQYW1JRWFvQjFsZnB6dEcz?= =?utf-8?B?ZTFwZEVleFpIK2R4QXg0WVMyY0F5OVBMNkh4eEcxaUcrU042MlRlZjBaWmhN?= =?utf-8?B?RTBSdG1YRktnbUJoTU1pVStsU2FqVTA4SndUN1RLajVBek16R1NTL0JTMTRV?= =?utf-8?B?ZnRUUnB1UUNqbmhpeFpvY2xnN2FZSmFuUDdxbk1ERGNHNkdEYTdpTjZZQ2pp?= =?utf-8?B?ek5KRW52bWtMZ0dkemh0bXZQK01YMzBObTdhSHJ5VDN0TU54d3BhR0VieHdw?= =?utf-8?B?R0J1d3BULzdRZFdoQTdyUlFGQXlwREN6SzMvQVlBTVhMMGNiclZIK2paMld4?= =?utf-8?B?TkNDc2xaSG15Sm1JL0ZXUmxaWThwWFd4RnlvWm9PRUdnbWlUaFU2Z0hNdzFI?= =?utf-8?B?YXZTL05YMldubmU1d2pHdFQrUmhhcXJHWE4vZ1pUSi9qdXdZOVFMVVJEWE54?= =?utf-8?B?bisvd25tNXlKU2w2K2lzaDBpMkVraDY3YWVUdTQwUWxzT1g3ZHhzdVRMTk9x?= =?utf-8?B?SWFQRG8wQkIwUUx2U3VCSEt4WWNXdGEwdVJpOXhkOThSSlo2OHpZSUZTWXJD?= =?utf-8?B?MXNQR3dQbm5DMCszRCtZZDdFQ2kyQnBRblZ6QXNJOVNtTG83a2dVMDR4S0Zy?= =?utf-8?B?MEtTOTd2eXZNdFFVWlRXUlpjM25xcTBscHl2enF1M2ZYVXN2YW11emxlZVFW?= =?utf-8?Q?Jc3hgUeQH4XHSmXWyj8fHoycWvpNiQ+HrtJlx8v?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR10MB0634;6:OA6pYDY+RZzOJu7iN8WuhHC97Gc5YO3S5yozlxGPnhb89REcrjwI7qrJIl7aRNI4bsN7sVOF+EDVmpf4s+e+6wMoq2Awy7Uo+TMkM34T5l3qYLsU24q2CdrrtOUje3WNfXn7KCI+liDXdcVw8FpjdDzA+pu4d1Ci8H3aj2Nqm75ETHZA5j4vtbldWNsiy8Ut4R2HYGzVByhFn+5IPeZqV6xu7kwkphzk6QWNOvs816/zuASI3xOomOX2huc6Ug4apUgiutVEXJdkVjba1A3Y/dII/olE7lEpgpkaHZBw7xUXjyqi7bEesq+CCreu5hGIqbcTNbzR1OzkdwrReI5qgzEo9lH6SNwNB2K3TY+MoAU=;5:zTYmFy19HQcIv0nG1MXzMzDJC4kKXuCICVe4To5qdlE1yzAHKeJcVy7n2eJ0/RqEzxXJh/6glw58uQyzJj1JIq78fxeuFBWO68vlDobBXmii9oGAiJUF7gcF9N3s3avL/+LQaDCJkzwg1eLO0KbIMB7DkdOojtLhTQr43XdK2xo=;24:cAazWa86lALPQIfeXJBKroF4z0u8AZJq3pMHLtsdYisDnlhfAXyoy9MJea2oKU/YjhLOf5M3IQVoq70KykvXs2SVy+oZfG32oqFZLWEj9dI=;7:5t666CYpXdjna3bd4Z+kdmCFFHlwdGJXN7nNZoH/uJNbIkSA6O8NGfmXHZb1uX+nHUdZepVQ5ck7QTufcz3YVQugNBN5J5RQ8Emuy3jJG4P1ayl3U6/szb/CIL3PNDssUBhQYsMjjwDp/P10RLARz3Hwy0c4fzLGgP/54tRjAwL0zO8rBARktHsQoALcHs/oqEAp5b7hL4UplXyycnSf5TfqN1UQH4yasCvMEB3ryGtI6vMGIRRXl6R3UlZ8uU+3 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: blackducksoftware.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2017 21:23:02.9103 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2423b037-de30-468e-b024-08d53c265e34 X-MS-Exchange-CrossTenant-Id: a8cff409-0d9d-48cf-b483-b7442cbeb39d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=a8cff409-0d9d-48cf-b483-b7442cbeb39d;Ip=[192.231.134.1];Helo=[ops-mail01.dc2.lan] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR10MB0634 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 11/27/17 23:03, Tom Lane wrote: > Thomas Munro writes: >> When SH_INSERT tries to insert that final extra value, insertdist >> keeps exceeding SH_GROW_MAX_DIB (25) no matter how many times we >> double the size (at least until my computer gives up, somewhere around >> 11 doublings and 75GB of virtual memory). If you set SH_GROW_MAX_DIB >> to 26 then it succeeds, but I guess some other attack could be crafted >> for that. What is the theory behind this parameter? > > You beat me to it --- after looking at simplehash.h I'd guessed that > either the SH_GROW_MAX_DIB or SH_GROW_MAX_MOVE code path was causing > an infinite loop, but I'd not gotten to determining which one yet. > > I'd ask what's the theory behind SH_GROW_MAX_MOVE, as well. Neither > of them are obviously loop-proof. > > Note that the sample data has a lot of collisions: > > regression=# select hashint8(val), count(*) from reproducer group by 1 order by 2 desc; > hashint8 | count > -------------+------- > 441526644 | 2337 > -1117776826 | 1221 > -1202007016 | 935 > -2068831050 | 620 > 1156644653 | 538 > 553783815 | 510 > 259780770 | 444 > 371047036 | 394 > 915722575 | 359 > ... etc etc ... > > It's evidently more complicated than just that the code fails with > more than SH_GROW_MAX_DIB duplicate hashcodes, but I suspect not > by a lot. There needs to be a safety valve that prevents letting > the hash fill factor approach zero, which is what's happening in > this test case. FWIW, I can also reproduce the infinite loop with 167834 unique values. It kinda looks like the problematic collisions arise from masking the computed hash values; e.g.: SH_INITIAL_BUCKET(SH_TYPE * tb, uint32 hash) { return hash & tb->sizemask; } (Also FWIW, changing SH_FILLFACTOR to 0.5 (from 0.9) did not help any.) -- todd