teemperor added a reviewer: labath. teemperor added a subscriber: labath. teemperor added a comment.
Adding Pavel because he wrote the PrintAsync code. Also @labath: Can you tell me what variables/functionality the `m_output_mutex` in Editline.cpp is supposed to shield? I don't see any documentation for that. The `m_output_mutex` name suggests its related to console output, but we actually take the lock also when reading *input*. Especially in `EditLine::GetLine` we take a guard on the lock but then somehow unlock the guarded mutex from inside `Editline::GetCharacter` that we call afterwards (which completely breaks this patch): // This mutex is locked by our caller (GetLine). Unlock it while we read a // character (blocking operation), so we do not hold the mutex // indefinitely. This gives a chance for someone to interrupt us. After // Read returns, immediately lock the mutex again and check if we were // interrupted. m_output_mutex.unlock(); int read_count = m_input_connection.Read(&ch, 1, llvm::None, status, NULL); m_output_mutex.lock(); if (m_editor_status == EditorStatus::Interrupted) { while (read_count > 0 && status == lldb::eConnectionStatusSuccess) read_count = m_input_connection.Read(&ch, 1, llvm::None, status, NULL); lldbassert(status == lldb::eConnectionStatusInterrupted); return 0; } https://reviews.llvm.org/D48463 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits