Full_Name: Ricardo Luiz de Andrade Abrantes Version: 2.1.1 OS: Debian Linux, kernel 2.6.8 Submission from: (NULL) (201.6.83.153)
The problem can be well explained with the following example: Suppose I made a program in fortran, and a C interfacece to it. Now I want to use this C interface in R to call my fortran program. Then I modified my C file to deal with SEXPs and compile it as a shared lib. Look at the files: File: prog.f ------------- subroutine cg() write(*,*) 'Just a simple test' end subroutine program() write(*,*) 'Calling the function...' call cg() end File test.h ------------ #include "cfortran.h" PROTOCCALLSFSUB0(PROGRAM,program) #define program() CCALLSFSUB0(PROGRAM,program) File test.c ------------ #include <R.h> #include <Rdefines.h> #include <stdio.h> SEXP simple_program(){ program(); return R_NilValue; } I compile the C and Fortran souces into a shared lib, open R, do a dyn.load("lib's name") and then a .Call("simple_program"). What I got? Calling the function... Segmentation fault What if I change the cg function's name to pp? My Fortran code is now: File: prog.f ------------- subroutine pp() write(*,*) 'Just a simple test' end subroutine program() write(*,*) 'Calling the function...' call pp() end And the output from R is: Calling the function... Just a simple test NULL In some machines I don't get the segmentation fault problem, but I don't get the message "Just a simple test" either (when using "cg" as the subroutine's name). I believe this is bug in R because if I change my C interface again to return a 0 instead of a R_NilValue, and then use it with another C program wich loads the dynamic library amd call the function simple_program(), everything work perfectly. Thanks, Ricardo ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel