From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by sourceware.org (Postfix) with ESMTPS id DBA7C3858C98 for ; Mon, 25 Dec 2023 14:48:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DBA7C3858C98 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DBA7C3858C98 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703515714; cv=none; b=cI6dAPW4F9KQk1gyEXgCMPzx9Bm49Arp0rccta2wkeNtgJw7Kmc54AIL0HanuqM/TQpZJjl09QLmchNeQ+VrJVmFfvXilhIv2GAF0Rl/MrL+AbT296pbxnFmuxCK/MssvamU/ju65p5N9qrKTM3SWakhzS36GunhG4ugi9U8sVo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703515714; c=relaxed/simple; bh=Rwojmar1j3/KHSnP7mgyx4mYTvp+MYRRxFNiwWOkTWA=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=nKlHZ9O7kVyemvF0O3D3e7rFqK08bOLFdWKCvT9HbA11bIMcLb6FUVe3dfl8knncnHPO05Bdd5VaK8E/oPqem1wITuer7+471SzUQcPOv2La5B+9J8S7DDZOrRDReE4TU0wazYYiBxs/PLLJ/NT6gW3Ibxea+LOJ6+uITZbii98= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1703515707; x=1704120507; i=thomasbleher@gmx.de; bh=Rwojmar1j3/KHSnP7mgyx4mYTvp+MYRRxFNiwWOkTWA=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:References: In-Reply-To; b=Ts1dL3JRlNrF0oXCJ2jBM0rNjrWZyJJfkYnoExR5srdbjS6DqePb/FnBIv53PUKX 0fk9nQ/+QN8T9krQ4k7sT1VS3YYZWs0xN/TBcH2QOUVISaXv2ECW98zfNyVLVAAVi dGABkZIGzSTzli8j2EL/Bw16OvPR7pEM7xm3/5oFxTUhy28ki6vrYwXv0P6WhperW qU0ZSF5RyhdRaBf7OSDEMh+9/zopdiW9OQ3IGFLd+NqK2CGdyhAUCN8WPSzzxQmCj BxSaN5fDbJpCBthhOBEU9MTHPOn7fL7ZTc4G1/OVa16/Frki4LEos3eW/Bkx333gl 2PcgaClp63OY5xa4Dw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from j-crew.de ([92.117.209.21]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MA7Ka-1rOy2r1CSw-00Bd75; Mon, 25 Dec 2023 15:48:27 +0100 Date: Mon, 25 Dec 2023 15:48:25 +0100 From: Thomas Bleher To: Xi Xue Cc: "gcc-help@gcc.gnu.org" Subject: Re: Runtime error about undefined behavior Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Accept-Language: de, en X-Provags-ID: V03:K1:mNpneKWCaGPViH3JbBvpa4rCZaeJEhHFISNmEz+8ANAmNqJ1WCi Ygkxy3y66O1awtn1Pr8zSszubxL+SLmTGkI5wAKAZzjiCvboI3zVrHpvGc/e7uDSnpsQIQF 2QgaTi/4tcQh+Bggvw6OQDfDPRuzbEOhtrxVp82KTZysDWcWysK9S0PQUsfBVK31V3gsMbw Lc6mCcbjSRtaYPnoJlkoA== UI-OutboundReport: notjunk:1;M01:P0:6ZipX5kGozg=;WVepv79OrcxoqKn93ogEcqy5APy 0re5zZmBrgUD1rV2cMwi4eCVzMdWQf7n6DfCghNJSG/J+/AgMB8MIk+HEO7vFpfOCy1UjWY8v sZJ01fIaydtJChHN32rOIP0O4ca/Jo8YD8fdmm/oIF7nw1UQ3GvaLvIIy+t3ZVC4v4+902HPT eZ1vpysjInP4VnSF0Igofddkp6BoMiHetcHyipJWE4CtEzhxA0KRJaLx9GjC2YlCU33kVhmw/ r+bCR67rnHK9vwWs3jxm8d17VfJITEkXthIVfo7Y3YWZt9c/wXZYZIJenoJm6VJVNN3190K9Z sTlqEf3DxVwcfMtAnTBJffPrF3fgyBq/d98NqE8ObLxwyOwmyyENgYsExnveQsuRbTOvn+SWQ Db9ZgN3P08bWhzYLa5e8e29msZFN8MLG87gb4nLD43wCqPe8Tt/buNK4/nfQ0zz97et9JhyN3 ngR0TheJ9f7JLCMkvXSuqgYNttZyE6J/+RBDV5gPcGEV7JeBbmtWp6JC+W8y5f9kTUdrwdL1w Bx/AymyaweFn0Un6V3KQsiQ44ge14xlsZOI/9qKM/rvNYrpPeMkjtD7BUU0EBJsxdBpL5GT9W gxFWqLdXe6k7lbJoUucB7pn+ylDUkxF86zVTrU23iZ7+ed+Xku+rj7+V7oi3PwIN5cln9jOns aBDAqkapDMmTll+uqwkx7xMfvczDLau6UUgYZDO+F43TxKqtG53C4PhBrKfmMqnTbm/UF0Iy1 1sOia026W1L07E7dqHNxmW6DL3E6a5W3vlintlAacFm18YyA9PcE1LXbTYzsmtOUxIHOGWnKY pmvu9JTLNH3Cm7+WCJIuFsFm5tZQkdjYX7iRs5t4JrbOCTuF3LRfmmbSYzeT5O55ZAu7NdgJp cJ8kb281u4elw7uGJnjz5n0ZPXp89iNqTgvHWEgHv7OTSX7VOWEBEPkBf0pD49srTc3mtyYp6 wplJZQ== Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: * Xi Xue via Gcc-help [2023-12-24 00:50]: > tw.cpp:53:19: runtime error: member access within address 0x7fe7f52ff800= which does not point to an object of type 'CachedObj' > 0x7fe7f52ff800: note: object has invalid vptr > 00 00 00 00 be be be be be be be be be be be be be be be be be be be= be be be be be be be be be > ^~~~~~~~~~~~~~~~~~~~~~~ > invalid vptr > tw.cpp:41:39: runtime error: member access within address 0x7fe7f53ff7c0= which does not point to an object of type 'CachedObj' > 0x7fe7f53ff7c0: note: object has invalid vptr > 00 00 00 00 00 00 00 00 00 00 00 00 a0 f7 3f f5 e7 7f 00 00 00 00 00= 00 00 00 00 00 00 00 00 00 > ^~~~~~~~~~~~~~~~~~~~~~~ > invalid vptr > I am referring to a derived class. Access to the "next" member of the ba= se class.Is this a runtime error? I think you are missing a constructor call: > template void *CachedObj::operator new(size_t sz) > { > if (sz !=3D sizeof(T)) > throw std::runtime_error( > "CachedObj:wrong size object in operator new"); > if (!freeStore) { > T *array =3D alloc_mem.allocate(chunk); > for (size_t i =3D 0; i !=3D chunk; ++i) > add_to_freelist(&array[i]); Here add_to_freelist is called with a pointer to uninitialized storage (see https://en.cppreference.com/w/cpp/memory/allocator/allocate: "Allocates n * sizeof(T) bytes of uninitialized storage") The function stores the pointer to the uninitalized memory in freeStore. > } > T *p =3D freeStore; > freeStore =3D freeStore->CachedObj::next; This treats freeStore as an initialized object and accesses its member (but there doesn't seem to be any constructor call to actually initialize the object). So I think UBSan is correct here. > return p; > } > > template void CachedObj::operator delete(void *p, size_t) > { > if (p !=3D 0) > add_to_freelist(static_cast(p)); > } > template void CachedObj::add_to_freelist(T *p) > { > p->CachedObj::next =3D freeStore; > freeStore =3D p; > } Best regards, Thomas