From rabrantes82 at gmail.com  Sun Aug 28 04:24:08 2005
From: rabrantes82 at gmail.com (Ricardo Luiz Andrade Abrantes)
Date: Sat, 27 Aug 2005 23:24:08 -0300
Subject: [Rd] .Call and Segmentation Fault
In-Reply-To: <F81375EB-3C7E-4385-ADC1-8842A449A332@stat.harvard.edu>
References: <973080e10508261519699235ea@mail.gmail.com>
	<F81375EB-3C7E-4385-ADC1-8842A449A332@stat.harvard.edu>
Message-ID: <973080e10508271924266ea3bf@mail.gmail.com>

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 at 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 at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> 
> ---
> Byron Ellis (ellis at stat.harvard.edu)
> "Oook" -- The Librarian
> 
>



[Rd] .Call and Segmentation Fault
Ricardo Luiz Andrade Abrantes