<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
</head>
<body><div>So I've found a capability on Linux to be notified about new processes. I have an example of listening for these new processes running on my machine now [1] and I can see when my desired user process spawns. Though documentation on the API is scarce. It also requires that the executable or user have the CAP_NET_ADMIN capability to run.<br></div>
<div><br></div>
<div>It's possible that the addition of this requirement is a non-starter. Though I'm not 100% sure. Do you have any thoughts before I pursue this further?<br></div>
<div><br></div>
<div>[1] <a href="http://bazaar.launchpad.net/~kees/+junk/cn_proc/files/3">http://bazaar.launchpad.net/~kees/+junk/cn_proc/files/3</a></div>
<div><br></div>
<div>On Mon, Jun 4, 2018, at 7:04 PM, Greg Clayton wrote:<br></div>
<blockquote type="cite"><div>I will be too busy this week to get to this, so please do have a stab at it.<br></div>
<div><br></div>
<div>Basically the flow that debug server does is:<br></div>
<div>1 - get a list of all processes whose basename matches and remember those pids so we don't try to attach to them since we are waiting for a new process to show up<br></div>
<div>2 - poll the OS for the process list and wait for a new pid to show up with the basename and attach to the first one that matches whose pid isn't i the list from step #1<br></div>
<div><br></div>
<div>On MacOSX we don't have a way to be notified of new processes are spawned, not sure on other unix variants. If it is possible, we would want change to:<br></div>
<div>1 - sign up to be notified about new processes<br></div>
<div>2 - as each process gets launched, check for a match and attach as quickly as possible<br></div>
<div><br></div>
<div>Hope this helps and I look forward to seeing your patch!<br></div>
<div><br></div>
<div>Greg<br></div>
<div><div><div><br></div>
<blockquote type="cite"><div>On Jun 4, 2018, at 5:56 AM, Ryan Lovelett <<a href="mailto:ryan@lovelett.me">ryan@lovelett.me</a>> wrote:<br></div>
<div><br></div>
<div><div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">Greg,<br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">Is there anything I can do to help you implement or test this feature? Obviously I'm willing to roll-up my sleeves and work on this myself too if you've become more busy than you expected. That happens to us all and I completely understand.<br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">Not being able to debug in this manner is blocking me from adding Linux support to a Swift program. As you might imagine, I'm a little antsy to get past this so I can start writing some code.<span> </span><br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">On Thu, May 31, 2018, at 5:08 PM, Greg Clayton wrote:<br></div>
<blockquote type="cite" style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-moz-text-size-adjust:auto;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><div><br></div>
<div><div><br></div>
<blockquote type="cite"><div>On May 31, 2018, at 12:40 PM, Ryan Lovelett <<a href="mailto:ryan@lovelett.me">ryan@lovelett.me</a>> wrote:<br></div>
<div><br></div>
<div><div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">Well at least there is a little good news. I understood way more of those logs than I thought I did.<br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><br></div>
<blockquote type="cite" style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><div><div><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="size" style="font-size:11px">So two issues here:</span></span><br></div>
<div><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="size" style="font-size:11px">1 - we need a better error message when vAttachWait returns unsupported</span></span><br></div>
<div><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="size" style="font-size:11px">2 - fix lldb-server to support vAttachWait</span></span><br></div>
</div>
</blockquote><div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">A few questions.<br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">What is the protocol here? Can/should I report the issues at<span> </span><a href="https://bugs.llvm.org/">https://bugs.llvm.org/</a><span> </span>? Or is that something that a project member needs to do? Assuming that I can, would this be two seperate issues or one "large" issue?<br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">Barring that this is not something someone else might implement better/faster than me. Considering I have zero LLDB development experience is this something that I could tackle?<br></div>
</div>
</blockquote><div><br></div>
<div>I didn't realize this functionality was missing in lldb-server. I can take a stab at implementing it and see what I can do. Stay tuned.<br></div>
</div>
<div><div><br></div>
<blockquote type="cite"><div><div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><br></div>
<div style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;">On Thu, May 31, 2018, at 3:02 PM, Greg Clayton wrote:<br></div>
<blockquote type="cite" style="font-family:Menlo-Regular;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:currentcolor;"><div>lldb-server claims it doesn't support it:<br></div>
<div><br></div>
<div><div>lldb             <  48> send packet: $vAttachWait;6c616e677365727665722d7377696674#d6<br></div>
<div>lldb             <   4> read packet: $#00<br></div>
<div><br></div>
<div><br></div>
<div>Returning the empty packet ("$#00") means it is not supported, but we really should give a better error message than this. <br></div>
<div><br></div>
<div>It isn't that hard to implement. It would be easy to copy the code that is in debugserver in DNB.cpp in the <span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="size" style="font-size:11px">DNBProcessAttachWait function. Most of it is probably posix style stuff. </span></span><br></div>
<div><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="size" style="font-size:11px"></span></span><br></div>
<div><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="size" style="font-size:11px">So two issues here:</span></span><br></div>
<div><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="size" style="font-size:11px">1 - we need a better error message when vAttachWait returns unsupported</span></span><br></div>
<div><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="size" style="font-size:11px">2 - fix lldb-server to support vAttachWait</span></span><br></div>
<div><br></div>
<div>Greg<br></div>
<div><br></div>
<div><div><br></div>
<blockquote type="cite"><div>On May 31, 2018, at 11:04 AM, Ryan Lovelett <<a href="mailto:ryan@lovelett.me">ryan@lovelett.me</a>> wrote:<br></div>
<div><br></div>
<div><div><blockquote type="cite">It might be a lldb-server issue?<br></blockquote><div><br></div>
<div>How would one go about determining this?<br></div>
<div><br></div>
<div>(lldb) log enable -f /tmp/packates.txt gdb-remote packets<br></div>
<div>(lldb) process attach --name "<name>" --waitfor<br></div>
<div>error: attach failed: lost connection<br></div>
<div><br></div>
<div>Attached the log output. Maybe it'll make more sense to you than me.<br></div>
<div><br></div>
<div>That escalated quickly. So I've read through that log. I found something that says $qVAttachOrWaitSupported#38 with the following response being $#00. Perhaps I'm reading too much but is it that it's reporting that it is not supported?<br></div>
<div><br></div>
<div>Does lldb-server need to be compiled in a certain way to add support for attach wait?<br></div>
<div><br></div>
<div>On Thu, May 31, 2018, at 1:49 PM, Greg Clayton wrote:<br></div>
<blockquote type="cite"><div>Try enabling logging with:<br></div>
<div><br></div>
<div>(lldb) log enable -f /tmp/packets.txt gdb-remote packets<br></div>
<div><br></div>
<div>And the try the attach. It might be a lldb-server issue?<br></div>
<div><br></div>
<blockquote type="cite"><div>On May 31, 2018, at 9:02 AM, Ryan Lovelett via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org">lldb-dev@lists.llvm.org</a>> wrote:<br></div>
<div><br></div>
<div>I am attempting to use: process attach --name "<name>" --waitfor<br></div>
<div><br></div>
<div>The problem is that it immediately returns error: attach failed: lost connection.<br></div>
<div><br></div>
<div>Is this something I can troubleshoot further? Or is this not supported on Linux?<br></div>
<div><br></div>
<div>--<span> </span><br></div>
<div>Ryan Lovelett<br></div>
<div>_______________________________________________<br></div>
<div>lldb-dev mailing list<br></div>
<div><a href="mailto:lldb-dev@lists.llvm.org">lldb-dev@lists.llvm.org</a><br></div>
<div><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br></div>
</blockquote></blockquote><div><span><packates.txt></span><br></div>
</div>
</div>
</blockquote></div>
</div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</div>
</blockquote><div><br></div>
</body>
</html>