Greg, I believe you're the code owner here. OK to merge?
On Tue, Jul 28, 2015 at 9:05 PM, Bhushan Attarde <bhushan.atta...@imgtec.com> wrote: > Hi Hans, > > Could you please add this to the release branch? > > Thanks > Bhushan > > -----Original Message----- > From: lldb-commits-boun...@cs.uiuc.edu > [mailto:lldb-commits-boun...@cs.uiuc.edu] On Behalf Of Bhushan Attarde > Sent: 24 July 2015 09:36 > To: lldb-commits@cs.uiuc.edu > Subject: [Lldb-commits] [lldb] r243091 - Handle old style S packet correctly > > Author: bhushan.attarde > Date: Thu Jul 23 23:06:20 2015 > New Revision: 243091 > > URL: http://llvm.org/viewvc/llvm-project?rev=243091&view=rev > Log: > Handle old style S packet correctly > > SUMMARY: > This patch fixes couple of issues: > 1. A thread tries to lock a mutex which is already locked. > 2. Updating a thread list before the stop packet is parsed so that it can > get a valid thread id and allows to set the stop info correctly. > > Reviewers: clayborg > Subscribers: mohit.bhakkad, sagar, jaydeep, lldb-commits > Differential Revision: http://reviews.llvm.org/D11449 > > Modified: > lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp > > Modified: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp?rev=243091&r1=243090&r2=243091&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp > (original) > +++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp > +++ Thu Jul 23 23:06:20 2015 > @@ -371,7 +371,7 @@ ProcessGDBRemote::ProcessGDBRemote(Targe > m_flags (0), > m_gdb_comm (), > m_debugserver_pid (LLDB_INVALID_PROCESS_ID), > - m_last_stop_packet_mutex (Mutex::eMutexTypeNormal), > + m_last_stop_packet_mutex (Mutex::eMutexTypeRecursive), > m_register_info (), > m_async_broadcaster (NULL, "lldb.process.gdb-remote.async-broadcaster"), > m_async_thread_state_mutex(Mutex::eMutexTypeRecursive), > @@ -2485,6 +2485,18 @@ ProcessGDBRemote::SetThreadStopInfo (Str > } > } > > + if (tid == LLDB_INVALID_THREAD_ID) > + { > + // A thread id may be invalid if the response is old style > 'S' packet which does not provide the > + // thread information. So update the thread list and choose > the first one. > + UpdateThreadIDList (); > + > + if (!m_thread_ids.empty ()) > + { > + tid = m_thread_ids.front (); > + } > + } > + > ThreadSP thread_sp = SetThreadStopInfo (tid, > expedited_register_map, > signo, @@ -2499,19 > +2511,6 @@ ProcessGDBRemote::SetThreadStopInfo (Str > queue_kind, > queue_serial); > > - // If the response is old style 'S' packet which does not > provide us with thread information > - // then update the thread list and choose the first one. > - if (!thread_sp) > - { > - UpdateThreadIDList (); > - > - if (!m_thread_ids.empty ()) > - { > - Mutex::Locker locker (m_thread_list_real.GetMutex ()); > - thread_sp = m_thread_list_real.FindThreadByProtocolID > (m_thread_ids.front (), false); > - } > - } > - > return eStateStopped; > } > break; > > > _______________________________________________ > lldb-commits mailing list > lldb-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list lldb-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits