summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnuradio-runtime/lib/vmcircbuf.cc2
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc4
2 files changed, 4 insertions, 2 deletions
diff --git a/gnuradio-runtime/lib/vmcircbuf.cc b/gnuradio-runtime/lib/vmcircbuf.cc
index e4e1590205..315d409c5d 100644
--- a/gnuradio-runtime/lib/vmcircbuf.cc
+++ b/gnuradio-runtime/lib/vmcircbuf.cc
@@ -292,8 +292,6 @@ namespace gr {
{
bool ok = false;
- gr::thread::scoped_lock guard(s_vm_mutex);
-
std::vector<vmcircbuf_factory *> all = all_factories();
for(unsigned int i = 0; i < all.size (); i++)
diff --git a/gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc b/gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc
index 0d7e9b7d34..484b1a914e 100644
--- a/gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc
+++ b/gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc
@@ -46,6 +46,8 @@ namespace gr {
vmcircbuf_sysv_shm::vmcircbuf_sysv_shm(int size)
: gr::vmcircbuf(size)
{
+ gr::thread::scoped_lock guard(s_vm_mutex);
+
#if !defined(HAVE_SYS_SHM_H)
fprintf(stderr, "gr::vmcircbuf_sysv_shm: sysv shared memory is not available\n");
throw std::runtime_error("gr::vmcircbuf_sysv_shm");
@@ -150,6 +152,8 @@ namespace gr {
vmcircbuf_sysv_shm::~vmcircbuf_sysv_shm()
{
+ gr::thread::scoped_lock guard(s_vm_mutex);
+
#if defined(HAVE_SYS_SHM_H)
if(shmdt(d_base - gr::pagesize()) == -1
|| shmdt(d_base) == -1