https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68758
Bug ID: 68758 Summary: [6 Regression] Invalid read of size 8 in gt_pch_save (ggc-common.c:551) Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: pch Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org Target Milestone: --- Hello. Pre-compiled header produces many invalid operations: $ echo '#include <stdio.h>' > /tmp/a.c && valgrind --leak-check=yes --trace-children=yes ./gcc/xgcc -Bgcc -c -x c-header /tmp/a.c ==7532== ==7532== Invalid read of size 8 ==7532== at 0x4C2C2C8: _intel_fast_memcpy (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==7532== by 0x7D7332: gt_pch_save(_IO_FILE*) (ggc-common.c:551) ==7532== by 0x666655: c_common_write_pch() (c-pch.c:183) ==7532== by 0x666217: c_common_parse_file() (c-opts.c:1065) ==7532== by 0x9D05CE: compile_file() (toplev.c:464) ==7532== by 0x5C8980: do_compile (toplev.c:1977) ==7532== by 0x5C8980: toplev::main(int, char**) (toplev.c:2084) ==7532== by 0x5CAC46: main (main.c:39) ==7532== Address 0x66a3000 is not stack'd, malloc'd or (recently) free'd ==7532== ==7532== Invalid read of size 8 ==7532== at 0x5E2137F: __GI_mempcpy (in /lib64/libc-2.22.so) ==7532== by 0x5E102C7: _IO_file_xsputn@@GLIBC_2.2.5 (in /lib64/libc-2.22.so) ==7532== by 0x5E060EA: fwrite (in /lib64/libc-2.22.so) ==7532== by 0x67E4CC: ggc_pch_write_object(ggc_pch_data*, _IO_FILE*, void*, void*, unsigned long, bool) (ggc-page.c:2456) ==7532== by 0x7D73B1: gt_pch_save(_IO_FILE*) (ggc-common.c:561) ==7532== by 0x666655: c_common_write_pch() (c-pch.c:183) ==7532== by 0x666217: c_common_parse_file() (c-opts.c:1065) ==7532== by 0x9D05CE: compile_file() (toplev.c:464) ==7532== by 0x5C8980: do_compile (toplev.c:1977) ==7532== by 0x5C8980: toplev::main(int, char**) (toplev.c:2084) ==7532== by 0x5CAC46: main (main.c:39) ==7532== Address 0x66a3000 is not stack'd, malloc'd or (recently) free'd ==7532== ==7532== Invalid write of size 8 ==7532== at 0x4C2C2CB: _intel_fast_memcpy (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==7532== by 0x7D73D6: gt_pch_save(_IO_FILE*) (ggc-common.c:563) ==7532== by 0x666655: c_common_write_pch() (c-pch.c:183) ==7532== by 0x666217: c_common_parse_file() (c-opts.c:1065) ==7532== by 0x9D05CE: compile_file() (toplev.c:464) ==7532== by 0x5C8980: do_compile (toplev.c:1977) ==7532== by 0x5C8980: toplev::main(int, char**) (toplev.c:2084) ==7532== by 0x5CAC46: main (main.c:39) ==7532== Address 0x66a3000 is not stack'd, malloc'd or (recently) free'd ... Thanks, Martin