mgorny added a comment.

In D128932#3631903 <https://reviews.llvm.org/D128932#3631903>, @labath wrote:

> I have a feeling the semaphores will not work (compile) on darwin. I didn't 
> find any sem_init call there -- just sem_open. Maybe instead of semaphores we 
> could use files for the synchronization? Something similar to the 
> `wait_for_file_on_target` function, just in the other direction. Then the 
> test could create a file to move the processes forward? (This might be easier 
> to achieve with a dedicated inferior, instead of trying to fit it into the 
> universal LLGS inferior.)

Damn, and I thought POSIX actually means something to Darwin. Yeah, I'll look 
into using some other synchronization mechanism.



================
Comment at: 
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp:1110
     // does not interfere with our protocol.
-    StopSTDIOForwarding();
+    if (!m_non_stop)
+      StopSTDIOForwarding();
----------------
labath wrote:
> In the multiprocess all-stop mode, if one process stops, we are supposed to 
> stop all of them, right? I take it that's not something we do right now, is 
> it?
We don't support resuming multiple processes in all-stop mode. `vCont` returns 
an error if you try to do that, and other continue packets are blocking, so it 
can't happen ;-).


================
Comment at: lldb/test/API/tools/lldb-server/TestGdbRemoteForkNonStop.py:116
+        parent_pid, parent_tid, child_pid, child_tid = (
+            self.start_fork_test(["fork", "sleep:2", "print-pid", "sleep:2",
+                                  "stop"],
----------------
labath wrote:
> mgorny wrote:
> > mgorny wrote:
> > > I really dislike these sleeps but I can't think of a better way of doing 
> > > it (short of using IPC for synchronization). The goal is to 1) ensure 
> > > that both processes start before they start outputting, and 2) ensure 
> > > that both output before the first stop reason comes.
> > Ok, semaphores are not scary after all, and I suppose we can expect them to 
> > work if we expect `fork()` to work.
> > ensure that both processes start before they start outputting
> But we should be able to see the output from the first process (if it had 
> any) even it is the only process running. Do we have a test for that? Could 
> you add a step where the first process outputs something before it waits to 
> synchronize with the second process?
Yes, I suppose covering that with a test also makes sense.


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

https://reviews.llvm.org/D128932

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

Reply via email to