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 1vi3qf-00DshQ-2N for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jan 2026 05:00:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vi3qd-00FxH0-1W for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Jan 2026 05:00:11 +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.96) (envelope-from ) id 1vi3qd-00FxGs-0K for pgsql-hackers@lists.postgresql.org; Tue, 20 Jan 2026 05:00:11 +0000 Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vi3qa-001SHH-2R for pgsql-hackers@postgresql.org; Tue, 20 Jan 2026 05:00:10 +0000 Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-382f0732612so30113971fa.1 for ; Mon, 19 Jan 2026 21:00:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768885202; x=1769490002; darn=postgresql.org; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=rHN+x0MarAkl5DI1v3FzGtPycj68UvgcOSml9C855dg=; b=MMk4yUVXnqBWRmtd+vbE+FuWPqQMI0Q5HbwTTMwyXlD05wfDVTA+vCEU7mTxsi3t6G CAIRwu0QfIb/62UK2R4gHGabb1ArSls2tcceZGWj9FJMQx8bGTBK1rxvkr+V5IHEMV1j QYeqo4XIakzirJlNvG1zEXox121cPp73ZIh/0fd4bijAHk5jIzWeTeWjE6Hau3/HcWcC h5mL0YzagksNTtJNCpM07eIdwQPmhZ1N6V5Q9UFGOqbXr8+ossr1d+NP20s5ODmKvmEX 119PEC4qnn/1otaR/HT6ZfYjmzhD5zvB85TVg0qcHdiXH++2GWVbfHf5+ITygCet/rtL H5ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768885202; x=1769490002; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=rHN+x0MarAkl5DI1v3FzGtPycj68UvgcOSml9C855dg=; b=J0M+2ZR2iqpzeY4cSF1l48BkXtFmYY9bKwEkm/m2nwaWysigVTrScpFP2bQtrkDjUa yrIshXRVt3xOQcBDUlpzMyWZw6rfLIaTHtYdRpJqjWSZgIumdA9pRirMU5oKPTijmjik J6DqjLS21SNf9szPDrlBOO1R7iHkc49B5smzjcocDJeWJxsReaMhSHcOxfczh3Un+I/m jHT1RnmI7j1RPwvMt+cAjiVnexTChrPiVhEDdRG4OHwF4BYZfix/GM4GpwqbGXtR1ng9 1UCWiwGt7t+NgpBc87FeomG4DjhNHVbm36gxDnBIBRqhqKymLwgIBvwbQ9m99KxO6nXX gL6Q== X-Gm-Message-State: AOJu0YwMYZT5k9XkYq1dA2QTmJDOJ0YWNlmhrzPc+KCMIrfSQWp3SIHg Zr2CnMSe+IZw/RLl00LpDsTmrN3pDMFIZMgJQjccxA1ygf2I01M5aHsU4vjE5g== X-Gm-Gg: AZuq6aIbvE531FPgch75Pm9akgOJQn+bfk5WOfvEquHW+S9ZOXRZV17OdN5D8UxmN7l fKbikNMS7ylM8Uleru+BnhovUQxrV7wt5Ncc8x6eUIujCgoaX/Ht5ZmxLcSmz94Fp/pMHoTAXuz Bz8ZTycsHKDlrxn+UmAH2OyM1q5863Tp4utyc4VHebwV/YgFManAjC+bM5rgak5Y97wyXhojP8q aff+/bdUxBjMpH2b2VU7aiXre3tEXyjinushrvKSl5cj/LCjoD6NAo7ewWOgMK8ky2Nala80nde turxcyktjCee3ELYmy6tD/YBNb+YDBMvMLQP++ZqnmB/elku4qwe7mwGY/13qKOKHjw3r1hX/PD uqyRDlqMJiehlINFnNsIqyMWN0+xhry07LGy6l587RPxb4lDl+PB8lRI1Rjxpjn6iS35k9yfAB5 BmV/YzCyopjd7H X-Received: by 2002:a05:651c:3244:b0:37f:d17a:fa73 with SMTP id 38308e7fff4ca-38386c65e78mr46812541fa.36.1768885202335; Mon, 19 Jan 2026 21:00:02 -0800 (PST) Received: from [192.168.0.50] ([89.149.93.129]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-38384d8e0e5sm37680871fa.17.2026.01.19.21.00.01 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jan 2026 21:00:01 -0800 (PST) Content-Type: multipart/mixed; boundary="------------G8H2lPU0UXhj2MHsfzNvLNYd" Message-ID: <777bd201-6e3a-4da0-a922-4ea9de46a3ee@gmail.com> Date: Tue, 20 Jan 2026 07:00:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-hackers From: Alexander Lakhin Subject: Undefined behavior detected by new clang's ubsan List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------G8H2lPU0UXhj2MHsfzNvLNYd Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello hackers. When trying to run `make check` for a build made by clang-21 with sanitizers enabled: CFLAGS="-Og  -fsanitize=address -fsanitize=undefined -fno-sanitize-recover -fno-sanitize=function" LDFLAGS="-static-libsan" ...  I hit into: ../../src/include/lib/sort_template.h:314:15: runtime error: applying non-zero offset 8 to null pointer SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../../src/include/lib/sort_template.h:314:15 I could workaround that with: --- a/src/include/lib/sort_template.h +++ b/src/include/lib/sort_template.h @@ -307,6 +307,9 @@ ST_SORT(ST_ELEMENT_TYPE * data, size_t n      int         r,                  presorted; +if (!data && n == 0) +    return; +  loop: But then there was: heaptoast.c:770:26: runtime error: addition of unsigned offset to 0x7395fbd3d204 overflowed to 0x7395fbd3d142 SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior heaptoast.c:770:26 sharedtuplestore.c:326:30: runtime error: applying non-zero offset 24 to null pointer SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior sharedtuplestore.c:326:30 and trgm_gist.c:702:40: runtime error: applying non-zero offset 16 to null pointer SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior trgm_gist.c:702:40 With the attached patch applied, `make check-world` passes for me. Reproduced with clang 20.1, but not reproduced with clang 20.0, so maybe this note is relevant here: https://releases.llvm.org/20.1.0/tools/clang/docs/ReleaseNotes.html#sanitizers Changed -fsanitize=pointer-overflow to no longer report NULL + 0 as undefined behavior in C, in line with N3322, and matching the previous behavior for C++. NULL + non_zero continues to be reported as undefined behavior. Best regards, Alexander --------------G8H2lPU0UXhj2MHsfzNvLNYd Content-Type: text/x-patch; charset=UTF-8; name="fixes-for-new-clang-sanitizers.patch" Content-Disposition: attachment; filename="fixes-for-new-clang-sanitizers.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpc3QuYyBiL2NvbnRyaWIvcGdf dHJnbS90cmdtX2dpc3QuYwppbmRleCA1YzdkZWIxMDNhNi4uM2ExMGM4MzgwYjcgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpc3QuYworKysgYi9jb250cmliL3BnX3Ry Z20vdHJnbV9naXN0LmMKQEAgLTY5OSw3ICs2OTksNyBAQCBndHJnbV9wZW5hbHR5KFBHX0ZV TkNUSU9OX0FSR1MpCiAJaWYgKElTQVJSS0VZKG5ld3ZhbCkpCiAJewogCQljaGFyCSAgICpj YWNoZSA9IChjaGFyICopIGZjaW5mby0+ZmxpbmZvLT5mbl9leHRyYTsKLQkJVFJHTQkgICAq Y2FjaGVkVmFsID0gKFRSR00gKikgKGNhY2hlICsgTUFYQUxJR04oc2lnbGVuKSk7CisJCVRS R00JICAgKmNhY2hlZFZhbCA9IGNhY2hlID8gKChUUkdNICopIChjYWNoZSArIE1BWEFMSUdO KHNpZ2xlbikpKSA6IE5VTEw7CiAJCVNpemUJCW5ld3ZhbHNpemUgPSBWQVJTSVpFKG5ld3Zh bCk7CiAJCUJJVFZFQ1AJCXNpZ247CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXB0b2FzdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcHRvYXN0 LmMKaW5kZXggZTI4ZmU0N2E0NDkuLjEzODg0YzI2MjEzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwdG9hc3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwdG9hc3QuYwpAQCAtNzY4LDcgKzc2OCw3IEBAIGhlYXBfZmV0Y2hfdG9hc3Rf c2xpY2UoUmVsYXRpb24gdG9hc3RyZWwsIE9pZCB2YWx1ZWlkLCBpbnQzMiBhdHRyc2l6ZSwK IAkJCWNoY3B5ZW5kID0gKHNsaWNlb2Zmc2V0ICsgc2xpY2VsZW5ndGggLSAxKSAlIFRPQVNU X01BWF9DSFVOS19TSVpFOwogCiAJCW1lbWNweShWQVJEQVRBKHJlc3VsdCkgKwotCQkJICAg KGN1cmNodW5rICogVE9BU1RfTUFYX0NIVU5LX1NJWkUgLSBzbGljZW9mZnNldCkgKyBjaGNw eXN0cnQsCisJCQkgICAoaW50KShjdXJjaHVuayAqIFRPQVNUX01BWF9DSFVOS19TSVpFIC0g c2xpY2VvZmZzZXQpICsgY2hjcHlzdHJ0LAogCQkJICAgY2h1bmtkYXRhICsgY2hjcHlzdHJ0 LAogCQkJICAgKGNoY3B5ZW5kIC0gY2hjcHlzdHJ0KSArIDEpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9zb3J0L3NoYXJlZHR1cGxlc3RvcmUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvc2hhcmVkdHVwbGVzdG9yZS5jCmluZGV4IDhmMzVhMjU1MjYzLi40MGY5 YTQ2MDZhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9zaGFyZWR0dXBs ZXN0b3JlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9zaGFyZWR0dXBsZXN0b3Jl LmMKQEAgLTMyMyw3ICszMjMsNyBAQCBzdHNfcHV0dHVwbGUoU2hhcmVkVHVwbGVzdG9yZUFj Y2Vzc29yICphY2Nlc3Nvciwgdm9pZCAqbWV0YV9kYXRhLAogCiAJLyogRG8gd2UgaGF2ZSBz cGFjZT8gKi8KIAlzaXplID0gYWNjZXNzb3ItPnN0cy0+bWV0YV9kYXRhX3NpemUgKyB0dXBs ZS0+dF9sZW47Ci0JaWYgKGFjY2Vzc29yLT53cml0ZV9wb2ludGVyICsgc2l6ZSA+IGFjY2Vz c29yLT53cml0ZV9lbmQpCisJaWYgKChhY2Nlc3Nvci0+d3JpdGVfcG9pbnRlciA9PSBOVUxM ICYmIGFjY2Vzc29yLT53cml0ZV9lbmQgPT0gTlVMTCAmJiBzaXplID4gMCkgfHwgKGFjY2Vz c29yLT53cml0ZV9wb2ludGVyICsgc2l6ZSA+IGFjY2Vzc29yLT53cml0ZV9lbmQpKQogCXsK IAkJaWYgKGFjY2Vzc29yLT53cml0ZV9jaHVuayA9PSBOVUxMKQogCQl7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9saWIvc29ydF90ZW1wbGF0ZS5oIGIvc3JjL2luY2x1ZGUvbGliL3Nv cnRfdGVtcGxhdGUuaAppbmRleCBlMDJhYTczY2Q0ZC4uNzEzNTNjZGJkNzIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2xpYi9zb3J0X3RlbXBsYXRlLmgKKysrIGIvc3JjL2luY2x1ZGUv bGliL3NvcnRfdGVtcGxhdGUuaApAQCAtMzA3LDYgKzMwNyw5IEBAIFNUX1NPUlQoU1RfRUxF TUVOVF9UWVBFICogZGF0YSwgc2l6ZV90IG4KIAlpbnQJCQlyLAogCQkJCXByZXNvcnRlZDsK IAoraWYgKCFkYXRhICYmIG4gPT0gMCkKKwlyZXR1cm47CisKIGxvb3A6CiAJRE9fQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIAlpZiAobiA8IDcpCg== --------------G8H2lPU0UXhj2MHsfzNvLNYd--