Seen with UBSAN compiler: $ ./xg++ -B. /home/marxin/Programming/gcc/gcc/testsuite/g++.dg/modules/align-type-1_a.C -c -fmodules-ts /home/marxin/Programming/gcc2/gcc/cp/module.cc:5895:29: runtime error: member call on null pointer of type 'struct module_state' #0 0xf56fc4 in trees_out::core_vals(tree_node*) /home/marxin/Programming/gcc2/gcc/cp/module.cc:5895 #1 0xf67347 in trees_out::tree_node_vals(tree_node*) /home/marxin/Programming/gcc2/gcc/cp/module.cc:7141 #2 0xf6cd92 in trees_out::decl_value(tree_node*, depset*) /home/marxin/Programming/gcc2/gcc/cp/module.cc:7753 #3 0xfb2a97 in depset::hash::find_dependencies() /home/marxin/Programming/gcc2/gcc/cp/module.cc:13199 #4 0xfd1f35 in module_state::write(elf_out*, cpp_reader*) /home/marxin/Programming/gcc2/gcc/cp/module.cc:17568 #5 0xfe1ab8 in finish_module_processing(cpp_reader*) /home/marxin/Programming/gcc2/gcc/cp/module.cc:19747 #6 0xdcc2d1 in c_parse_final_cleanups() /home/marxin/Programming/gcc2/gcc/cp/decl2.c:5178 #7 0x15ae87f in c_common_parse_file() /home/marxin/Programming/gcc2/gcc/c-family/c-opts.c:1233 #8 0x2ccb435 in compile_file /home/marxin/Programming/gcc2/gcc/toplev.c:457 #9 0x2cd3e17 in do_compile /home/marxin/Programming/gcc2/gcc/toplev.c:2193 #10 0x2cd441a in toplev::main(int, char**) /home/marxin/Programming/gcc2/gcc/toplev.c:2332 #11 0x59b3bff in main /home/marxin/Programming/gcc2/gcc/main.c:39 #12 0x7ffff6ce5151 in __libc_start_main (/lib64/libc.so.6+0x28151) #13 0xa82bdd in _start (/home/marxin/Programming/gcc2/objdir/gcc/cc1plus+0xa82bdd)
The master branch has been updated by Nathan Sidwell <nathan@gcc.gnu.org>: https://gcc.gnu.org/g:6e6f3ed47e5cb575819f8253e42313664b89b042 commit r11-6797-g6e6f3ed47e5cb575819f8253e42313664b89b042 Author: Nathan Sidwell <nathan@acm.org> Date: Tue Jan 19 11:31:57 2021 -0800 c++: Fix null this pointer [PR 98624] There's no need for this function to have an object, so make it static and avoid UB. PR c++/98624 gcc/cp/ * module.cc (trees_out::write_location): Make static.
fixed 6e6f3ed47e5 2021-01-19 | c++: Fix null this pointer [PR 98624]
I flubbed testing
The master branch has been updated by Nathan Sidwell <nathan@gcc.gnu.org>: https://gcc.gnu.org/g:7944753fad501194eb8a828d6b74270e79d14a4d commit r11-6841-g7944753fad501194eb8a828d6b74270e79d14a4d Author: Nathan Sidwell <nathan@acm.org> Date: Thu Jan 21 10:37:23 2021 -0800 c++: Fix null this pointer [PR 98624] One may not use a null this pointer to invoke a static member function. This fixes the remaining ubsan errors found with an ubsan bootstrap. PR c++/98624 gcc/cp/ * module.cc (depset::hash::find_dependencies): Add module arg. (trees_out::core_vals): Check state before calling write_location. (sort_cluster, module_state::write): Adjust find_dependencies call.
7944753fad5 2021-01-21 | c++: Fix null this pointer [PR 98624]