> > 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. >
I don't think it is an R bug. I think it is because there is already a Fortran function called cg in R. The fact that changing the name matters suggest that you have a linking problem, and this turns out to be the case. When I try running your code under gdb in R as Peter Dalgaard suggested (after editing it to use R's macros for calling fortran from C instead of "cfortran.h" which I don't have), I get > .Call("simple_program") Calling the function... Program received signal SIGSEGV, Segmentation fault. 0x081604e5 in cg_ (nm=0x9e5dda4, n=0xbfefccfc, ar=0xbfefcce8, ai=0x89a826, wr=0x9e5dda4, wi=0x9790cc0, matz=0x56090a0, zr=0x80992d4, zi=0x0, fv1=0x0, fv2=0x9e745f8, fv3=0x89a810, ierr=0x706d6973) at eigen.f:3416 3416 IERR = 10 * N Current language: auto; currently fortran That is, your program is calling the Fortran subroutine CG in eigen.f, rather than your CG. There should be some set of linker flags that makes sure your definition of CG is used, but I don't know what it would be (and it's probably very platform dependent) -thomas ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel