On 8 March 2011 at 09:24, [email protected] 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 | [email protected] | http://dirk.eddelbuettel.com
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel