<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">On 7 Feb 2018, at 07:30, Pavel Labath <<a href="mailto:labath@google.com" class="">labath@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">On 7 February 2018 at 15:03, Alex Blewitt <<a href="mailto:alblue@apple.com" class="">alblue@apple.com</a>> wrote:<br class=""><blockquote type="cite" class="">What I do is set up Docker to forward the connections via the specific ports<br class="">- in effect, the Docker app is listening on localhost:4000, then it routes<br class="">packets through into inside the Docker instance and changes the IP address.<br class=""></blockquote>Right, and for the llgs connection, I presume you have a similar<br class="">setup, where docker listens on localhost:4001 and forwards to<br class="">(virtual) 172.17.0.2:4001.<br class=""><br class=""><br class=""><blockquote type="cite" class="">So getpeername inside the Docker instance is getting a different IP address<br class="">than the connection that the lldb client thinks it is.<br class=""></blockquote><br class="">Now this is the part I don't get. It's true that the client sends it's<br class="">own hostname as a part of the launch request, but that is currently<br class="">being ignored by the platform:<br class="">GDBRemoteCommunicationServerPlatform.cpp:107<br class="">  // ignore the hostname send from the remote end, just use the ip address<br class="">  // that we're currently communicating with as the hostname<br class=""><br class="">My guess is this is done precisely so that your use case could work.<br class="">And it should work because LLGS will be comparing getpeername() of the<br class="">platform connection with getpeername() of the LLGS one, and these<br class="">should match as both are taken from the inside of the docker image.<br class="">Why it doesn't work is something I'd like to figure out, as I think<br class="">your use case should work out-of-the-box.<br class=""><br class="">Can you repeat your netstat experiment with both of the connections<br class="">(LLGS and platform) active, so we can see how all addresses are<br class="">resolved?<br class=""></div></div></blockquote><div><br class=""></div><div>Here's what it looks like inside the container - the 4000 is the platform server and the 4001 is the child gdbserver process:</div><div><br class=""></div><div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""># netstat</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Active Internet connections (w/o servers)</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Proto Recv-Q Send-Q Local Address           Foreign Address         State      </span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">tcp        0      0 f6c9d51504e8:4000       172.17.0.1:55212        ESTABLISHED</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class="">tcp        0      0 f6c9d51504e8:4001       172.17.0.1:58322        ESTABLISHED</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">tcp        0      0 f6c9d51504e8:4000       172.17.0.1:55216        ESTABLISHED</span></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><br class=""></span></div></div><div>(in this case, I've restarted the docker image so there's a different name)</div><div><br class=""></div><div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""># cat /etc/hosts</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">127.0.0.1<span class="Apple-tab-span" style="white-space:pre">   </span>localhost</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class="">172.17.0.2<span class="Apple-tab-span" style="white-space: pre;">   </span>f6c9d51504e8</div></div><div><br class=""></div><div>This is what the connection looks like from outside the container, looking in:</div><div><br class=""></div><div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">$ netstat -n | grep 400</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">tcp4       0      0  127.0.0.1.4001         127.0.0.1.53809        ESTABLISHED</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">tcp4       0      0  127.0.0.1.53809        127.0.0.1.4001         ESTABLISHED</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">tcp4       0      0  127.0.0.1.4000         127.0.0.1.53808        ESTABLISHED</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">tcp4       0      0  127.0.0.1.53808        127.0.0.1.4000         ESTABLISHED</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">tcp4       0      0  127.0.0.1.4000         127.0.0.1.53806        ESTABLISHED</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">tcp4       0      0  127.0.0.1.53806        127.0.0.1.4000         ESTABLISHED</span></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><br class=""></span></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class="">These are the processes running in the Docker container, with the 0.0.0.0 signifying the patch working:</span></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><br class=""></span></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">   66 pts/0    Sl+    0:00 lldb-server platform --allow-all-hosts --server --listen *:4000 --min-gdbserver-port 4001 --max-gdbserver-port </span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; background-color: rgb(255, 255, 255);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">   70 pts/0    S+     0:00 /usr/bin/lldb-server gdbserver <a href="tcp://0.0.0.0:4001" class="">tcp://0.0.0.0:4001</a> --native-regs --log-file=/tmp/lldb-gdbserver.log</span></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><br class=""></span></div></span></div></div>Alex</div></body></html>