[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