[Lldb-commits] [lldb] r243091 - Handle old style S packet correctly
Hans Wennborg
hans at chromium.org
Wed Aug 5 13:20:17 PDT 2015
Ping?
On Wed, Jul 29, 2015 at 8:56 AM, Hans Wennborg <hans at chromium.org> wrote:
> Greg, I believe you're the code owner here. OK to merge?
>
> On Tue, Jul 28, 2015 at 9:05 PM, Bhushan Attarde
> <Bhushan.Attarde at imgtec.com> wrote:
>> Hi Hans,
>>
>> Could you please add this to the release branch?
>>
>> Thanks
>> Bhushan
>>
>> -----Original Message-----
>> From: lldb-commits-bounces at cs.uiuc.edu [mailto:lldb-commits-bounces at cs.uiuc.edu] On Behalf Of Bhushan Attarde
>> Sent: 24 July 2015 09:36
>> To: lldb-commits at 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 at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list