--- old/src/os/linux/vm/os_linux.cpp 2015-08-11 01:30:18.512597422 -0400 +++ new/src/os/linux/vm/os_linux.cpp 2015-08-11 01:30:17.004510980 -0400 @@ -5785,9 +5785,11 @@ 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 {