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

            Bug ID: 118714
           Summary: [15 regression] SIGBUS in parse.cc:unexpected_eof
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ro at gcc dot gnu.org
                CC: sandra at gcc dot gnu.org
  Target Milestone: ---
            Target: sparc-sun-solaris2.11

Between 20250130 (9ba2de71815c0ea6cc940ecb50af7cc1a84579f7) and 20250131
(9e3ceed8d50912e271e84389ed80aeea47184e59),
one test regressed on Solaris/SPARC (32 and 64-bit):

+FAIL: gfortran.dg/gomp/adjust-args-9.f90   -O  (internal compiler error: Bus
Error)

/vol/gcc/src/hg/master/local/gcc/testsuite/gfortran.dg/gomp/adjust-args-9.f90:22:7:
Error: ā€˜g’ at (1) is not a variable
/vol/gcc/src/hg/master/local/gcc/testsuite/gfortran.dg/gomp/adjust-args-9.f90:24:4:
Error: Unexpected END statement at (1)
f951: Error: Unexpected end of file in
ā€˜/vol/gcc/src/hg/master/local/gcc/testsuite/gfortran.dg/gomp/adjust-args-9.f90’
f951: internal compiler error: Bus Error
0x213e1af internal_error(char const*, ...)
        /vol/gcc/src/hg/master/local/gcc/diagnostic-global-context.cc:517
0x11245f7 crash_signal
        /vol/gcc/src/hg/master/local/gcc/toplev.cc:322
0x89aac0 unexpected_eof
        /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:3424
0x8abb53 parse_select_block
        /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:4819
0x8abb53 parse_executable
        /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:6576
0x8ac49b parse_progunit
        /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:6949
0x8ae0a3 gfc_parse_file()
        /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:7513
0x911337 gfc_be_parse_file
        /vol/gcc/src/hg/master/local/gcc/fortran/f95-lang.cc:241

This can be reproduced with

$ f951 adjust-args-9.f90 -quiet -mcpu=v9 -fopenmp

gdb shows

Thread 2 received signal SIGBUS, Bus error.
[Switching to Thread 1 (LWP 1)]
0x0089aac0 in unexpected_eof ()
    at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:3424
3424      for (p = gfc_state_stack; p && p->previous && p->previous->previous;
(gdb) bt
#0  0x0089aac0 in unexpected_eof ()
    at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:3424
#1  0x008abb54 in parse_select_block ()
    at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:4819
#2  parse_executable (st=<optimized out>)
    at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:6576
#3  0x008ac49c in parse_progunit (st=ST_OMP_DISPATCH)
    at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:6949
#4  0x008ae0a4 in gfc_parse_file ()
    at /vol/gcc/src/hg/master/local/gcc/fortran/parse.cc:7513
#5  0x00911338 in gfc_be_parse_file ()
    at /vol/gcc/src/hg/master/local/gcc/fortran/f95-lang.cc:241
#6  0x01124bac in compile_file ()
    at /vol/gcc/src/hg/master/local/gcc/toplev.cc:452
#7  0x01128a68 in do_compile ()
    at /vol/gcc/src/hg/master/local/gcc/toplev.cc:2208
#8  toplev::main (this=<optimized out>, argc=<optimized out>, 
    argv=<optimized out>) at /vol/gcc/src/hg/master/local/gcc/toplev.cc:2368
#9  0x020f90f4 in main (argc=5, argv=0xffbfeb8c)
    at /vol/gcc/src/hg/master/local/gcc/main.cc:39

gdb) p p
$1 = <optimized out>
(gdb) p gfc_state_stack
$3 = (gfc_state_data *) 0xffbfe6d0
(gdb) p $3->previous
$4 = (gfc_state_data *) 0x5e

Obviously, p->previous is invalid.  This is almost certainly due to

commit 8fbccdb3425e7fc9194d3f02e4a53f3e85cd1a4e
Author: Sandra Loosemore <sloosem...@baylibre.com>
Date:   Thu Jan 30 17:03:06 2025 +0000

    OpenMP: Fortran support for metadirectives and dynamic selectors

Reply via email to