[Bug fortran/100551] New: [11/12 Regression] Passing return value of intrinsic to class(*) dummy argument can cause segfaults
bugs at colin dot moe
gcc-bugzilla@gcc.gnu.org
Tue May 11 21:32:47 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100551
Bug ID: 100551
Summary: [11/12 Regression] Passing return value of intrinsic
to class(*) dummy argument can cause segfaults
Product: gcc
Version: 11.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: bugs at colin dot moe
Target Milestone: ---
Created attachment 50794
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50794&action=edit
Minimum working example that induces the error.
When passing the return value of an intrinsic function (and possibly other
temporaries) into a function with a class(*) dummy argument, the resulting code
will generate a segfault in GCC 11.1 and newer. 10.2 and earlier (as early as
4.8.5 tested) worked correctly.
Minimum working example attached.
GCC Version (latest tested):
Target: x86_64-pc-linux-gnu
Configured with: ../configure --disable-multilib
--enable-languages=c,c++,fortran --with-system-zlib --prefix=[]/gcc-12.0
gcc version 12.0.0 20210511 (experimental) (GCC)
Command line:
gfortran -Wall -Wextra mwe.f90
./a.out
Output:
Compiler builds with no issues. In GCC 4.8.5, 9.3.0, 10.2.0, the program
output is:
15
In 11.1.0 and 12.0 (tested against master branch for 12.0):
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
#0 0x7f6e7a218f7f in ???
#1 0x401323 in __testmod_MOD_test
at []/mwe.f90:15
#2 0x4015b2 in testprogram
at []/mwe.f90:26
#3 0x40165b in main
at []/mwe.f90:18
[1] 626265 segmentation fault (core dumped) ./a.out
Output with -fsanitize=undefined:
mwe.f90:15:10: runtime error: member access within misaligned address
0x7ffc6198b024 for type 'struct __class__STAR_t', which requires 8 byte
alignment
0x7ffc6198b024: note: pointer points here
60 49 30 ef 0f 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03
00 00 00 04 00 00 00
^
More information about the Gcc-bugs
mailing list