I am writing bindings to the C library (neural network simulator SNNS). DLL was produced with the command R CMD SHLIB [source with C-wrappers, callable from R with .C and all sources from the snns kernel] I used latest MinGW. The problem is. R crashes with the "segmentation violation". Tracing with the insight and with simple Rprintf's gave me that crash occurs on the call of the function deeply in the snns kernel. That is, R correctly calls C wrapper, it calls the kernel function from the so called "user interface" part, it calls another C function from the internals, and that one calls the third C function. And the segmentation fault occurs on the call of that function, it doesn't do anything, its arguments have correct values, and it works in the other situations, for example, when I run executables from the SNNS (either gui version of the simulator, or batch interpreter). Moreover, I don't think the reason in the incorrect arguments, since the called function doesn't do anything. Rprintf in the very beginning of its body doesn't work (I traced it in console mode of R). How could I trace, what happens? -- View this message in context: http://www.nabble.com/how-to-trace-what-crashes-R-tf3083985.html#a8570488 Sent from the R devel mailing list archive at Nabble.com.
On Wed, Jan 24, 2007 at 11:15:49AM -0800, Vladimir Eremeev wrote:> The problem is. R crashes with the "segmentation violation". > Tracing with the insight and with simple Rprintf's gave me that crash occurs > on the call of the function deeply in the snns kernel. > That is, R correctly calls C wrapper, it calls the kernel function from the > so called "user interface" part, it calls another C function from the > internals, and that one calls the third C function. > And the segmentation fault occurs on the call of that function, it doesn't > do anything, its arguments have correct values, and it works in the other > situations, for example, when I run executables from the SNNS (either gui > version of the simulator, or batch interpreter). > Moreover, I don't think the reason in the incorrect arguments, since the > called function doesn't do anything. > Rprintf in the very beginning of its body doesn't work (I traced it in > console mode of R). > > How could I trace, what happens?Compile snns with debugging support, compile R with debugging, start R as $ R -d gdb ## or ddd if you have it and use the debugger. There is a lot of useful information in the fine manual on 'R Extensions'. Dirk -- Hell, there are no rules here - we're trying to accomplish something. -- Thomas A. Edison
Vladimir Eremeev wrote:> > That is, R correctly calls C wrapper, > ... > its arguments have correct values >That was not the case. I forgot as.integer() in the .C call and one of the arguments was 0 instead of 1. Since that, indices in the array were calculated incorrectly, and the program tried reading prohibited memory address. -- View this message in context: http://www.nabble.com/how-to-trace-what-crashes-R-tf3083985.html#a8612674 Sent from the R devel mailing list archive at Nabble.com.