https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63245
Bug ID: 63245 Summary: renderMemorySnippet shouldn't show more bytes than the underlying type Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: sanitizer Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org, jakub at gcc dot gnu.org, kcc at gcc dot gnu.org c-c++-common/ubsan/align-4.c fails at random for -m32 on Linux/x86: /export/gnu/import/git/gcc/gcc/testsuite/c-c++-common/ubsan/align-2.c:37:11: runtime error: load of misaligned address 0x08049ff1 for type 'long long int', which requires 4 byte alignment 0x08049ff1: note: pointer points here 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Program received signal SIGSEGV, Segmentation fault. 0xf79f0e98 in renderMemorySnippet (Args=<optimized out>, NumRanges=<optimized out>, Ranges=<optimized out>, Loc=<optimized out>, Decor=...) at /export/gnu/import/git/gcc/libsanitizer/ubsan/ubsan_diag.cc:208 208 Printf("%s%02x", (P % 8 == 0) ? " " : " ", C); (gdb) The program has 08048000-08049000 r-xp 00000000 08:11 39853233 /export/build/gnu/gcc-x32-mx32/build-x86_64-linux/gcc/testsuite/g++/align-4.exe 08049000-0804a000 rw-p 00000000 08:11 39853233 /export/build/gnu/gcc-x32-mx32/build-x86_64-linux/gcc/testsuite/g++/align-4.exe There is a long long int at 0x08049ff1. But renderMemorySnippet tries to show 32 bytes even though long long int only has 8 bytes.