< prev index next >

src/os/linux/vm/os_linux.cpp

Print this page

        

@@ -5783,13 +5783,15 @@
         status = pthread_cond_signal(&_cond[_cur_index]);
         assert(status == 0, "invariant");
         status = pthread_mutex_unlock(_mutex);
         assert(status == 0, "invariant");
       } else {
+        // must capture correct index before unlocking
+        int index = _cur_index;
         status = pthread_mutex_unlock(_mutex);
         assert(status == 0, "invariant");
-        status = pthread_cond_signal(&_cond[_cur_index]);
+        status = pthread_cond_signal(&_cond[index]);
         assert(status == 0, "invariant");
       }
     } else {
       pthread_mutex_unlock(_mutex);
       assert(status == 0, "invariant");
< prev index next >