14 gru
Resolved problem with revoIPC 1.0-3 and new g++
Few days ago I had a installation problem package revoIPC 1.0-3 and doSMP 1.0.1. When I was compiled revoIPC 1.0-3, compilator returned this error:
g++ -I/usr/local/lib64/R/include -I/usr/local/include -I . -fpic
-g -O2 -c interface.cc -o interface.o
In file included from ./boost/interprocess/detail/
from ./boost/interprocess/mapped_
from
./boost/interprocess/detail/
from boost/interprocess/managed_
from queue.h:17,
from interface.cc:3:
./boost/interprocess/detail/
‚m_value’ cannot be declared ‚mutable’ [-fpermissive]
make: *** [interface.o] Błąd 1
ERROR: compilation failed for package ‚revoIPC’
Rich Calaway from revolutionanalytics.com helped me quickly and sent solution. The patch with fix this problem is a:
„… go to src/boost/interprocess/detail/iterators.hpp and comment out lines 341-353”
Thanks for this advice we can compile revoIPC 1.0-3 and use it in with doSMP 1.0.1. Just one thinks, if we use doSMP 1.0.1 in new revoIPC 1.0-4 and we try execute this program:
rmSessions(all.names = TRUE)
w <- startWorkers(2)
registerDoSMP(w)
foreach(i=1:3) %dopar% sqrt(i)
R return this error:
> foreach(i=1:3) %dopar% sqrt(i) *** caught segfault ***
address 0x7fd0e562f58c, cause ‚memory not mapped’ Traceback:
1: .Call(„returnResult”, q, t$task, serialize(res, NULL))
2: ipcTaskReturnResult(taskq, taskchunk, resultchunk)
3: doSMP:::workerLoop(qname, rank, verbose, out)
aborting …
Rich Calaway helped me fixed this problem to. I don’t check it but if someone want to use revoIPC 1.0-4 must:
„… remove the PKG_CPPFLAGS=-DNDEBUG line from Makevars.in in the src directory.”
Good luck.