Hi Dave;

  I saw changes made on the Rosetta Code web site.  Thanks so much for
the educational service done here by you.

Ken

On Sun, Aug 3, 2025 at 3:57 PM Kenneth Wolcott <[email protected]> wrote:
>
> Hi Dave;
>
>   Thank you for your continued attention to this.
>
>   In this case, assuming that it was figurative, OCD can be a useful
> attribute to have. Usually having OCD (really) is a big pain in the
> posterior (putting it mildly).
>
>   I have updated my comments in the respective Rosetta Code task.
>
> Thanks,
> Ken
>
> On Sun, Aug 3, 2025 at 1:43 PM Dave Allured - NOAA Affiliate
> <[email protected]> wrote:
> >
> > Correction.  My OCD was bothering me, so I had to look deeper.  The 
> > original program is NOT legal fortran.  The main program calls the function 
> > like this:  WRITE (*,*) ToBase(16, 26).  Then the function attempts to 
> > modify the second argument.  But "26" is a constant, therefore not 
> > modifiable, and not legal fortran.  This explains the crash.  Sorry I 
> > missed this earlier.
> >
> > The best fix is to make a writable copy of this argument inside the 
> > function code.  See attached corrected program.  Please use this version in 
> > place of the inlined version that I sent earlier.
> >
> > This is NOT a bug in gfortran, and should not be advertised as such.  
> > Offhand I would say that any compiler such as flang that allows this, is 
> > not following this fortran rule carefully, therefore is in itself deficient.
> >
> >
> > On Sat, Aug 2, 2025 at 3:16 PM Kenneth Wolcott <[email protected]> 
> > wrote:
> >>
> >> 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

Reply via email to