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/

utilities.hpp:29:0,
                from ./boost/interprocess/mapped_region.hpp:20,
                from
./boost/interprocess/detail/managed_open_or_create_impl.hpp:17,
                from boost/interprocess/managed_mapped_file.hpp:20,
                from queue.h:17,
                from interface.cc:3:
./boost/interprocess/detail/iterators.hpp:352:15: error: reference
‚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.