[Lldb-commits] [lldb] r243091 - Handle old style S packet correctly
Hans Wennborg via lldb-commits
lldb-commits at lists.llvm.org
Tue Aug 11 13:38:02 PDT 2015
Ping?
On Wed, Aug 5, 2015 at 1:20 PM, Hans Wennborg <hans at chromium.org> wrote:
> 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