[Rd] .Fortran successful, R locks up.

Duncan Murdoch
Fri, 25 Mar 2011 12:41:19 -0000

On 24/03/2011 12:35 PM, Daniel Fuka wrote:
> Howdy,
>
> I am having a problem with a library compiled from some legacy fortran
> code. I can call the library, it runs as it should, returns a list,
> and gives a ">" prompt, but then locks up the R session.
Functions
> typed in return nothing. ctrl-c results in a new prompt that is still
> locked up, and R overwhelms the processor. This happens on Mac,
> Windows, and Linux exactly the same. I close all open files and
> confirm nothing is still open with unix lsof. I also have added a
> routine to deallocate all allocated variables.
>
> Does anyone have any suggestions in how I might be able to debug this
> further? I have included output from the R session, top -o CPU, and R
> CMD INSTALL below.

I would guess that the Fortran is trying to do some Fortran-style I/O;
that often causes problems.  See Writing R Extensions for alternatives
(dblepr etc.).  Or it might be some other bug.

The best way to debug something like this is with gdb or gdb plus a
front end like Insight, Xcode, Eclipse, etc., but if you haven't used
them before, they are somewhat daunting.  If you're doing this on
Windows you'll need to rebuild your library with the environment
variable DEBUG set to T to get the debugging information compiled into
it.  Not sure if you need to do anything on the other systems.

Duncan Murdoch

> Thanks for your time on my behalf!
> dan
>
> Ouput from R session with library "swat" and subroutine
"junk":
> >  library.dynam("swat","EcoHydrology")
> >  .Fortran("junk")
>                  SWAT2005
>        Soil&  Water Assessment Tool
>                 PC Version
>   Program reading from file.cio . . . executing
>
> list()
> >
> ^C
> >  q("n")
> ^C
> >  obejcts()
>
>
> ^C
> >  q()
>
> ^C
> >  ^Z
> [1]+  Stopped                 r
>
DRF28:~/cornell/ecohydrology/swat_example/SJ_R_test_mac/Scenarios/Default/TxtInOut_R
> dan$ killall R
> [1]+  Terminated              r
>
>
> Output from top during lockup:
>    PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS RPRVT  RSHRD  RSIZE
VSIZE
> 40750 R           96.6%  1:56.07   1    17     87   15M  1384K-   19M
49M
>
> Output from R CMD INSTALL:
> 114 mirage5:fuka% R CMD INSTALL EcoHydrology
> * installing to library
> ?/glade/home/fuka/R/x86_64-unknown-linux-gnu-library/2.12?
> * installing *source* package ?EcoHydrology? ...
> ** libs
> ** arch -
> Makefile:123: warning: overriding commands for target `.f.o'
> /fs/local/apps/R-2.12.1/lib64/R/etc/Makeconf:132: warning: ignoring
> old commands for target `.f.o'
> gfortran -fPIC -g -O2   -c modparm.f
> gfortran -fPIC -g -O2   -c addh.f
> ---SNIP successful gfortran output----
> gfortran -fPIC -g -O2   -c zeroini.f
> gfortran -fPIC -g -O2   -c closefiles.f
> gfortran -shared  -o swat.so modparm.o addh.o albedo.o
> allocate_parms.o alph.o analyse.o anfert.o apex_day.o apply.o ascrv.o
> ---SNIP successful link output----
> writeaa.o writed.o writem.o writeswatfile.o writeswatmain.o xisquare.o
> xiunc.o xmon.o ysed.o zero0.o zero1.o zero2.o zeroini.o closefiles.o
> installing to
/glade/home/fuka/R/x86_64-unknown-linux-gnu-library/2.12/EcoHydrology/libs
> ** R
> ** data
> ** preparing package for lazy loading
> ** help
> *** installing help indices
> ** building package indices ...
> ** testing if installed package can be loaded
>
> * DONE (EcoHydrology)
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel