public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault @ 2021-02-19 20:32 am41119 at hotmail dot com 2021-02-20 12:22 ` [Bug fortran/99171] " dominiq at lps dot ens.fr ` (6 more replies) 0 siblings, 7 replies; 8+ messages in thread From: am41119 at hotmail dot com @ 2021-02-19 20:32 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99171 Bug ID: 99171 Summary: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault Product: gcc Version: 10.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: am41119 at hotmail dot com Target Milestone: --- Created attachment 50226 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50226&action=edit Output of using -save-temps during compilation When calling a passed optional procedure inside an Open MP parallel loop (even with OMP_NUM_THREADS=1) the address of the optional procedure is no longer set to the actual passed procedure. Because the address of the optional procedure is no longer correct we get a Segmentation Fault when calling it. The below program works on GCC9 and below. main.f90: ----------------------------------------------- program gcc10_omp_optional_bug implicit none call function_calling_optionals(print_something) call function_calling_optionals_in_omp(print_something) contains subroutine optional_function_template() implicit none end subroutine subroutine print_something() implicit none print *, "Printing Something" end subroutine print_something subroutine function_calling_optionals(optional_function) implicit none procedure(optional_function_template), optional :: optional_function print *, "When optional function is called without Open MP directive:" if (present(optional_function)) then call optional_function() end if end subroutine function_calling_optionals subroutine function_calling_optionals_in_omp(optional_function) implicit none procedure(optional_function_template), optional :: optional_function print *, "When optional function is called inside Open MP directive:" !$omp parallel if (present(optional_function)) then call optional_function() end if !$omp end parallel end subroutine function_calling_optionals_in_omp end program gcc10_omp_optional_bug --------------------------------------------- gfortran -v Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 10.2.0-5ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-WJNXnb/gcc-10-10.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-WJNXnb/gcc-10-10.2.0/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 10.2.0 (Ubuntu 10.2.0-5ubuntu1~20.04) Compile Command: gfortran main.f90 -fopenmp -o main Execution output: When optional function is called without Open MP directive: Printing Something When optional function is called inside Open MP directive: Program received signal SIGILL: Illegal instruction. Program received signal SIGILL: Illegal instruction. Program received signal SIGILL: Illegal instruction. Backtrace for this error: Program received signal SIGILL: Illegal instruction. Backtrace for this error: Backtrace for this error: Backtrace for this error: Program received signal SIGILL: Illegal instruction. Backtrace for this error: Program received signal SIGSEGV: Segmentation fault - invalid memory reference. Backtrace for this error: Program received signal SIGILL: Illegal instruction. Backtrace for this error: Program received signal SIGILL: Illegal instruction. Backtrace for this error: #0 0x7f9e60dd1d01 in ??? #0 0x7f9e60dd1d01 in ??? #0 0x7f9e60dd1d01 in ??? #1 0x7f9e60dd0ed5 in ??? #2 0x7f9e60bc320f in ??? #3 0x7f9e5e993e27 in ??? Illegal instruction (core dumped) ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/99171] [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault 2021-02-19 20:32 [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault am41119 at hotmail dot com @ 2021-02-20 12:22 ` dominiq at lps dot ens.fr 2021-02-20 12:23 ` [Bug fortran/99171] [10/11 " dominiq at lps dot ens.fr ` (5 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: dominiq at lps dot ens.fr @ 2021-02-20 12:22 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99171 Dominique d'Humieres <dominiq at lps dot ens.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2021-02-20 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #1 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- Confirmed on GCC10 and 11. With GCC9 the run time give When optional function is called without Open MP directive: Printing Something When optional function is called inside Open MP directive: Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something Printing Something ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/99171] [10/11 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault 2021-02-19 20:32 [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault am41119 at hotmail dot com 2021-02-20 12:22 ` [Bug fortran/99171] " dominiq at lps dot ens.fr @ 2021-02-20 12:23 ` dominiq at lps dot ens.fr 2021-02-22 8:40 ` rguenth at gcc dot gnu.org ` (4 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: dominiq at lps dot ens.fr @ 2021-02-20 12:23 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99171 Dominique d'Humieres <dominiq at lps dot ens.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P4 Summary|[10 Regression] Optional |[10/11 Regression] Optional |procedure call inside Open |procedure call inside Open |MP parallel loop produces |MP parallel loop produces |Segmentation Fault |Segmentation Fault ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/99171] [10/11 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault 2021-02-19 20:32 [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault am41119 at hotmail dot com 2021-02-20 12:22 ` [Bug fortran/99171] " dominiq at lps dot ens.fr 2021-02-20 12:23 ` [Bug fortran/99171] [10/11 " dominiq at lps dot ens.fr @ 2021-02-22 8:40 ` rguenth at gcc dot gnu.org 2021-02-22 12:20 ` cvs-commit at gcc dot gnu.org ` (3 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: rguenth at gcc dot gnu.org @ 2021-02-22 8:40 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99171 Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |10.3 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/99171] [10/11 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault 2021-02-19 20:32 [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault am41119 at hotmail dot com ` (2 preceding siblings ...) 2021-02-22 8:40 ` rguenth at gcc dot gnu.org @ 2021-02-22 12:20 ` cvs-commit at gcc dot gnu.org 2021-02-22 14:01 ` cvs-commit at gcc dot gnu.org ` (2 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2021-02-22 12:20 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99171 --- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Tobias Burnus <burnus@gcc.gnu.org>: https://gcc.gnu.org/g:e9b34037cdd196ab912a7ac3358f8a8d3e307e92 commit r11-7320-ge9b34037cdd196ab912a7ac3358f8a8d3e307e92 Author: Tobias Burnus <tobias@codesourcery.com> Date: Mon Feb 22 13:20:26 2021 +0100 Fortran/OpenMP: Fix optional dummy procedures [PR99171] gcc/fortran/ChangeLog: PR fortran/99171 * trans-openmp.c (gfc_omp_is_optional_argument): Regard optional dummy procs as nonoptional as no special treatment is needed. libgomp/ChangeLog: PR fortran/99171 * testsuite/libgomp.fortran/dummy-procs-1.f90: New test. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/99171] [10/11 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault 2021-02-19 20:32 [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault am41119 at hotmail dot com ` (3 preceding siblings ...) 2021-02-22 12:20 ` cvs-commit at gcc dot gnu.org @ 2021-02-22 14:01 ` cvs-commit at gcc dot gnu.org 2021-02-22 14:03 ` [Bug fortran/99171] [10/11 Regression] Optional procedure call inside OpenMP " burnus at gcc dot gnu.org 2021-02-22 14:03 ` burnus at gcc dot gnu.org 6 siblings, 0 replies; 8+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2021-02-22 14:01 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99171 --- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-10 branch has been updated by Tobias Burnus <burnus@gcc.gnu.org>: https://gcc.gnu.org/g:08f43c8c98196b2c9b9476aa20b36a3ee629b3a1 commit r10-9381-g08f43c8c98196b2c9b9476aa20b36a3ee629b3a1 Author: Tobias Burnus <tobias@codesourcery.com> Date: Mon Feb 22 13:20:26 2021 +0100 Fortran/OpenMP: Fix optional dummy procedures [PR99171] gcc/fortran/ChangeLog: PR fortran/99171 * trans-openmp.c (gfc_omp_is_optional_argument): Regard optional dummy procs as nonoptional as no special treatment is needed. libgomp/ChangeLog: PR fortran/99171 * testsuite/libgomp.fortran/dummy-procs-1.f90: New test. (cherry picked from commit e9b34037cdd196ab912a7ac3358f8a8d3e307e92) ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/99171] [10/11 Regression] Optional procedure call inside OpenMP parallel loop produces Segmentation Fault 2021-02-19 20:32 [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault am41119 at hotmail dot com ` (4 preceding siblings ...) 2021-02-22 14:01 ` cvs-commit at gcc dot gnu.org @ 2021-02-22 14:03 ` burnus at gcc dot gnu.org 2021-02-22 14:03 ` burnus at gcc dot gnu.org 6 siblings, 0 replies; 8+ messages in thread From: burnus at gcc dot gnu.org @ 2021-02-22 14:03 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99171 Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org Keywords| |wrong-code Summary|[10/11 Regression] Optional |[10/11 Regression] Optional |procedure call inside Open |procedure call inside |MP parallel loop produces |OpenMP parallel loop |Segmentation Fault |produces Segmentation Fault Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> --- FIXED – both on mainline (GCC 11) and on the GCC 11 branch. Thanks for the report! ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug fortran/99171] [10/11 Regression] Optional procedure call inside OpenMP parallel loop produces Segmentation Fault 2021-02-19 20:32 [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault am41119 at hotmail dot com ` (5 preceding siblings ...) 2021-02-22 14:03 ` [Bug fortran/99171] [10/11 Regression] Optional procedure call inside OpenMP " burnus at gcc dot gnu.org @ 2021-02-22 14:03 ` burnus at gcc dot gnu.org 6 siblings, 0 replies; 8+ messages in thread From: burnus at gcc dot gnu.org @ 2021-02-22 14:03 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99171 --- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> --- (In reply to Tobias Burnus from comment #4) > FIXED – both on mainline (GCC 11) and on the GCC 11 branch. ... and GCC 10 (!) branch. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-02-22 14:03 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-02-19 20:32 [Bug fortran/99171] New: [10 Regression] Optional procedure call inside Open MP parallel loop produces Segmentation Fault am41119 at hotmail dot com 2021-02-20 12:22 ` [Bug fortran/99171] " dominiq at lps dot ens.fr 2021-02-20 12:23 ` [Bug fortran/99171] [10/11 " dominiq at lps dot ens.fr 2021-02-22 8:40 ` rguenth at gcc dot gnu.org 2021-02-22 12:20 ` cvs-commit at gcc dot gnu.org 2021-02-22 14:01 ` cvs-commit at gcc dot gnu.org 2021-02-22 14:03 ` [Bug fortran/99171] [10/11 Regression] Optional procedure call inside OpenMP " burnus at gcc dot gnu.org 2021-02-22 14:03 ` burnus at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).