Re: [Rd] Crash in R using embedded.

From: Duncan Murdoch <murdoch.duncan_at_gmail.com>
Date: Wed, 01 Feb 2012 11:41:06 -0500

You posted this message already. If you didn't get any responses based on that posting, I think it means nobody has any suggestions beyond what you're already doing. Debugging is hard sometimes, even if you approach it in the right way.

A common source of hard-to-find bugs is the R garbage collection scheme:   if you don't PROTECT an allocation, sometimes it will be overwritten before you're done with it, because you haven't told R you're using it.   Running under gctorture() can sometimes trigger this sooner, but it's very slow.

Duncan Murdoch

On 12-02-01 10:24 AM, Dave Pugmire wrote:
> Hi,
> I'm new to R, and am trying to embed R into another application.
> I'm calling gev.fit() from the ismev package, and it is crashing somewhere
> inside it.
> gdb is not catching it, and valgrind is not showing any memory corruption
> issues.
> I suspect it's memory corruption, because it doesn't crash in exactly the
> same spot each time.
> I'm running R 2.12.2 on a 64 bit linux (Ubuntu 10.04)

>
> Also, before I make the gev.fit() call, I save out the R state using
> "save.image(....)", then load the image file into a standalone R on the
> console, and call gev.fit(), and it works fine.
> So, it's something to do with my app, and the R.
>
> I'm looking for hints/ideas/tricks/etc for debugging this.
> I'm starting to put print statements into the R code, and into the C code
> in R (src/main/optim.c), but it hasn't shown me the source of the problem.
>
> Thanks!
>
>
> Here is the code I'm using to initialize:
>
> putenv("R_HOME=/apps/R/install/lib64/R");
> const char *R_argv[]= {"RInterfaceTest", "--gui=none", "--no-save",
> "--no-readline", "--silent"};
> Rf_initialize_R(sizeof(R_argv)/sizeof(R_argv[0]), const_cast<char
> **>(R_argv));
>
> setup_Rmainloop();
>
> ParseStatus status;
> SEXP cmdSexp, cmdexpr = R_NilValue;
> int error;
> string rcommand = "f<-file(paste(tempdir(), \"/Routput.txt\", sep = \"\"),
> open=\"wt+\")\nsink(f)\n";
> PROTECT(cmdSexp = allocVector(STRSXP, 1));
> SET_STRING_ELT(cmdSexp, 0, mkChar(rcommand.c_str()));
>
> cmdexpr = PROTECT(R_ParseVector(cmdSexp, -1,&status, R_NilValue));
> for(int i = 0; i< length(cmdexpr); i++)
> {
> R_tryEval(VECTOR_ELT(cmdexpr, i),NULL,&error);
> }
> UNPROTECT(2);
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 01 Feb 2012 - 16:44:08 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 01 Feb 2012 - 18:20:13 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive