https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87908

Dominique d'Humieres <dominiq at lps dot ens.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-11-06
     Ever confirmed|0                           |1

--- Comment #1 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
> ICE affects versions 8/9 :

For gcc7 I see

(null):0: confused by earlier errors, bailing out

which is equivalent to an ICE when gcc is configured with
--enable-checking=release

gcc6 gives

pr87908.f90:6:21:

       generic :: read(formatted) => g
                     1
Error: Expected '=>' at (1)
pr87908.f90:12:20:

       interface read(formatted)
                    1
Error: Syntax error: Trailing garbage in INTERFACE statement at (1)
pr87908.f90:13:9:

          procedure g
         1
Error: Unclassifiable statement at (1)
pr87908.f90:14:9:

       end interface
         1
Error: Expecting END SUBROUTINE statement at (1)

Compiling the test with an instrumented compiler gives

=================================================================
==69263==ERROR: AddressSanitizer: heap-use-after-free on address 0x613000009e14
at pc 0x000100170f91 bp 0x7ffeefbfe5f0 sp 0x7ffeefbfe5e8
READ of size 1 at 0x613000009e14 thread T0
    #0 0x100170f90 in check_interface0(gfc_interface*, char const*)
interface.c:1836
    #1 0x10018e217 in check_sym_interfaces(gfc_symbol*) interface.c:1974
    #2 0x1004bb14d in do_traverse_symtree(gfc_symtree*, void (*)(gfc_symtree*),
void (*)(gfc_symbol*)) symbol.c:4151
    #3 0x1004d8313 in gfc_traverse_ns(gfc_namespace*, void (*)(gfc_symbol*))
symbol.c:4176
    #4 0x10019595f in gfc_check_interfaces(gfc_namespace*) interface.c:2085
    #5 0x100438af2 in resolve_types(gfc_namespace*) resolve.c:16643
    #6 0x100438903 in resolve_types(gfc_namespace*) resolve.c:16638
    #7 0x1003cabe0 in gfc_resolve(gfc_namespace*) resolve.c:16741
    #8 0x10034f049 in gfc_parse_file() parse.c:6266
    #9 0x100522fbf in gfc_be_parse_file() f95-lang.c:204
    #10 0x10611cde8 in compile_file() toplev.c:455
    #11 0x1061284a3 in do_compile() toplev.c:2172
    #12 0x10915f5d7 in toplev::main(int, char**) toplev.c:2307
    #13 0x1095b359c in main main.c:39
    #14 0x7fff703f908c in start (libdyld.dylib:x86_64+0x1708c)

0x613000009e14 is located 84 bytes inside of 344-byte region
[0x613000009dc0,0x613000009f18)
freed by thread T0 here:
    #0 0x158cb18e0 in wrap_free.part.0 sanitizer_malloc_mac.inc:121
    #1 0x1004d7a4a in gfc_free_symbol(gfc_symbol*) symbol.c:3081
    #2 0x1004d7d96 in gfc_release_symbol(gfc_symbol*) symbol.c:3108
    #3 0x100333334 in gfc_fixup_sibling_symbols(gfc_symbol*, gfc_namespace*)
parse.c:5485
    #4 0x10034d679 in parse_contained(int) parse.c:5577
    #5 0x10034e74e in parse_module() parse.c:5943
    #6 0x10034f77e in gfc_parse_file() parse.c:6239
    #7 0x100522fbf in gfc_be_parse_file() f95-lang.c:204
    #8 0x10611cde8 in compile_file() toplev.c:455
    #9 0x1061284a3 in do_compile() toplev.c:2172
    #10 0x10915f5d7 in toplev::main(int, char**) toplev.c:2307
    #11 0x1095b359c in main main.c:39
    #12 0x7fff703f908c in start (libdyld.dylib:x86_64+0x1708c)

previously allocated by thread T0 here:
    #0 0x158cb0db3 in wrap_calloc sanitizer_malloc_mac.inc:132
    #1 0x10869f9ea in xcalloc xmalloc.c:162
    #2 0x1004cf141 in gfc_new_symbol(char const*, gfc_namespace*) symbol.c:3117
    #3 0x1004d16cf in gfc_get_sym_tree(char const*, gfc_namespace*,
gfc_symtree**, bool) symbol.c:3369
    #4 0x1004d2cfd in gfc_get_symbol(char const*, gfc_namespace*, gfc_symbol**)
symbol.c:3419
    #5 0x1000b22c2 in match_procedure_in_interface() decl.c:6912
    #6 0x1000ef830 in gfc_match_procedure() decl.c:6952
    #7 0x100330018 in match_word(char const*, match (*)(), locus*) parse.c:65
    #8 0x10033da46 in decode_statement() parse.c:541
    #9 0x10033eef6 in next_free() parse.c:1234
    #10 0x10033f8cb in next_statement() parse.c:1466
    #11 0x1003473bb in parse_interface() parse.c:3455
    #12 0x100345f9f in parse_spec(gfc_statement) parse.c:3810
    #13 0x10034cbfa in parse_progunit(gfc_statement) parse.c:5671
    #14 0x10034d622 in parse_contained(int) parse.c:5574
    #15 0x10034e74e in parse_module() parse.c:5943
    #16 0x10034f77e in gfc_parse_file() parse.c:6239
    #17 0x100522fbf in gfc_be_parse_file() f95-lang.c:204
    #18 0x10611cde8 in compile_file() toplev.c:455
    #19 0x1061284a3 in do_compile() toplev.c:2172
    #20 0x10915f5d7 in toplev::main(int, char**) toplev.c:2307
    #21 0x1095b359c in main main.c:39
    #22 0x7fff703f908c in start (libdyld.dylib:x86_64+0x1708c)

SUMMARY: AddressSanitizer: heap-use-after-free interface.c:1836 in
check_interface0(gfc_interface*, char const*)
Shadow bytes around the buggy address:
  0x1c2600001370: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x1c2600001380: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c2600001390: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c26000013a0: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
  0x1c26000013b0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
=>0x1c26000013c0: fd fd[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c26000013d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c26000013e0: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x1c26000013f0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c2600001400: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c2600001410: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==69263==ABORTING
f951: internal compiler error: Abort trap: 6

Reply via email to