https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66461
Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |Joost.VandeVondele at mat dot ethz | |.ch --- Comment #7 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> --- (In reply to Jerry DeLisle from comment #6) > Hiesenbug. Steves fix, probably on BSD, does not work on linux. Some of my > attempts work when running within the debugger, but do not work outside the > debugger. I have traced through the scanner with and without the END > statement and see nothing yet. > > We might try a regression hunt to see where it broke to get a hint. One > thing I have not checked yet is in fixed form we skip past the first > characters of each line. We may need to trap an EOF when we are doing that > skipping. This might be obvious, but valgrind might give a hint ? : -linux-gnu/6.0.0/finclude -o /tmp/ccyEi6l3.s ==20860== ==20860== Invalid read of size 4 ==20860== at 0x5DF7C1: free_expr0(gfc_expr*) (expr.c:431) ==20860== by 0x5DF9BD: gfc_free_expr(gfc_expr*) (expr.c:513) ==20860== by 0x60FE57: gfc_match_if(gfc_statement*) (match.c:1441) ==20860== by 0x62BF91: decode_statement (parse.c:398) ==20860== by 0x62BF91: decode_statement() (parse.c:293) ==20860== by 0x62D434: next_free (parse.c:1076) ==20860== by 0x62D434: next_statement() (parse.c:1310) ==20860== by 0x62F4D4: parse_executable(gfc_statement) (parse.c:4792) ==20860== by 0x630311: parse_progunit(gfc_statement) (parse.c:5215) ==20860== by 0x6316C0: gfc_parse_file() (parse.c:5698) ==20860== by 0x6745A2: gfc_be_parse_file() (f95-lang.c:201) ==20860== by 0xB64FD2: compile_file() (toplev.c:464) ==20860== by 0xB6706B: do_compile (toplev.c:1985) ==20860== by 0xB6706B: toplev::main(int, char**) (toplev.c:2092) ==20860== by 0x1354346: main (main.c:39) ==20860== Address 0x4dc1b50 is 0 bytes inside a block of size 192 free'd ==20860== at 0x4A06D9B: free (vg_replace_malloc.c:530) ==20860== by 0x60FE12: gfc_match_if(gfc_statement*) (match.c:1425) ==20860== by 0x62BF91: decode_statement (parse.c:398) ==20860== by 0x62BF91: decode_statement() (parse.c:293) ==20860== by 0x62D434: next_free (parse.c:1076) ==20860== by 0x62D434: next_statement() (parse.c:1310) ==20860== by 0x62F4D4: parse_executable(gfc_statement) (parse.c:4792) ==20860== by 0x630311: parse_progunit(gfc_statement) (parse.c:5215) ==20860== by 0x6316C0: gfc_parse_file() (parse.c:5698) ==20860== by 0x6745A2: gfc_be_parse_file() (f95-lang.c:201) ==20860== by 0xB64FD2: compile_file() (toplev.c:464) ==20860== by 0xB6706B: do_compile (toplev.c:1985) ==20860== by 0xB6706B: toplev::main(int, char**) (toplev.c:2092) ==20860== by 0x1354346: main (main.c:39) ==20860== Block was alloc'd at ==20860== at 0x4A07B05: calloc (vg_replace_malloc.c:711) ==20860== by 0x13C2368: xcalloc (xmalloc.c:163) ==20860== by 0x5DF29F: gfc_get_expr() (expr.c:48) ==20860== by 0x5DF397: gfc_get_operator_expr(locus*, gfc_intrinsic_op, gfc_expr*, gfc_expr*) (expr.c:106) ==20860== by 0x5B1090: eval_intrinsic(gfc_intrinsic_op, eval_f, gfc_expr*, gfc_expr*) (arith.c:1611) ==20860== by 0x5B1440: eval_intrinsic_f3 (arith.c:1725) ==20860== by 0x5B1440: eval_intrinsic_f3(gfc_intrinsic_op, arith (*)(gfc_expr*, gfc_expr*, gfc_expr**), gfc_expr*, gfc_expr*) (arith.c:1713) ==20860== by 0x6131B2: match_equiv_operand(gfc_expr**) (matchexp.c:784) ==20860== by 0x613276: match_level_5(gfc_expr**) (matchexp.c:811) ==20860== by 0x612572: gfc_match_expr(gfc_expr**) (matchexp.c:870) ==20860== by 0x60B870: gfc_match(char const*, ...) (match.c:1015) ==20860== by 0x60FCC7: gfc_match_if(gfc_statement*) (match.c:1347) ==20860== by 0x62BF91: decode_statement (parse.c:398) ==20860== by 0x62BF91: decode_statement() (parse.c:293)