================
Comment at: source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp:148
@@ +147,3 @@
+
+    int resume_signal = 0;
+
----------------
John Wolfe wondered if this should be LLDB_INVALID_SIGNAL_NUMBER instead of 0.

In this case resume_signal is passed to m_monitor->SingleStep() or ->Resume() 
on line 173/175; these are implemented in ProcessMonitor::SingleStep() in 
source/Plugins/Process/FreeBSD/ProcessMonitor.cpp and are FreeBSD specific.

>From PTRACE(2):

     PT_STEP       The traced process is single stepped one instruction.  The
                   addr argument should be passed (caddr_t)1.  The data argu-
                   ment provides a signal number to be delivered to the traced
                   process as it resumes execution, or 0 if no signal is to be
                   sent.

So 0 in this case will be interpreted as "no signal."  Agreed that this isn't 
necessarily clear though.

We could pass LLDB_INVALID_SIGNAL_NUMBER in and map that to 0 in SingleStep() 
and Resume(), but I'm not sure it's worth it.  At least a comment is in order 
though.

================
Comment at: source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp:167
@@ +166,3 @@
+        m_monitor->ThreadSuspend(*t_pos, true);
+        do_step = true;
+    }
----------------
John asks
> What is the function of the "do_step = true" in the "m_suspended_tids" loop?

Good catch; I think I had the impression PT_CONTINUE would unsuspend all 
threads. Looking now though it doesn't look like it should be there, will test 
without it.

(It could have been a cut-and-pasteo, too.)


================
Comment at: source/Plugins/Process/FreeBSD/ProcessMonitor.cpp:1080
@@ +1079,3 @@
+        return 0;
+    tids = (lwpid_t *)malloc(tdcnt * sizeof(*tids));
+    if (tids == NULL)
----------------
John asks
> If it "safe" to simply "return 0" if the malloc() or PTRACE() calls fail.  
> Acknowledged that if malloc() fails, lldb is about to fall over.   Is there 
> any instance when this PTRACE() call can fail when there are known threads 
> (tdcnt > 0) and the correct amount of space has been malloc'ed.

I don't think there's any case other than catastrophic failure (e.g., the PID 
has disappeared, where it would return ESRCH), where things will completely 
fail anyway.

> It as nit-picking, but should these not be covered by assertions?

I don't think they're assertions, since they're not really invariants known at 
compile time that we're trying to enforce.  If the failure could actually 
happen I think it's the responsibility of LLDB infrastructure to handle a 
failure returned out of ProcessFreeBSD::UpdateThreadList (by reporting to the 
user, e.g.)



http://llvm-reviews.chandlerc.com/D2267
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to