[Rd] How to disable R's crash prompt

Dirk Eddelbuettel edd at debian.org
Tue Mar 8 16:09:34 CET 2011


On 8 March 2011 at 09:24, Wayne.Zhang at barclayscapital.com wrote:
| Dear R devel,
| 
| I have a C++ app that calls into embedded R to perform some analytic calculations.  When my app encounters a segmentation fault, R always prints the following crash prompt and asks me to enter an action:
| 
| 
| *** caught segfault ***
| address 0x8, cause 'memory not mapped'
| 
| Possible actions:
| 1: abort (with core dump, if enabled)
| 2: normal R exit
| 3: exit R without saving workspace
| 4: exit R saving workspace
| 
| 
| 
| The problem is my app will be run in non-interactive mode, so there is no way for me to enter the action.  Is there a way to disable the crash prompt and have R simply crash the whole app?  I have tried using "-file=/dev/null", "-slave", "-vanilla", and pretty much all other start options, to no avail.

Are you using RInside?  You could try rebuilding it with the this (from
src/RInside.cpp) set to true

bool verbose = false;

as well as with possibly more debugging output added to the RInside
destructor (where I removed a few commented-out lines for brevity):

RInside::~RInside() {		// now empty as MemBuf is internal
    logTxt("RInside::dtor BEGIN", verbose);
    R_dot_Last();
    R_RunExitFinalizers();
    R_CleanTempDir();
    Rf_endEmbeddedR(0);
    logTxt("RInside::dtor END", verbose);
    instance_ = 0 ;
}

to at least confirm that you get here.  And if you really,really wanted to I
suppose you could try to do without some of these cleanup and finalizer
functions. But I think that would send you into somewhat uncharted territory,
so you probably want to do read Section 8.1 ("8.1 Embedding R under
Unix-alikes") of Writing R Extension carefully.  Best bet may still be to
avoid the segfault alltogether if you can.

Hope this helps, Dirk

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com



More information about the R-devel mailing list