Hi Dave; Thank you so much for your analysis and providing an alternative that appears to work well. I have added this info to the Rosetta Code task talk page so that it might benefit the greater Fortran communty on Rosetta Code.
Thanks again, Ken Wolcott On Sat, Aug 2, 2025 at 12:11 PM Dave Allured - NOAA Affiliate <[email protected]> wrote: > > Ken, the short answer is, the test program seems to be valid fortran; and > both gfortran-mp-13 and gfortran-mp-14 have a bug. They can't handle the > function "ToBase" as written. > > I tested several convolutions: external rather than module function; > subroutine instead of function; etc. The first thing that worked was to get > rid of the function altogether, and inline the function code. Attached is > the working version. Please try it. > > Also try gfortran in MacPorts gcc-devel (i.e. GCC version 15) on the original > program. Also try other fortran compilers if you have anything else besides > flang. > > This may or may not be a known gfortran bug. It would be worth checking GCC > bug reports, or filing a new report. > > There is a second bug here: "Could not print backtrace: DW_FORM_line_strp out > of range". This is a failure in the GCC backtrace code. This was > disappointing because it concealed useful information that I expected from > your second test. This is a known GCC bug, therefore not worth pursuing on > this forum. Google search it if you care. I don't. > > Note that MacPorts gcc13, gcc14, and gcc-devel are all slightly out of date. > Updating any of these may or may not fix either the fortran problem, or the > backtrace problem. > > > On Fri, Aug 1, 2025 at 7:58 PM Kenneth Wolcott <[email protected]> > wrote: >> >> Hi Dave; >> >> I have a new directory created by the debug commands, which I did not >> notice when I replied earlier. I have tar'd it up and compressed it >> and attached it. Hopefully it is useful. >> >> Thanks, >> Ken >> >> On Fri, Aug 1, 2025 at 6:19 PM Kenneth Wolcott <[email protected]> >> wrote: >> > >> > Hi Dave; >> > >> > Thanks for the debugging info hint... >> > >> > Here's my new ./test_it.bash file: >> > >> > cat -n ./test_it.bash >> > 1 #!/bin/bash >> > 2 >> > 3 printf "\nUsing gfortran-mp-14 ...\n" >> > 4 # gfortran-mp-14 -x none -o ./non_decimal_radices_convert >> > ./non_decimal_radices_convert.f90 >> > 5 stem="./non_decimal_radices_convert" >> > 6 source="${stem}.f90" >> > 7 gfortran-mp-14 -g -O0 -fbacktrace -fcheck=all -Wall -x none -o >> > $stem $source >> > 8 >> > 9 if [ -f $stem ]; then >> > 10 $stem >> > 11 rm $stem >> > 12 fi >> > 13 >> > 14 if [ -f ./conversion.mod ]; then >> > 15 rm ./conversion.mod >> > 16 fi >> > 17 >> > 18 printf "\nUsing flang-mp-20...\n" >> > 19 /opt/local/bin/flang-mp-20 -o $stem $source >> > 20 if [ -f $stem ]; then >> > 21 $stem >> > 22 rm $stem >> > 23 fi >> > 24 >> > 25 if [ -f ./conversion.mod ]; then >> > 26 rm ./conversion.mod >> > 27 fi >> > >> > And here's the output: >> > >> > ./test_it.bash >> > >> > Using gfortran-mp-14 ... >> > 26 >> > >> > Program received signal SIGBUS: Access to an undefined portion of a >> > memory object. >> > >> > Backtrace for this error: >> > #0 0x104446083 in ??? >> > #1 0x104445357 in ??? >> > #2 0x1850b56a3 in ??? >> > >> > Could not print backtrace: DW_FORM_line_strp out of range in .debug_line >> > at 38 >> > #3 0x104310c67 in ??? >> > #4 0x104310c67 in ??? >> > #5 0x104310cc7 in ??? >> > ./test_it.bash: line 12: 97090 Bus error: 10 $stem >> > >> > Using flang-mp-20... >> > 26 >> > 1a >> > >> > Thanks, >> > Ken >> > On Fri, Aug 1, 2025 at 2:31 PM Dave Allured - NOAA Affiliate >> > <[email protected]> wrote: >> > > >> > > This feels like subscript out of bounds. Please add standard gfortran >> > > debugging options before asking for deeper analysis. In particular, >> > > `-fcheck=all` will check for most subscripts out of bounds, including >> > > string indexing. It will then give intelligent legible diagnostics. >> > > >> > > `gfortran -g -O0 -fbacktrace -fcheck=all -Wall` >> > > >> > > >> > > On Fri, Aug 1, 2025 at 2:59 PM Kenneth Wolcott >> > > <[email protected]> wrote: >> > >> >> > >> Hi; >> > >> >> > >> Weird error from a very short bash script involving gfortran and flang >> > >> compile/execution... >> > >> >> > >> I'm trying to compile and execute a Rosetta Code task written in >> > >> Fortran: >> > >> >> > >> https://rosettacode.org/wiki/Non-decimal_radices/Convert#Fortran >> > >> >> > >> ***************************** >> > >> Here is my ./test_it.bash script: >> > >> >> > >> cat -n ./test_it.bash >> > >> 1 #!/bin/bash >> > >> 2 >> > >> 3 printf "\nUsing gfortran-mp-14 ...\n" >> > >> 4 gfortran-mp-14 -x none -o ./non_decimal_radices_convert >> > >> ./non_decimal_radices_convert.f90 >> > >> 5 if [ -f ./non_decimal_radices_convert ]; then >> > >> 6 ./non_decimal_radices_convert >> > >> 7 rm ./non_decimal_radices_convert >> > >> 8 fi >> > >> 9 >> > >> 10 printf "\nUsing flang-mp-20...\n" >> > >> 11 /opt/local/bin/flang-mp-20 -o ./non_decimal_radices_convert >> > >> ./non_decimal_radices_convert.f90 >> > >> 12 if [ -f ./non_decimal_radices_convert ]; then >> > >> 13 ./non_decimal_radices_convert >> > >> 14 rm ./non_decimal_radices_convert >> > >> 15 fi >> > >> >> > >> ***************************** >> > >> ***************************** >> > >> Here are the results: >> > >> >> > >> ./test_it.bash >> > >> >> > >> Using gfortran-mp-14 ... >> > >> 26 >> > >> >> > >> Program received signal SIGBUS: Access to an undefined portion of a >> > >> memory object. >> > >> >> > >> Backtrace for this error: >> > >> #0 0x102e520a7 >> > >> #1 0x102e51357 >> > >> #2 0x1850b56a3 >> > >> #3 0x102c7c997 >> > >> #4 0x102c7c997 >> > >> #5 0x102c7c9ef >> > >> ./test_it.bash: line 8: 93614 Bus error: 10 >> > >> ./non_decimal_radices_convert >> > >> >> > >> Using flang-mp-20... >> > >> 26 >> > >> 1a >> > >> ***************************** >> > >> >> > >> Was the executable generated by gfortran still executing when I deleted >> > >> it? >> > >> >> > >> Why is there a difference? >> > >> >> > >> Is there a bug here? >> > >> >> > >> Thanks, >> > >> Ken Wolcott
