[Bug fortran/105916] gfortran -fdiagnostics-format=json yields incorrect output

dmalcolm at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jun 12 16:09:47 GMT 2022


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

--- Comment #1 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Thanks for filing this.

Reproducable with trunk.  On trunk I also see similar behavior with the new
SARIF output format via options:
  -fdiagnostics-format=sarif-stderr
  -fdiagnostics-format=sarif-file
and with:
  -fdiagnostics-format=json-file

With json output, the json::object for the error is being stashed for later
output here:

(gdb) bt
#0  json_end_diagnostic (context=0x3f4a370, diagnostic=0x3f46100,
orig_diag_kind=DK_UNSPECIFIED) at ../../src/gcc/diagnostic-format-json.cc:159
#1  0x0000000002e78ecf in diagnostic_report_diagnostic (context=0x3f31b00
<global_diagnostic_context>, diagnostic=0x7fffffffd170)
    at ../../src/gcc/diagnostic.cc:1548
#2  0x0000000000adaca8 in gfc_report_diagnostic (diagnostic=0x7fffffffd170) at
../../src/gcc/fortran/error.cc:883
#3  0x0000000000adc61d in gfc_error_opt(int, const char *, typedef
__va_list_tag __va_list_tag *) (opt=0, 
    gmsgid=0x2f7b0d0 "Function %qs requires an argument list at %C",
ap=0x7fffffffd258) at ../../src/gcc/fortran/error.cc:1453
#4  0x0000000000adc7ce in gfc_error (gmsgid=0x2f7b0d0 "Function %qs requires an
argument list at %C") at ../../src/gcc/fortran/error.cc:1482
#5  0x0000000000b83162 in gfc_match_rvalue (result=0x7fffffffd4b0) at
../../src/gcc/fortran/primary.cc:3711
#6  0x0000000000b319f3 in match_primary (result=0x7fffffffd4b0) at
../../src/gcc/fortran/matchexp.cc:157
#7  0x0000000000b31b0e in match_level_1 (result=0x7fffffffd508) at
../../src/gcc/fortran/matchexp.cc:211
#8  0x0000000000b31bd8 in match_mult_operand (result=0x7fffffffd568) at
../../src/gcc/fortran/matchexp.cc:267
#9  0x0000000000b31df1 in match_add_operand (result=0x7fffffffd5b0) at
../../src/gcc/fortran/matchexp.cc:356
#10 0x0000000000b320bf in match_level_2 (result=0x7fffffffd608) at
../../src/gcc/fortran/matchexp.cc:480
#11 0x0000000000b32257 in match_level_3 (result=0x7fffffffd678) at
../../src/gcc/fortran/matchexp.cc:551
#12 0x0000000000b32361 in match_level_4 (result=0x7fffffffd6c8) at
../../src/gcc/fortran/matchexp.cc:599
#13 0x0000000000b32616 in match_and_operand (result=0x7fffffffd718) at
../../src/gcc/fortran/matchexp.cc:693
#14 0x0000000000b3269e in match_or_operand (result=0x7fffffffd768) at
../../src/gcc/fortran/matchexp.cc:722
#15 0x0000000000b327a8 in match_equiv_operand (result=0x7fffffffd7b8) at
../../src/gcc/fortran/matchexp.cc:765
#16 0x0000000000b328b2 in match_level_5 (result=0x7fffffffd810) at
../../src/gcc/fortran/matchexp.cc:811
#17 0x0000000000b32a01 in gfc_match_expr (result=0x7fffffffd9b0) at
../../src/gcc/fortran/matchexp.cc:870
#18 0x0000000000b24e0e in gfc_match (target=0x2f66b7a " %e") at
../../src/gcc/fortran/match.cc:1125
#19 0x0000000000b2e443 in gfc_match_ptr_fcn_assign () at
../../src/gcc/fortran/match.cc:6039
#20 0x0000000000b693e9 in match_word (str=0x0, subr=0xb2e2c3
<gfc_match_ptr_fcn_assign()>, old_locus=0x7fffffffdba0)
    at ../../src/gcc/fortran/parse.cc:67
#21 0x0000000000b6a0d8 in decode_statement () at
../../src/gcc/fortran/parse.cc:375
#22 0x0000000000b72035 in next_free () at ../../src/gcc/fortran/parse.cc:1397
#23 0x0000000000b72664 in next_statement () at
../../src/gcc/fortran/parse.cc:1629
#24 0x0000000000b7af20 in gfc_parse_file () at
../../src/gcc/fortran/parse.cc:6738
#25 0x0000000000be3143 in gfc_be_parse_file () at
../../src/gcc/fortran/f95-lang.cc:229
#26 0x0000000001523847 in compile_file () at ../../src/gcc/toplev.cc:452
#27 0x0000000001527367 in do_compile (no_backend=false) at
../../src/gcc/toplev.cc:2144
#28 0x00000000015277f9 in toplev::main (this=0x7fffffffde3a, argc=15,
argv=0x7fffffffdf48) at ../../src/gcc/toplev.cc:2296
#29 0x0000000002e4ab76 in main (argc=15, argv=0x7fffffffdf48) at
../../src/gcc/main.cc:39


More information about the Gcc-bugs mailing list