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)

Reply via email to