< prev index next >

src/os/linux/vm/os_linux.cpp

Print this page

        

*** 5783,5795 **** status = pthread_cond_signal(&_cond[_cur_index]); assert(status == 0, "invariant"); status = pthread_mutex_unlock(_mutex); assert(status == 0, "invariant"); } else { status = pthread_mutex_unlock(_mutex); assert(status == 0, "invariant"); ! status = pthread_cond_signal(&_cond[_cur_index]); assert(status == 0, "invariant"); } } else { pthread_mutex_unlock(_mutex); assert(status == 0, "invariant"); --- 5783,5797 ---- 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[index]); assert(status == 0, "invariant"); } } else { pthread_mutex_unlock(_mutex); assert(status == 0, "invariant");
< prev index next >