From gianluca.mastrantonio at yahoo.it  Sat Nov 10 00:05:24 2012
From: gianluca.mastrantonio at yahoo.it (gianluca mastrantonio)
Date: Sat, 10 Nov 2012 00:05:24 +0100
Subject: [Rd] Crash - cause 'memory not mapped'
In-Reply-To: <CA+hbrhX8xFdsK0D2fvOy-=+8=6-wWM4gUhqomSEKV0xkTA=Bng@mail.gmail.com>
References: <1352500311165-4649141.post@n4.nabble.com>
	<CA+hbrhX8xFdsK0D2fvOy-=+8=6-wWM4gUhqomSEKV0xkTA=Bng@mail.gmail.com>
Message-ID: <C82D3210-6C35-4F60-9B18-415838FEB365@yahoo.it>

the error "memory non mapped" happen also if i use
void FiltroGaus(SEXP size1_r, SEXP size2_r, SEXP sigma_r) 
instead
SEXP FiltroGaus(SEXP size1_r, SEXP size2_r, SEXP sigma_r) {


Il giorno 09/nov/2012, alle ore 23:58, Peter Langfelder <peter.langfelder at gmail.com> ha scritto:

> I'm not an expert, but from what I know you should certainly use the
> .Call interface when you define a function as you did. The problem is
> that your function must return a value (of type SEXP) which it does
> not. If you don't return a value, all bets are off as to what will
> happen, and if the internal R code uses a pointer to the result of
> your function, you can easily get memory map errors.
> 
> HTH,
> 
> Peter
> 
> On Fri, Nov 9, 2012 at 2:31 PM, niandra <gianluca.mastrantonio at yahoo.it> wrote:
>> i'm using the following  c++ code
>> using namespace std;
>> #include <iostream>
>> #include <stdio.h>
>> #include <opencv/cv.h>
>> #include <opencv2/core/core.hpp>
>> #include <opencv2/highgui/highgui.hpp>
>> #include <opencv/highgui.h>
>> #include <opencv/cv.h>
>> #include <R.h>
>> #include <Rinternals.h>
>> #include <Rmath.h>
>> 
>> extern "C" {
>> SEXP FiltroGaus(SEXP size1_r, SEXP size2_r, SEXP sigma_r) {
>> 
>>    int size1 = INTEGER(size1_r)[0];
>>    int size2 = INTEGER(size2_r)[0];
>>    double sigma = REAL(sigma_r)[0];
>> 
>> }
>> }
>> 
>> The compilation go without errors but when in R i type
>> .C("FiltroGaus",3,3,2)
>> the message is:  Errore: INTEGER() can only be applied to a 'integer', not a
>> 'NULL'
>> if i type .C("FiltroGaus",as.integer(3),as.integer(3),as.double(2))
>> the message is Errore: INTEGER() can only be applied to a 'integer', not a
>> 'closure'
>> 
>> while if i type .Call("FiltroGaus",as.integer(3),as.integer(3),as.double(2))
>> the message is
>> NULL
>> 
>> *** caught segfault ***
>> address 0x200000be, 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
>> 
>> 
>> I now, i need to study and i know also for sure the answer is in some book
>> (i have  lot). I swear i read a lot and i'm still reading, but i really need
>> help :)
>> 
>> 
>> 
>> --
>> View this message in context: http://r.789695.n4.nabble.com/Crash-cause-memory-not-mapped-tp4649141.html
>> Sent from the R devel mailing list archive at Nabble.com.
>> 
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] Crash - cause 'memory not mapped'
gianluca mastrantonio