Re: [Rd] .Call and Segmentation Fault

From: Ricardo Luiz Andrade Abrantes <rabrantes82_at_gmail.com>
Date: Sun 28 Aug 2005 - 02:24:08 GMT

Hi!
Yes, I am returning a SEXP from the functions called from R, and the problem occurs before (thousands of iterations before) the return point.
In fact I runned valgrind into R and when I call ".Call(...) " I got many errors like:

==4324== Use of uninitialised value of size 8
==4324==    at 0x1CB0766D: tnls_ (gencan.f:4101)
==4324==    by 0x1CB01962: gencan_ (gencan.f:1876)
==4324==    by 0x1CAFECA5: easygencan_ (gencan.f:440)
==4324==    by 0x1CB0B47D: algencan_ (algencan.f:517)
==4324==    by 0x1CB09E74: easyalgencan_ (algencan.f:76)
==4324==    by 0x1CAFE5B3: main (algencanma.c:808)
what does not happens when I compile the algencanma as a regular program (not a library) and run it from shell. Valgrind does not find anything wrong when I run the program directly, except 2 missing free() calls.
Do you have any ideas where the problem lies (R .Call function or C program)? By the way I am using a debian linux with kernel 2.6.

  Thanks

        Ricardo

On 8/26/05, Byron Ellis <ellis@stat.harvard.edu> wrote:
> Are you returning a SEXP? .Call (unlike .C) expects a SEXP return
> value. It sounds like you're returning garbage and R is choking on
> that when it tries to use the address as a SEXP.
>
> On Aug 26, 2005, at 3:19 PM, Ricardo Luiz Andrade Abrantes wrote:
>
> > Hello to everyone!
> > I use .Call to call a C function without arguments wich calls a
> > fortran optimization package. My C function uses others C and Fortran
> > functions and it works fine when I call it from a main() in a C
> > program. But when I call it from R with
> > .Call("name_of_the_c_function"), R gives me some weird output.
> > This weird output is a worng answer to my optimization problem
> > (sometimes after thousands iteractions, what does not occur when
> > called from C) or a segmentation fault error. The kind of output
> > depends on the machine I am using. At home I got a segmentation faul,
> > in university I got those wrong values.
> > I tried a memcheck in C and Fortran binaries, but everything seems
> > allright except by 2 missing free() calls (wich I don`t think might be
> > causing this error).
> > I compiled my C and Fortran files with R CMD SHARED and then linked
> > all the .o with the same command. I also tried compiling all the
> > needed object files with -fPIC and -shared and then using R CMD SHARED
> > to link everything, but I got the same problem.
> > The only thing I do in R is the following:
> >
> > dyn.load("mylib.so")
> > .Call("name_of_the_c_function")
> >
> > Can someone hellp me with this?
> >
> >
> > Thanks!
> >
> >
> > Ricardo
> >
> > ______________________________________________
> > R-devel@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>
> ---
> Byron Ellis (ellis@stat.harvard.edu)
> "Oook" -- The Librarian
>
>



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Sun Aug 28 12:27:35 2005

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:19 GMT