https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118553
Bug ID: 118553 Summary: gcov misses coverage after calling vfork/exec Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: gcov-profile Assignee: unassigned at gcc dot gnu.org Reporter: roland.illig at gmx dot de Target Milestone: --- When a process calls vfork and exec, any further code coverage from the parent process is not recorded. Affected: - gcc 12 - gcc 13 - gcc 14 Not affected: - gcc 10 - calls to fork (instead of vfork) - calls to posix_spawn (instead of vfork) #! /bin/sh set -eu cat <<EOF >prog.c #include <unistd.h> int main(void) { pid_t pid = vfork(); switch (pid) { case 0: execl("/bin/sh", "sh", "-c", ":", (const char *)0); /* FALLTHROUGH */ case -1: write(2, "error\n", 6); _exit(1); } write(1, "reached\n", 8); return 0; } EOF gcc --coverage -c prog.c gcc --coverage -o prog prog.o ./prog gcov prog.c # FIXME: The code was reached one time but is reported as unreached. grep "#####.*reached" prog.c.gcov