There is something weird going on here. I'm seeing the same thing with
Ubuntu 24.04's gcc 13.2.0-23ubuntu4, after hitting some issues with x264
(which declared a local variable with __attribute__((aligned(64))) but
then it actually wasn't aligned as such, and some AVX512 function then
segfaults due to unaligned access).

In my case I can compile the following example on Ubuntu 22.04, and the
resulting binary asserts:

#undef NDEBUG
#include <assert.h>
#include <stdio.h>
#include <stdint.h>

int main(void)
{
  char c __attribute__((__aligned__(64)));
  uintptr_t addr = (uintptr_t)&c;
  printf("explicitly aligned char: %#lx\n", addr);
  assert(addr % 64 == 0);
  return 0;
}

$ gcc -fsanitize=address asan-align.c -o asan-align

$ ./asan-align
explicitly aligned char: 0x7f6e19000020
asan-align: asan-align.c:11: main: Assertion `addr % 64 == 0' failed.
Aborted

However, running _exactly_ the same binary on Ubuntu 22.04 does not
assert. E.g.:

$ ./asan-align
explicitly aligned char: 0x7ffd1fea4e40

So it looks like there is something that causes main()'s stack to be
differently aligned. Whether that is due to Ubuntu 22.04 and 24.04
having different crt*.o files, or due to some AddressSanitizer
difference, is not clear to me yet.

-- 
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
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to