public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "gavin at yzena dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/108448] GCC Elides Assignment to Pointer and memcpy Date: Thu, 19 Jan 2023 05:51:27 +0000 [thread overview] Message-ID: <bug-108448-4-PPHX067SaR@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-108448-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108448 --- Comment #6 from Gavin Howard <gavin at yzena dot com> --- Created attachment 54302 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54302&action=edit An Amalgamation to Reproduce I have managed to make an amalgamation that reproduces the bug. When you unzip the attachment, you should get `amal.c`. Run the following: ``` $ gcc -std=c11 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_GNU_SOURCE -DYC_BUILTIN_128=1 -DYC_ENABLE_STACKTRACES=1 -O2 -g -o amal amal.c $ ./amal amal.c temp.txt temp 1 ``` You should get an assert failure as follows: ``` Assert Failed: pointer is NULL Expected: (stack != ((void *)0)) Source: yc/src/concurrency/strucon.c:439 Function: y_strucon_handleErrorHelper() Aborted ``` This file was produced from a source file with the `strgen` main, a function it needed, and a bunch of `#include` of C files that were needed. The original was `amalgamation.c`, and I ran the following command on it: ``` $ gcc -Iyc/include -std=c11 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_GNU_SOURCE -DYC_BUILTIN_128=1 -E amalgamation.c > amal.c ``` (It was created in the directory above the repo directory.) This created the `amal.c` file that I have attached. The line 63558 has the pointer assignment. The next line has the memcpy() commented out. Either one is elided. You can comment out 63558 and uncomment the next to test. If you add ASan and UBSan, like so: ``` $ gcc -std=c11 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -D_GNU_SOURCE -DYC_BUILTIN_128=1 -DYC_ENABLE_STACKTRACES=1 -O2 -g -o amal amal.c ``` they report nothing. In fact, they then make the program work. (The "Encountered end-of-file" is a bug in the original that didn't suppress EOF as an error; just ignore it because it's not really an error.) If you run Valgrind on the non-ASan/UBSan build, like so: ``` $ valgrind --error-exitcode=100 --leak-check=full --show-leak-kinds=all --errors-for-leak-kinds=all --num-callers=500 --child-silent-after-fork=yes ./amal amal.c temp.txt temp 1 ``` It also reports nothing until the abort.
next prev parent reply other threads:[~2023-01-19 5:51 UTC|newest] Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-01-18 18:09 [Bug c/108448] New: " gavin at yzena dot com 2023-01-18 18:15 ` [Bug c/108448] " pinskia at gcc dot gnu.org 2023-01-18 18:16 ` [Bug middle-end/108448] " pinskia at gcc dot gnu.org 2023-01-18 18:22 ` gavin at yzena dot com 2023-01-18 18:29 ` pinskia at gcc dot gnu.org 2023-01-18 18:44 ` gavin at yzena dot com 2023-01-19 5:51 ` gavin at yzena dot com [this message] 2023-01-19 6:03 ` pinskia at gcc dot gnu.org 2023-01-19 15:29 ` gavin at yzena dot com 2023-01-19 15:36 ` gavin at yzena dot com 2023-01-23 22:33 ` gavin at yzena dot com
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-108448-4-PPHX067SaR@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).