Disabled local-llgs hijacking of state on startup; passed along signo to killed process.
authorChaoren Lin <chaorenl@google.com>
Tue, 3 Feb 2015 01:50:54 +0000 (01:50 +0000)
committerChaoren Lin <chaorenl@google.com>
Tue, 3 Feb 2015 01:50:54 +0000 (01:50 +0000)
It looks like Shawn's fix addresses what the initial hijacking was trying
to accomplish per conversations with Greg and Jim.  The hijacking was
causing several tests to hang (#61, #62, #63, #64, #67, possibly more).
These tests now just fail rather than hang with this modification.

llvm-svn: 227914

lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp
lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp

index 41dd060..0e8d5dd 100644 (file)
@@ -761,6 +761,7 @@ PlatformLinux::DebugProcess (ProcessLaunchInfo &launch_info,
 
     // Adjust launch for a hijacker.
     ListenerSP listener_sp;
+#if 0
     if (!launch_info.GetHijackListener ())
     {
         if (log)
@@ -770,6 +771,7 @@ PlatformLinux::DebugProcess (ProcessLaunchInfo &launch_info,
         launch_info.SetHijackListener (listener_sp);
         process_sp->HijackProcessEvents (listener_sp.get ());
     }
+#endif
 
     // Log file actions.
     if (log)
index da71e15..d6270ec 100644 (file)
@@ -2303,28 +2303,17 @@ NativeProcessLinux::MonitorSIGTRAP(const siginfo_t *info, lldb::pid_t pid)
                     is_main_thread ? "is main thread" : "not main thread");
         }
 
-        // We'll set the thread to exited later...
-//        if (thread_sp)
-//            reinterpret_cast<NativeThreadLinux*> (thread_sp.get ())->SetExited ();
-//        else
-//        {
-//            if (log)
-//                log->Printf ("NativeProcessLinux::%s() pid %" PRIu64 " failed to retrieve thread for tid %" PRIu64", cannot set thread state", __FUNCTION__, GetID (), pid);
-//        }
-
-        // FIXME: review if this is the spot, or the follow up, which tells us the real exit code.
-        // If it's this one, we need to track it or set it here.  Setting it here is not really in the
-        // right time flow though unless we skip the follow up.
         if (is_main_thread)
         {
             SetExitStatus (convert_pid_status_to_exit_type (data), convert_pid_status_to_return_code (data), nullptr, true);
         }
 
+        const int signo = static_cast<int> (data);
         m_coordinator_up->RequestThreadResume (pid,
                                                [=](lldb::tid_t tid_to_resume)
                                                {
                                                    reinterpret_cast<NativeThreadLinux*> (thread_sp.get ())->SetRunning ();
-                                                   Resume (tid_to_resume, LLDB_INVALID_SIGNAL_NUMBER);
+                                                   Resume (tid_to_resume, signo);
                                                },
                                                CoordinatorErrorHandler);