Skip to content

segfault debugging

2 messages · Donatella Quagli, Duncan Murdoch

#
Hello everybody,

I have written a script with two inline cfunctions. The script crashes from time to time with:
? ?*** caught segfault ***
? address 0x10, cause 'memory not mapped'

The crashs happen within R code after the cfunctions were executed. Nevertheless I think
that the pointers in my cfunctions are not used correctly.

I tried to find some examples for debugging tools. I found something like "R -d gdb". But I
could not find an example how to use it with #!/usr/bin/Rscript. And I cannot source the script
within a running R session because I must run it with some args.

Can anybody tell me as a non nerd step by step what I can do to locate the problem? Can
you recommend tools? If so how are they used with Rscript?

Many many thanks in advance
Donatella
#
On 30/11/2012 12:02 PM, Donatella Quagli wrote:
This isn't easy, but what I would do is add something to your script to 
get it to pause (or to wait for some file to be created, or some other 
signal), then figure out the process number, and tell gdb to connect to 
it after it has already started.

The ps command will list all the running processes, for some definition 
of "all".  Then

gdb --pid=PID

will connect to the process with id PID.  I believe it will interrupt 
the process at that point, but you can restart it, send the signal to it 
to get out of its loop), and hopefully see the segfault in action.

Duncan Murdoch