Re: [Rd] memory allocation problem under linux

From: Martyn Plummer <plummer_at_iarc.fr>
Date: Mon 13 Jun 2005 - 13:09:55 GMT

On Mon, 2005-06-13 at 12:12 +0200, antonio.dinarzo@studio.unibo.it wrote:
> Scrive Prof Brian Ripley <ripley at stats.ox.ac.uk>:
>
> > You keep on sending similar messages -- this is at least the third. You
> > need to find out where the segfault is occurring using gdb, and you have
> > not told us.
>
> Sorry for the repeated post (in 2 different mailing lists).
> Tnx for your suggestion. Now I think I've found the problem. Try this:
> ////file foo.c
> #include <R.h>
> int **box;
> void foo(){
> int i;
> box = (int**)R_alloc(1, sizeof(int *));
> }
> /////////////
> Compiled with R CMD SHLIB foo.c
> In R:
> >dyn.load("foo.so")
> >.C("foo")
> *Segmentation fault*
> The problem disappears when the declaration of 'box' comes inside the function
> foo... Is this a bug?

It gives you a hint about what the problem is. Your global variable "box" is conflicting with another symbol. I tracked this down to the ncurses library, to which R is linked under Linux, but not Windows.

[martyn@seurat ~]$ nm /usr/lib/libncurses.so | grep box - 07a6d036 T box

This explains why your problem is platform-specific. You should declare "box" to be static.

M.



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Mon Jun 13 23:13:18 2005

This archive was generated by hypermail 2.1.8 : Mon 24 Oct 2005 - 22:27:18 GMT