It seems we found a weird bug with boost interprocess, some internal problem on the scoped_lock is generating a deadlock.
A simple correct usage like
void foo() {
scoped_lock<t_mutex> lock(amutex);
.....
}
is producing the deadlock when running 100 concurrent processes
after changing to
void foo() {
amutex.lock();
.....
amutex.unlock();
}
the problem disappeared
the code on scoped_lock looks correct, and works just fine with a lower load, so, I guess this is something coming from the compiler, which is gcc 4.4.7 under linux