On Thu, Sep 6, 2012 at 11:43 PM, Dirk Eddelbuettel <e...@debian.org> wrote:
> > On 6 September 2012 at 21:24, Jiqiang Guo wrote: > | Dear List, > | > | In the middle of figure out another problem, I used function Module > twice, but > | then I got segfault. Is there any solution for this? For the time > being, I > | really need to call function Module more than once. > > a) I simply never combine Rcpp modules with inline. With a package, things > work. > b) In > > m <- Module("foo1", getDynLib(fx)) > m2 <- Module("foo1", getDynLib(fx)) > > are you by chance mistaking Module() [ ie the declaration ] with new() [ > ie the instantiation of an object ] ? > No. I am just trying to narrow down what causes the real problem I have. And I think now it is because I called Module a second time. Following Module call, I do have new .... Anyway, the above a) and b) do not explain and solve the problem I have. Thanks, Jiqiang > > Dirk > > > | Best, > | Jiqiang > | > | P.S. an example code and the dump of output. > | In addition, my sessionInfo() > | > | > sessionInfo() > | R version 2.15.1 (2012-06-22) > | Platform: x86_64-pc-linux-gnu (64-bit) > | > | locale: > | [1] LC_CTYPE=en_US.utf8 LC_NUMERIC=C > | [3] LC_TIME=en_US.utf8 LC_COLLATE=en_US.utf8 > | [5] LC_MONETARY=en_US.utf8 LC_MESSAGES=en_US.utf8 > | [7] LC_PAPER=C LC_NAME=C > | [9] LC_ADDRESS=C LC_TELEPHONE=C > | [11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C > | > | attached base packages: > | [1] stats graphics grDevices utils datasets methods base > | > | > | other attached packages: > | [1] inline_0.3.8 Rcpp_0.9.13 > | > | loaded via a namespace (and not attached): > | [1] tools_2.15.1 > | > | > | require("Rcpp") > | require("inline") > | > | inc <- ' > | class Foo { > | private: > | int x_; > | public: > | Foo(int x) : x_(x) { } > | void setx(int x) { x_ = x;} > | int getx() const { return x_;} > | }; > | > | RCPP_MODULE(foo1) { > | class_<Foo>("Foo") > | .constructor<int>() > | .method("setx", &Foo::setx) > | .method("getx", &Foo::getx) > | ; > | } > | ' > | fx <- cxxfunction(signature(), "", include = inc, plugin = "Rcpp", > verbose = ! > | TRUE) > | m <- Module("foo1", getDynLib(fx)) > | m2 <- Module("foo1", getDynLib(fx)) > | > | ====== > | > | > m <- Module("foo1", getDynLib(fx)) > | > m2 <- Module("foo1", getDynLib(fx)) > | > > | > f <- new(m$Foo, 1) > | > f2 <- new(m2$Foo, 1) > | > | *** caught segfault *** > | address 0x90, cause 'memory not mapped' > | > | Traceback: > | 1: .Call(symbol) > | 2: Module(module, mustStart = TRUE) > | 3: .getModulePointer(x) > | 4: m2$Foo > | 5: .getClassFromCache(Class, where) > | 6: getClass(Class, where = topenv(parent.frame())) > | 7: new(m2$Foo, 1) > | aborting ... > | > | > | > | ---------------------------------------------------------------------- > | _______________________________________________ > | Rcpp-devel mailing list > | Rcpp-devel@lists.r-forge.r-project.org > | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > -- > Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com >
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel