046df32729
1) The Entry's state was published after making the record avaiable, so a thread flushing the records could see an unitialized record. 2) data_ and write_pointer_ could become out of sync. write_pointer_ could be indexing into another buffer than what data_ was pointing to. 3) GetEntry could get a nullptr free_buffer_ because multiple threads could acquire the work_mutex_ before the work_thread_ could wake up, or between allocate_worker's loop iterations. Change-Id: I6f0a015557888eeeaa75a8bce7fde8de276d11dd