Index: include/lldb/lldb-enumerations.h
===================================================================
--- include/lldb/lldb-enumerations.h	(revision 170569)
+++ include/lldb/lldb-enumerations.h	(working copy)
@@ -177,7 +177,8 @@
         eStopReasonSignal,
         eStopReasonException,
         eStopReasonExec,        // Program was re-exec'ed
-        eStopReasonPlanComplete
+        eStopReasonPlanComplete,
+        eStopReasonLimbo
     } StopReason;
 
     //----------------------------------------------------------------------
Index: source/API/SBThread.cpp
===================================================================
--- source/API/SBThread.cpp	(revision 170569)
+++ source/API/SBThread.cpp	(working copy)
@@ -151,6 +151,7 @@
                 case eStopReasonTrace:
                 case eStopReasonExec:
                 case eStopReasonPlanComplete:
+                case eStopReasonLimbo:
                     // There is no data for these stop reasons.
                     return 0;
 
@@ -209,6 +210,7 @@
                 case eStopReasonTrace:
                 case eStopReasonExec:
                 case eStopReasonPlanComplete:
+                case eStopReasonLimbo:
                     // There is no data for these stop reasons.
                     return 0;
 
@@ -348,6 +350,13 @@
                         }
                         break;
 
+                    case eStopReasonLimbo:
+                        {
+                            char limbo_desc[] = "thread exited";
+                            stop_desc = limbo_desc;
+                            stop_desc_len = sizeof(limbo_desc);
+                        }
+                        break;
                     default:
                         break;
                     }
Index: source/Plugins/Process/POSIX/POSIXStopInfo.cpp
===================================================================
--- source/Plugins/Process/POSIX/POSIXStopInfo.cpp	(revision 170569)
+++ source/Plugins/Process/POSIX/POSIXStopInfo.cpp	(working copy)
@@ -21,7 +21,7 @@
 lldb::StopReason
 POSIXLimboStopInfo::GetStopReason() const
 {
-    return lldb::eStopReasonTrace;
+    return lldb::eStopReasonLimbo;
 }
 
 const char *
@@ -33,13 +33,13 @@
 bool
 POSIXLimboStopInfo::ShouldStop(Event *event_ptr)
 {
-    return true;
+    return false;
 }
 
 bool
 POSIXLimboStopInfo::ShouldNotify(Event *event_ptr)
 {
-    return true;
+    return false;
 }
 
 //===----------------------------------------------------------------------===//
Index: source/Target/Thread.cpp
===================================================================
--- source/Target/Thread.cpp	(revision 170569)
+++ source/Target/Thread.cpp	(working copy)
@@ -1591,6 +1591,7 @@
     case eStopReasonException:    return "exception";
     case eStopReasonExec:         return "exec";
     case eStopReasonPlanComplete: return "plan complete";
+    case eStopReasonLimbo:        return "thread exited";
     }
 
 
Index: source/Target/ThreadPlanBase.cpp
===================================================================
--- source/Target/ThreadPlanBase.cpp	(revision 170569)
+++ source/Target/ThreadPlanBase.cpp	(working copy)
@@ -146,7 +146,8 @@
                 log->Printf("Base plan discarding thread plans for thread tid = 0x%4.4" PRIx64 " (exec.)", m_thread.GetID());
             m_thread.DiscardThreadPlans(false);
             return true;
-            
+
+        case eStopReasonLimbo:
         case eStopReasonSignal:
             if (stop_info_sp->ShouldStop(event_ptr))
             {
Index: source/Target/ThreadPlanStepInRange.cpp
===================================================================
--- source/Target/ThreadPlanStepInRange.cpp	(revision 170569)
+++ source/Target/ThreadPlanStepInRange.cpp	(working copy)
@@ -384,6 +384,7 @@
         case eStopReasonSignal:
         case eStopReasonException:
         case eStopReasonExec:
+        case eStopReasonLimbo:
             {
                 LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP));
                 if (log)
Index: source/Target/ThreadPlanStepOut.cpp
===================================================================
--- source/Target/ThreadPlanStepOut.cpp	(revision 170569)
+++ source/Target/ThreadPlanStepOut.cpp	(working copy)
@@ -252,6 +252,7 @@
         case eStopReasonSignal:
         case eStopReasonException:
         case eStopReasonExec:
+        case eStopReasonLimbo:
             return false;
 
         default:
Index: source/Target/ThreadPlanStepOverRange.cpp
===================================================================
--- source/Target/ThreadPlanStepOverRange.cpp	(revision 170569)
+++ source/Target/ThreadPlanStepOverRange.cpp	(working copy)
@@ -320,6 +320,7 @@
         case eStopReasonSignal:
         case eStopReasonException:
         case eStopReasonExec:
+        case eStopReasonLimbo:
         default:
             if (log)
                 log->PutCString ("ThreadPlanStepInRange got asked if it explains the stop for some reason other than step.");
Index: tools/driver/Driver.cpp
===================================================================
--- tools/driver/Driver.cpp	(revision 170569)
+++ tools/driver/Driver.cpp	(working copy)
@@ -807,6 +807,7 @@
                 case eStopReasonSignal:
                 case eStopReasonException:
                 case eStopReasonExec:
+                case eStopReasonLimbo:
                     if (!other_thread.IsValid())
                         other_thread = thread;
                     break;
