[Lldb-commits] [lldb] r243091 - Handle old style S packet correctly

Hans Wennborg via lldb-commits lldb-commits at lists.llvm.org
Tue Aug 11 14:04:39 PDT 2015


(cc'ing the new list address)

On Tue, Aug 11, 2015 at 2:03 PM, Hans Wennborg <hans at chromium.org> wrote:
> r244664.
>
> Thanks,
> Hans
>
> On Tue, Aug 11, 2015 at 1:59 PM, Greg Clayton <gclayton at apple.com> wrote:
>> Yep, OK to merge.
>>
>>> On 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