https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52622
Thomas Koenig <tkoenig at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW Last reconfirmed|2013-12-29 00:00:00 |2017-9-24 --- Comment #10 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Looks like a case of a pointer not being reset when undoing something. Valgrind complains: g.f90:30:35: type, bind(c) :: Args_Basic_epv_t 1 Warnung: Abgeleiteter Typ »args_basic_epv_t« mit Attribut BIND(C) bei (1) ist leer und könnte für entsprechenden C-Prozessor unzugreifbar sein g.f90:130:2: function passeverywherefcomplex_impl(self, c1, c2, c3, exception) result( & 1 Fehler: Nicht klassifizierbare Anweisung bei (1) ==5794== Invalid read of size 1 ==5794== at 0x921D0D: resolve_symbol(gfc_symbol*) (resolve.c:14866) ==5794== by 0x93FF92: do_traverse_symtree(gfc_symtree*, void (*)(gfc_symtree*), void (*)(gfc_symbol*)) (symbol.c:4061) ==5794== by 0x91B87B: resolve_types(gfc_namespace*) (resolve.c:16156) ==5794== by 0x91B97C: resolve_types(gfc_namespace*) (resolve.c:16167) ==5794== by 0x91FF6C: gfc_resolve(gfc_namespace*) [clone .part.51] (resolve.c:16269) ==5794== by 0x90EE44: gfc_parse_file() (parse.c:6217) ==5794== by 0x951C7F: gfc_be_parse_file() (f95-lang.c:204) ==5794== by 0xDD67BE: compile_file() (toplev.c:456) ==5794== by 0x883E1F: do_compile (toplev.c:2037) ==5794== by 0x883E1F: toplev::main(int, char**) (toplev.c:2172) ==5794== by 0x885E0A: main (main.c:39) ==5794== Address 0x621422a is 90 bytes inside a block of size 336 free'd ==5794== at 0x4C2E2BB: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==5794== by 0x9445D7: gfc_restore_last_undo_checkpoint() (symbol.c:3600) ==5794== by 0x905347: reject_statement() (parse.c:2546) ==5794== by 0x9080E4: decode_statement() (parse.c:347) ==5794== by 0x9096CC: next_free (parse.c:1225) ==5794== by 0x9096CC: next_statement() (parse.c:1457) ==5794== by 0x90D97C: parse_contained(int) (parse.c:5483) ==5794== by 0x90E715: parse_module() (parse.c:5895) ==5794== by 0x90EE29: gfc_parse_file() (parse.c:6198) ==5794== by 0x951C7F: gfc_be_parse_file() (f95-lang.c:204) ==5794== by 0xDD67BE: compile_file() (toplev.c:456) ==5794== by 0x883E1F: do_compile (toplev.c:2037) ==5794== by 0x883E1F: toplev::main(int, char**) (toplev.c:2172) ==5794== by 0x885E0A: main (main.c:39) ==5794== Block was alloc'd at ==5794== at 0x4C2F0A5: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==5794== by 0x156B940: xcalloc (xmalloc.c:162) ==5794== by 0x942FE8: gfc_new_symbol(char const*, gfc_namespace*) (symbol.c:3003) ==5794== by 0x943467: gfc_get_sym_tree(char const*, gfc_namespace*, gfc_symtree**, bool) (symbol.c:3252) ==5794== by 0x9436D3: gfc_get_symbol(char const*, gfc_namespace*, gfc_symbol**) (symbol.c:3305) ==5794== by 0x8A5B80: gfc_match_formal_arglist(gfc_symbol*, int, int, bool) (decl.c:5953) ==5794== by 0x8AAFF8: gfc_match_function_decl() (decl.c:6773) ==5794== by 0x907C0A: decode_statement() (parse.c:343) ==5794== by 0x9096CC: next_free (parse.c:1225) ==5794== by 0x9096CC: next_statement() (parse.c:1457) ==5794== by 0x90D97C: parse_contained(int) (parse.c:5483) ==5794== by 0x90E715: parse_module() (parse.c:5895) ==5794== by 0x90EE29: gfc_parse_file() (parse.c:6198)