I've managed to run into this as well. Here's a C++ version that runs
into the same problem when compiled with `g++ -fsanitize=address
-fsanitize=undefined`:
struct Hash {
alignas(64) unsigned long acc[8]{0};
unsigned int s1 {0};
};
struct B {
unsigned int hash() const {
return m_hash.s1;
}
Hash m_hash;
};
int main(int argc, char** argv) {
B b1;
static_assert(alignof(b1) == 64);
// This will not cause a misaligned address error
// return b1.m_hash.s1 > 0;
// This will cause the error
return b1.hash() > 0;
}
I can also confirm that the UBSAN error indeed goes away when
ASAN_OPTIONS=detect_stack_use_after_return=false is used and that this
problem does not occur on either Fedora 39 (GCC 13.3.1) or Fedora 40
(GCC 14.2.1).
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2023424
Title:
GCC 13 on Lunar exhibits AddressSanitizer/UndefinedBehaviorSanitizer
bug that doesn't manifest elsewhere
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-13/+bug/2023424/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs