[Lldb-commits] [PATCH] D54084: [LLDB] Fix FreeBSD build

2018-11-04 Thread David CARLIER via Phabricator via lldb-commits
devnexen created this revision.
devnexen added reviewers: JDevlieghere, tatyana-krasnukha.
devnexen created this object with visibility "All Users".
Herald added subscribers: lldb-commits, emaste.

ResolvePath is no longer into FileSpec class


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D54084

Files:
  source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp


Index: source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
===
--- source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
+++ source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
@@ -375,8 +375,7 @@
 
   FileSpec working_dir = launch_info.GetWorkingDirectory();
   namespace fs = llvm::sys::fs;
-  if (working_dir && (!working_dir.ResolvePath() ||
-  !fs::is_directory(working_dir.GetPath( {
+  if (working_dir && !fs::is_directory(working_dir.GetPath())) {
 error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
 return error;


Index: source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
===
--- source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
+++ source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
@@ -375,8 +375,7 @@
 
   FileSpec working_dir = launch_info.GetWorkingDirectory();
   namespace fs = llvm::sys::fs;
-  if (working_dir && (!working_dir.ResolvePath() ||
-  !fs::is_directory(working_dir.GetPath( {
+  if (working_dir && !fs::is_directory(working_dir.GetPath())) {
 error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
 return error;
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D54084: [LLDB] Fix FreeBSD/Darwin build

2018-11-04 Thread David CARLIER via Phabricator via lldb-commits
devnexen updated this revision to Diff 172535.
devnexen retitled this revision from "[LLDB] Fix FreeBSD build" to "[LLDB] Fix 
FreeBSD/Darwin build".

https://reviews.llvm.org/D54084

Files:
  source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
  source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp


Index: source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
===
--- source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
+++ source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
@@ -375,11 +375,13 @@
 
   FileSpec working_dir = launch_info.GetWorkingDirectory();
   namespace fs = llvm::sys::fs;
-  if (working_dir && (!working_dir.ResolvePath() ||
-  !fs::is_directory(working_dir.GetPath( {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileSystem::Instance().Resolve(working_dir);
+if (!fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   SetPrivateState(eStateLaunching);
Index: source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
===
--- source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
+++ source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
@@ -63,12 +63,13 @@
 
   // Verify the working directory is valid if one was specified.
   FileSpec working_dir(launch_info.GetWorkingDirectory());
-  if (working_dir &&
-  (!working_dir.ResolvePath() ||
-   !llvm::sys::fs::is_directory(working_dir.GetPath())) {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileInstance::Instance().Resolve(working_dir);
+if (!llvm::sys::fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   // Launch the inferior.


Index: source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
===
--- source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
+++ source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
@@ -375,11 +375,13 @@
 
   FileSpec working_dir = launch_info.GetWorkingDirectory();
   namespace fs = llvm::sys::fs;
-  if (working_dir && (!working_dir.ResolvePath() ||
-  !fs::is_directory(working_dir.GetPath( {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileSystem::Instance().Resolve(working_dir);
+if (!fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   SetPrivateState(eStateLaunching);
Index: source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
===
--- source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
+++ source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
@@ -63,12 +63,13 @@
 
   // Verify the working directory is valid if one was specified.
   FileSpec working_dir(launch_info.GetWorkingDirectory());
-  if (working_dir &&
-  (!working_dir.ResolvePath() ||
-   !llvm::sys::fs::is_directory(working_dir.GetPath())) {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileInstance::Instance().Resolve(working_dir);
+if (!llvm::sys::fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   // Launch the inferior.
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D54084: [LLDB] Fix FreeBSD/Darwin build

2018-11-04 Thread David CARLIER via Phabricator via lldb-commits
devnexen added a comment.

Can't test under Darwin but reproduced similar changes.


https://reviews.llvm.org/D54084



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D54084: [LLDB] Fix FreeBSD/Darwin build

2018-11-04 Thread David CARLIER via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rLLDB346109: [LLDB] Fix FreeBSD/Darwin build (authored by 
devnexen, committed by ).

Repository:
  rLLDB LLDB

https://reviews.llvm.org/D54084

Files:
  source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
  source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp


Index: source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
===
--- source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
+++ source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
@@ -63,12 +63,13 @@
 
   // Verify the working directory is valid if one was specified.
   FileSpec working_dir(launch_info.GetWorkingDirectory());
-  if (working_dir &&
-  (!working_dir.ResolvePath() ||
-   !llvm::sys::fs::is_directory(working_dir.GetPath())) {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileInstance::Instance().Resolve(working_dir);
+if (!llvm::sys::fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   // Launch the inferior.
Index: source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
===
--- source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
+++ source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
@@ -375,11 +375,13 @@
 
   FileSpec working_dir = launch_info.GetWorkingDirectory();
   namespace fs = llvm::sys::fs;
-  if (working_dir && (!working_dir.ResolvePath() ||
-  !fs::is_directory(working_dir.GetPath( {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileSystem::Instance().Resolve(working_dir);
+if (!fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   SetPrivateState(eStateLaunching);


Index: source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
===
--- source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
+++ source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
@@ -63,12 +63,13 @@
 
   // Verify the working directory is valid if one was specified.
   FileSpec working_dir(launch_info.GetWorkingDirectory());
-  if (working_dir &&
-  (!working_dir.ResolvePath() ||
-   !llvm::sys::fs::is_directory(working_dir.GetPath())) {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileInstance::Instance().Resolve(working_dir);
+if (!llvm::sys::fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   // Launch the inferior.
Index: source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
===
--- source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
+++ source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
@@ -375,11 +375,13 @@
 
   FileSpec working_dir = launch_info.GetWorkingDirectory();
   namespace fs = llvm::sys::fs;
-  if (working_dir && (!working_dir.ResolvePath() ||
-  !fs::is_directory(working_dir.GetPath( {
-error.SetErrorStringWithFormat("No such file or directory: %s",
+  if (working_dir) {
+FileSystem::Instance().Resolve(working_dir);
+if (!fs::is_directory(working_dir.GetPath())) {
+  error.SetErrorStringWithFormat("No such file or directory: %s",
working_dir.GetCString());
-return error;
+  return error;
+}
   }
 
   SetPrivateState(eStateLaunching);
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D57506: [LLDB] FreeBSD suppress compilation warning

2019-01-31 Thread David CARLIER via Phabricator via lldb-commits
devnexen created this revision.
devnexen added a reviewer: labath.
devnexen created this object with visibility "All Users".
Herald added subscribers: lldb-commits, emaste.

Repository:
  rLLDB LLDB

https://reviews.llvm.org/D57506

Files:
  source/Plugins/Process/FreeBSD/ProcessMonitor.cpp


Index: source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -167,7 +167,7 @@
 
   pi_desc.piod_op = PIOD_WRITE_D;
   pi_desc.piod_offs = (void *)vm_addr;
-  pi_desc.piod_addr = (void *)buf;
+  pi_desc.piod_addr = const_cast(buf);
   pi_desc.piod_len = size;
 
   if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0) {


Index: source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -167,7 +167,7 @@
 
   pi_desc.piod_op = PIOD_WRITE_D;
   pi_desc.piod_offs = (void *)vm_addr;
-  pi_desc.piod_addr = (void *)buf;
+  pi_desc.piod_addr = const_cast(buf);
   pi_desc.piod_len = size;
 
   if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0) {
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D57506: [LLDB] FreeBSD suppress compilation warning

2019-01-31 Thread David CARLIER via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL352744: [LLDB] FreeBSD suppress compilation warning 
(authored by devnexen, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D57506?vs=184480&id=184482#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D57506/new/

https://reviews.llvm.org/D57506

Files:
  lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp


Index: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -167,7 +167,7 @@
 
   pi_desc.piod_op = PIOD_WRITE_D;
   pi_desc.piod_offs = (void *)vm_addr;
-  pi_desc.piod_addr = (void *)buf;
+  pi_desc.piod_addr = const_cast(buf);
   pi_desc.piod_len = size;
 
   if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0) {


Index: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -167,7 +167,7 @@
 
   pi_desc.piod_op = PIOD_WRITE_D;
   pi_desc.piod_offs = (void *)vm_addr;
-  pi_desc.piod_addr = (void *)buf;
+  pi_desc.piod_addr = const_cast(buf);
   pi_desc.piod_len = size;
 
   if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0) {
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68762: [LLDB] Fix when building with strict LLVM assertion checking on FreeBSD

2019-10-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen created this revision.
devnexen added reviewers: dim, jbeich.
devnexen created this object with visibility "All Users".
Herald added subscribers: lldb-commits, JDevlieghere, emaste.
Herald added a project: LLDB.
devnexen added a comment.

With this I do not get segfault anymore. @dim I just looked up the patch on 
FreeBSD, if this approach is preferred, I ll go along.


- For reference https://reviews.llvm.org/rL365761
- Plan is to backport to 9.x version


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D68762

Files:
  lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp


Index: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -730,10 +730,12 @@
   }
 
   // Finally, start monitoring the child process for change in state.
+  if (m_monitor_thread)
+m_monitor_thread->Reset();
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread->IsJoinable()) {
+  if (m_monitor_thread && !m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process launch failed.");
 return;
@@ -771,7 +773,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread->IsJoinable()) {
+  if (m_monitor_thread && !m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process attach failed.");
 return;
@@ -784,9 +786,11 @@
 void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread->IsJoinable())
+  if (m_operation_thread && m_operation_thread->IsJoinable())
 return;
 
+  if (m_operation_thread)
+m_operation_thread->Reset();
   m_operation_thread =
   ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args);
   if (!m_operation_thread)


Index: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -730,10 +730,12 @@
   }
 
   // Finally, start monitoring the child process for change in state.
+  if (m_monitor_thread)
+m_monitor_thread->Reset();
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread->IsJoinable()) {
+  if (m_monitor_thread && !m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process launch failed.");
 return;
@@ -771,7 +773,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread->IsJoinable()) {
+  if (m_monitor_thread && !m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process attach failed.");
 return;
@@ -784,9 +786,11 @@
 void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread->IsJoinable())
+  if (m_operation_thread && m_operation_thread->IsJoinable())
 return;
 
+  if (m_operation_thread)
+m_operation_thread->Reset();
   m_operation_thread =
   ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args);
   if (!m_operation_thread)
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68762: [LLDB] Fix when building with strict LLVM assertion checking on FreeBSD

2019-10-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen added a comment.

With this I do not get segfault anymore. @dim I just looked up the patch on 
FreeBSD, if this approach is preferred, I ll go along.


Repository:
  rLLDB LLDB

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68762/new/

https://reviews.llvm.org/D68762



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68762: [LLDB] Fix when building with strict LLVM assertion checking on FreeBSD

2019-10-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen updated this revision to Diff 224256.

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68762/new/

https://reviews.llvm.org/D68762

Files:
  lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp


Index: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -730,10 +730,12 @@
   }
 
   // Finally, start monitoring the child process for change in state.
+  if (m_monitor_thread)
+m_monitor_thread->Reset();
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread->IsJoinable()) {
+  if (m_monitor_thread && !m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process launch failed.");
 return;
@@ -771,7 +773,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread->IsJoinable()) {
+  if (m_monitor_thread && !m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process attach failed.");
 return;
@@ -784,9 +786,11 @@
 void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread->IsJoinable())
+  if (m_operation_thread && m_operation_thread->IsJoinable())
 return;
 
+  if (m_operation_thread)
+m_operation_thread->Reset();
   m_operation_thread =
   ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args);
   if (!m_operation_thread)
@@ -1412,7 +1416,7 @@
 bool ProcessMonitor::WaitForInitialTIDStop(lldb::tid_t tid) { return true; }
 
 void ProcessMonitor::StopOpThread() {
-  if (!m_operation_thread->IsJoinable())
+  if (m_operation && !m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread->Cancel();


Index: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -730,10 +730,12 @@
   }
 
   // Finally, start monitoring the child process for change in state.
+  if (m_monitor_thread)
+m_monitor_thread->Reset();
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread->IsJoinable()) {
+  if (m_monitor_thread && !m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process launch failed.");
 return;
@@ -771,7 +773,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread->IsJoinable()) {
+  if (m_monitor_thread && !m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process attach failed.");
 return;
@@ -784,9 +786,11 @@
 void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread->IsJoinable())
+  if (m_operation_thread && m_operation_thread->IsJoinable())
 return;
 
+  if (m_operation_thread)
+m_operation_thread->Reset();
   m_operation_thread =
   ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args);
   if (!m_operation_thread)
@@ -1412,7 +1416,7 @@
 bool ProcessMonitor::WaitForInitialTIDStop(lldb::tid_t tid) { return true; }
 
 void ProcessMonitor::StopOpThread() {
-  if (!m_operation_thread->IsJoinable())
+  if (m_operation && !m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread->Cancel();
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68762: [LLDB] Fix when building with strict LLVM assertion checking on FreeBSD

2019-10-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen abandoned this revision.
devnexen added a comment.

Just realised there was an existing PR addressing it.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68762/new/

https://reviews.llvm.org/D68762



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68723: Fix process launch failure on FreeBSD after r365761

2019-10-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen accepted this revision.
devnexen added a comment.
This revision is now accepted and ready to land.

LGTM otherwise.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68723/new/

https://reviews.llvm.org/D68723



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68723: Fix process launch failure on FreeBSD after r365761

2019-10-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen added inline comments.



Comment at: source/Plugins/Process/FreeBSD/ProcessMonitor.cpp:733
   // Finally, start monitoring the child process for change in state.
-  m_monitor_thread = Host::StartMonitoringChildProcess(
+  auto monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),

nit: Would prefer obvious typing but can go along with it, just a detail.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68723/new/

https://reviews.llvm.org/D68723



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68723: Fix process launch failure on FreeBSD after r365761

2019-10-10 Thread David CARLIER via Phabricator via lldb-commits
devnexen added a comment.

In D68723#1703098 , @MaskRay wrote:

> In D68723#1703051 , @devnexen wrote:
>
> > LGTM otherwise.
>
>
> I don't think this change should be reverted. It can just be repaired by 
> adding some `(void)!xxx;`




In D68723#1703098 , @MaskRay wrote:

> In D68723#1703051 , @devnexen wrote:
>
> > LGTM otherwise.
>
>
> I don't think this change should be reverted. It can just be repaired by 
> adding some `(void)!xxx;`


I would prefer this approach indeed but either way I m in that s a real issue 
at the moment since LLVM runtime check is on in the FreeBSD's system.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68723/new/

https://reviews.llvm.org/D68723



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68723: Fix process launch failure on FreeBSD after r365761

2019-10-10 Thread David CARLIER via Phabricator via lldb-commits
devnexen added a comment.

@dim I LGTMed this but would it a real issue for you to take on a less 
disruptive approach proposed by MaskRay ?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68723/new/

https://reviews.llvm.org/D68723



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D68723: Fix process launch failure on FreeBSD after r365761

2019-10-10 Thread David CARLIER via Phabricator via lldb-commits
devnexen added a comment.

In D68723#1703379 , @MaskRay wrote:

> In D68723#1703322 , @devnexen wrote:
>
> > @dim I LGTMed this but would it a real issue for you to take on a less 
> > disruptive approach proposed by MaskRay ?
>
>
> I think we should do what @labath suggested (changing Expected to Optional) 
> if that is not very difficult.


Good point, I missed it. Should be alright to.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68723/new/

https://reviews.llvm.org/D68723



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D63187: [LLDB] Fix FreeBSD build

2019-06-12 Thread David CARLIER via Phabricator via lldb-commits
devnexen created this revision.
devnexen added reviewers: aadsm, MaskRay.
devnexen created this object with visibility "All Users".
Herald added subscribers: lldb-commits, emaste.
Herald added a project: LLDB.

The auxiliary vector method had wrong signature.


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D63187

Files:
  source/Plugins/Process/FreeBSD/ProcessFreeBSD.h


Index: source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
===
--- source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
+++ source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
@@ -127,7 +127,7 @@
   size_t PutSTDIN(const char *buf, size_t len,
   lldb_private::Status &error) override;
 
-  const lldb_private::DataExtractor GetAuxvData() override;
+  lldb_private::DataExtractor GetAuxvData() override;
 
   // ProcessFreeBSD internal API.
 


Index: source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
===
--- source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
+++ source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
@@ -127,7 +127,7 @@
   size_t PutSTDIN(const char *buf, size_t len,
   lldb_private::Status &error) override;
 
-  const lldb_private::DataExtractor GetAuxvData() override;
+  lldb_private::DataExtractor GetAuxvData() override;
 
   // ProcessFreeBSD internal API.
 
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D63187: [LLDB] Fix FreeBSD build

2019-06-12 Thread David CARLIER via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL363135: [LLDB] Fix FreeBSD build (authored by devnexen, 
committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D63187?vs=204231&id=204236#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D63187/new/

https://reviews.llvm.org/D63187

Files:
  lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h


Index: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
===
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
@@ -127,7 +127,7 @@
   size_t PutSTDIN(const char *buf, size_t len,
   lldb_private::Status &error) override;
 
-  const lldb_private::DataExtractor GetAuxvData() override;
+  lldb_private::DataExtractor GetAuxvData() override;
 
   // ProcessFreeBSD internal API.
 


Index: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
===
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
@@ -127,7 +127,7 @@
   size_t PutSTDIN(const char *buf, size_t len,
   lldb_private::Status &error) override;
 
-  const lldb_private::DataExtractor GetAuxvData() override;
+  lldb_private::DataExtractor GetAuxvData() override;
 
   // ProcessFreeBSD internal API.
 
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D64398: [LLDB] Fix FreeBSD build

2019-07-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen created this revision.
devnexen added reviewers: mgorny, MaskRay.
devnexen created this object with visibility "All Users".
Herald added subscribers: lldb-commits, jfb, emaste.
Herald added a project: LLDB.

Repository:
  rLLDB LLDB

https://reviews.llvm.org/D64398

Files:
  lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
  lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h

Index: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h
===
--- lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h
+++ lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h
@@ -183,8 +183,8 @@
 private:
   ProcessFreeBSD *m_process;
 
-  lldb_private::HostThread m_operation_thread;
-  lldb_private::HostThread m_monitor_thread;
+  llvm::Expected m_operation_thread;
+  llvm::Expected m_monitor_thread;
   lldb::pid_t m_pid;
 
   int m_terminal_fd;
Index: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -708,7 +708,7 @@
 const lldb_private::ProcessLaunchInfo & /* launch_info */,
 lldb_private::Status &error)
 : m_process(static_cast(process)),
-  m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) {
+  m_operation_thread(nullptr), m_monitor_thread(nullptr), m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) {
   using namespace std::placeholders;
 
   std::unique_ptr args(
@@ -738,7 +738,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread.IsJoinable()) {
+  if (!m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process launch failed.");
 return;
@@ -747,8 +747,8 @@
 
 ProcessMonitor::ProcessMonitor(ProcessFreeBSD *process, lldb::pid_t pid,
lldb_private::Status &error)
-: m_process(static_cast(process)), m_pid(pid),
-  m_terminal_fd(-1), m_operation(0) {
+: m_process(static_cast(process)),
+  m_operation_thread(nullptr), m_monitor_thread(nullptr), m_pid(pid), m_terminal_fd(-1), m_operation(0) {
   using namespace std::placeholders;
 
   sem_init(&m_operation_pending, 0, 0);
@@ -776,7 +776,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread.IsJoinable()) {
+  if (!m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process attach failed.");
 return;
@@ -789,11 +789,15 @@
 void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread.IsJoinable())
+  if (m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread =
-  ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args, &error);
+  ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args);
+  if (!m_operation_thread) {
+ Status e("Start launch thread failed");
+ error = e;
+  }
 }
 
 void *ProcessMonitor::LaunchOpThread(void *arg) {
@@ -955,11 +959,16 @@
  lldb_private::Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread.IsJoinable())
+  if (m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread =
-  ThreadLauncher::LaunchThread(g_thread_name, AttachOpThread, args, &error);
+  ThreadLauncher::LaunchThread(g_thread_name, AttachOpThread, args);
+
+  if (!m_operation_thread) {
+  	Status e("Start attach thread failed");
+	error = e;
+  }
 }
 
 void *ProcessMonitor::AttachOpThread(void *arg) {
@@ -1379,10 +1388,10 @@
 }
 
 void ProcessMonitor::StopMonitoringChildProcess() {
-  if (m_monitor_thread.IsJoinable()) {
-m_monitor_thread.Cancel();
-m_monitor_thread.Join(nullptr);
-m_monitor_thread.Reset();
+  if (m_monitor_thread->IsJoinable()) {
+m_monitor_thread->Cancel();
+m_monitor_thread->Join(nullptr);
+m_monitor_thread->Reset();
   }
 }
 
@@ -1417,10 +1426,10 @@
 bool ProcessMonitor::WaitForInitialTIDStop(lldb::tid_t tid) { return true; }
 
 void ProcessMonitor::StopOpThread() {
-  if (!m_operation_thread.IsJoinable())
+  if (!m_operation_thread->IsJoinable())
 return;
 
-  m_operation_thread.Cancel();
-  m_operation_thread.Join(nullptr);
-  m_operation_thread.Reset();
+  m_operation_thread->Cancel();
+  m_operation_thread->Join(nullptr);
+  m_operation_thread->Reset();
 }
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D64398: [LLDB] Fix FreeBSD build

2019-07-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen marked an inline comment as done.
devnexen added inline comments.



Comment at: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp:798
+  if (!m_operation_thread) {
+ Status e("Start launch thread failed");
+ error = e;

MaskRay wrote:
> See D64163/r365226
Very good point !


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64398/new/

https://reviews.llvm.org/D64398



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D64398: [LLDB] Fix FreeBSD build

2019-07-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen updated this revision to Diff 208649.

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64398/new/

https://reviews.llvm.org/D64398

Files:
  lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
  lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h

Index: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h
===
--- lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h
+++ lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.h
@@ -183,8 +183,8 @@
 private:
   ProcessFreeBSD *m_process;
 
-  lldb_private::HostThread m_operation_thread;
-  lldb_private::HostThread m_monitor_thread;
+  llvm::Expected m_operation_thread;
+  llvm::Expected m_monitor_thread;
   lldb::pid_t m_pid;
 
   int m_terminal_fd;
Index: lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -708,7 +708,7 @@
 const lldb_private::ProcessLaunchInfo & /* launch_info */,
 lldb_private::Status &error)
 : m_process(static_cast(process)),
-  m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) {
+  m_operation_thread(nullptr), m_monitor_thread(nullptr), m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) {
   using namespace std::placeholders;
 
   std::unique_ptr args(
@@ -738,7 +738,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread.IsJoinable()) {
+  if (!m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process launch failed.");
 return;
@@ -747,8 +747,8 @@
 
 ProcessMonitor::ProcessMonitor(ProcessFreeBSD *process, lldb::pid_t pid,
lldb_private::Status &error)
-: m_process(static_cast(process)), m_pid(pid),
-  m_terminal_fd(-1), m_operation(0) {
+: m_process(static_cast(process)),
+  m_operation_thread(nullptr), m_monitor_thread(nullptr), m_pid(pid), m_terminal_fd(-1), m_operation(0) {
   using namespace std::placeholders;
 
   sem_init(&m_operation_pending, 0, 0);
@@ -776,7 +776,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread.IsJoinable()) {
+  if (!m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process attach failed.");
 return;
@@ -789,11 +789,13 @@
 void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread.IsJoinable())
+  if (m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread =
-  ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args, &error);
+  ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args);
+  if (!m_operation_thread)
+ error = m_operation_thread.takeError();
 }
 
 void *ProcessMonitor::LaunchOpThread(void *arg) {
@@ -955,11 +957,14 @@
  lldb_private::Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread.IsJoinable())
+  if (m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread =
-  ThreadLauncher::LaunchThread(g_thread_name, AttachOpThread, args, &error);
+  ThreadLauncher::LaunchThread(g_thread_name, AttachOpThread, args);
+
+  if (!m_operation_thread)
+	error = m_operation_thread.takeError();
 }
 
 void *ProcessMonitor::AttachOpThread(void *arg) {
@@ -1379,10 +1384,10 @@
 }
 
 void ProcessMonitor::StopMonitoringChildProcess() {
-  if (m_monitor_thread.IsJoinable()) {
-m_monitor_thread.Cancel();
-m_monitor_thread.Join(nullptr);
-m_monitor_thread.Reset();
+  if (m_monitor_thread->IsJoinable()) {
+m_monitor_thread->Cancel();
+m_monitor_thread->Join(nullptr);
+m_monitor_thread->Reset();
   }
 }
 
@@ -1417,10 +1422,10 @@
 bool ProcessMonitor::WaitForInitialTIDStop(lldb::tid_t tid) { return true; }
 
 void ProcessMonitor::StopOpThread() {
-  if (!m_operation_thread.IsJoinable())
+  if (!m_operation_thread->IsJoinable())
 return;
 
-  m_operation_thread.Cancel();
-  m_operation_thread.Join(nullptr);
-  m_operation_thread.Reset();
+  m_operation_thread->Cancel();
+  m_operation_thread->Join(nullptr);
+  m_operation_thread->Reset();
 }
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D64398: [LLDB] Fix FreeBSD build

2019-07-09 Thread David CARLIER via Phabricator via lldb-commits
devnexen added a comment.

By the way quick question, I did not commit since quite a time, is it still 
subversion ?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64398/new/

https://reviews.llvm.org/D64398



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D64398: [LLDB] Fix FreeBSD build

2019-07-11 Thread David CARLIER via Phabricator via lldb-commits
devnexen added a comment.

ping :)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64398/new/

https://reviews.llvm.org/D64398



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D64398: [LLDB] Fix FreeBSD build

2019-07-11 Thread David CARLIER via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL365761: [LLDB] Fix FreeBSD build. (authored by devnexen, 
committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D64398?vs=208649&id=209181#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64398/new/

https://reviews.llvm.org/D64398

Files:
  lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
  lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h

Index: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h
===
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.h
@@ -183,8 +183,8 @@
 private:
   ProcessFreeBSD *m_process;
 
-  lldb_private::HostThread m_operation_thread;
-  lldb_private::HostThread m_monitor_thread;
+  llvm::Expected m_operation_thread;
+  llvm::Expected m_monitor_thread;
   lldb::pid_t m_pid;
 
   int m_terminal_fd;
Index: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===
--- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -708,7 +708,7 @@
 const lldb_private::ProcessLaunchInfo & /* launch_info */,
 lldb_private::Status &error)
 : m_process(static_cast(process)),
-  m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) {
+  m_operation_thread(nullptr), m_monitor_thread(nullptr), m_pid(LLDB_INVALID_PROCESS_ID), m_terminal_fd(-1), m_operation(0) {
   using namespace std::placeholders;
 
   std::unique_ptr args(
@@ -738,7 +738,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread.IsJoinable()) {
+  if (!m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process launch failed.");
 return;
@@ -747,8 +747,8 @@
 
 ProcessMonitor::ProcessMonitor(ProcessFreeBSD *process, lldb::pid_t pid,
lldb_private::Status &error)
-: m_process(static_cast(process)), m_pid(pid),
-  m_terminal_fd(-1), m_operation(0) {
+: m_process(static_cast(process)),
+  m_operation_thread(nullptr), m_monitor_thread(nullptr), m_pid(pid), m_terminal_fd(-1), m_operation(0) {
   using namespace std::placeholders;
 
   sem_init(&m_operation_pending, 0, 0);
@@ -776,7 +776,7 @@
   m_monitor_thread = Host::StartMonitoringChildProcess(
   std::bind(&ProcessMonitor::MonitorCallback, this, _1, _2, _3, _4),
   GetPID(), true);
-  if (!m_monitor_thread.IsJoinable()) {
+  if (!m_monitor_thread->IsJoinable()) {
 error.SetErrorToGenericError();
 error.SetErrorString("Process attach failed.");
 return;
@@ -789,11 +789,13 @@
 void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread.IsJoinable())
+  if (m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread =
-  ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args, &error);
+  ThreadLauncher::LaunchThread(g_thread_name, LaunchOpThread, args);
+  if (!m_operation_thread)
+ error = m_operation_thread.takeError();
 }
 
 void *ProcessMonitor::LaunchOpThread(void *arg) {
@@ -955,11 +957,14 @@
  lldb_private::Status &error) {
   static const char *g_thread_name = "lldb.process.freebsd.operation";
 
-  if (m_operation_thread.IsJoinable())
+  if (m_operation_thread->IsJoinable())
 return;
 
   m_operation_thread =
-  ThreadLauncher::LaunchThread(g_thread_name, AttachOpThread, args, &error);
+  ThreadLauncher::LaunchThread(g_thread_name, AttachOpThread, args);
+
+  if (!m_operation_thread)
+	error = m_operation_thread.takeError();
 }
 
 void *ProcessMonitor::AttachOpThread(void *arg) {
@@ -1379,10 +1384,10 @@
 }
 
 void ProcessMonitor::StopMonitoringChildProcess() {
-  if (m_monitor_thread.IsJoinable()) {
-m_monitor_thread.Cancel();
-m_monitor_thread.Join(nullptr);
-m_monitor_thread.Reset();
+  if (m_monitor_thread->IsJoinable()) {
+m_monitor_thread->Cancel();
+m_monitor_thread->Join(nullptr);
+m_monitor_thread->Reset();
   }
 }
 
@@ -1417,10 +1422,10 @@
 bool ProcessMonitor::WaitForInitialTIDStop(lldb::tid_t tid) { return true; }
 
 void ProcessMonitor::StopOpThread() {
-  if (!m_operation_thread.IsJoinable())
+  if (!m_operation_thread->IsJoinable())
 return;
 
-  m_operation_thread.Cancel();
-  m_operation_thread.Join(nullptr);
-  m_operation_thread.Reset();
+  m_operation_thread->Cancel();
+  m_operation_thread->Join(nullptr);
+  m_operation_thread->Reset();
 }
__