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

Hans Wennborg hans at chromium.org
Wed Jul 29 08:56:30 PDT 2015


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