From murdoch.duncan at gmail.com  Fri Mar 25 13:41:19 2011
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Fri, 25 Mar 2011 08:41:19 -0400
Subject: [Rd] .Fortran successful, R locks up.
In-Reply-To: <AANLkTikgcW_L1kYER3bDZJCsD8xC7BwJpMhRKUX8Xt8N@mail.gmail.com>
References: <AANLkTikgcW_L1kYER3bDZJCsD8xC7BwJpMhRKUX8Xt8N@mail.gmail.com>
Message-ID: <4D8C8D6F.7040700@gmail.com>

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



[Rd] .Fortran successful, R locks up.
Duncan Murdoch