[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