The patch works for x86 remote debugging as well.

$ ../binaries/x86_debug/bin/lldb --version
lldb version 6.0.0 (https://llvm.org/svn/llvm-project/lldb/trunk
revision 312008)
  clang revision 312008
  llvm revision 312008

On Tue, Aug 29, 2017 at 10:51 PM, Ramana <ramana.venka...@gmail.com> wrote:
> Thanks Chris. The patch woks for ARM remote debugging for my case. I
> am yet to check x86 remote debugging. Need to build the tool chain, so
> will update you tomorrow.
>
> ~# /mnt/var/arm_debug/bin/lldb --version
> lldb version 6.0.0 (https://llvm.org/svn/llvm-project/lldb/trunk
> revision 312008)
>   clang revision 312008
>   llvm revision 312008
>
> "gdb-remote process" log of lldb-server says
>
>        GDBRemoteCommunication::StartDebugserverProcess() debugserver
> listens 55874 port
>
> ~/Ramana# ps af -w
>   PID TTY      STAT   TIME COMMAND
>  8314 pts/0    S+     0:00  \_ /mnt/var/arm_debug/bin/lldb-server p
> --log-file Ramana/remote.log --log-channels gdb-remote process
> --server --listen *:1400
>  8421 pts/0    Sl+    0:01      \_ /mnt/var/arm_debug/bin/lldb-server
> p --log-file Ramana/remote.log --log-channels gdb-remote process
> --server --listen *:1400
>  8477 pts/0    S+     0:00          \_
> /mnt/var/arm_debug/bin/lldb-server gdbserver tcp://10.10.12.3:0
> --native-regs --pipe 7
>  8514 pts/0    t      0:00              \_ /home/root/arm_main
>
>
>
> ~/work_root/ToT_lldb/tests$ ../binaries/x86_debug/bin/lldb
> (lldb) platform select remote-linux
>   Platform: remote-linux
>  Connected: no
> (lldb) platform connect connect://10.10.2.1:1400
>   Platform: remote-linux
>     Triple: arm-*-linux-gnueabihf
> OS Version: 4.1.33 (4.1.33-ltsi-altera)
>     Kernel: #1 SMP Tue May 2 08:13:11 MYT 2017
>   Hostname: arria5
>  Connected: yes
> WorkingDir: /home/root
> (lldb) file arm_main
> Current executable set to 'arm_main' (arm).
> (lldb) b main
> Breakpoint 1: where = arm_main`main + 4 at main.c:4, address = 0x000104a0
> (lldb) run
> Process 8514 launched: '/home/ramanan/work_root/ToT_lldb/tests/arm_main' (arm)
> Process 8514 stopped
> * thread #1, name = 'arm_main', stop reason = breakpoint 1.1
>     frame #0: 0x000104a0 arm_main`main at main.c:4
>    1    #include <stdio.h>
>    2
>    3    int main() {
> -> 4            printf("Hello World\n");
>    5    }
> (lldb) n
> Hello World
> Process 8514 stopped
> * thread #1, name = 'arm_main', stop reason = step over
>     frame #0: 0x000104ae arm_main`main at main.c:5
>    2
>    3    int main() {
>    4            printf("Hello World\n");
> -> 5    }
>
>
>
> Regards,
> Ramana
>
> On Tue, Aug 29, 2017 at 9:49 PM, Chris Bieneman <cbiene...@apple.com> wrote:
>> I committed a fix in r312008. Please test it to verify that it resolves your 
>> issue.
>>
>> Thanks,
>> -Chris
>>
>>> On Aug 28, 2017, at 8:41 PM, Ramana <ramana.venka...@gmail.com> wrote:
>>>
>>> Thank you, Chris. Looking forward to the patch.
>>>
>>> On Tue, Aug 29, 2017 at 1:28 AM, Chris Bieneman <cbiene...@apple.com> wrote:
>>>> I had a chance to look into this more, and I found a bug in the listen 
>>>> behavior. I'm testing a solution to it now. Will post it if it resolves 
>>>> the issue.
>>>>
>>>> -Chris
>>>>
>>>>> On Aug 25, 2017, at 10:36 AM, Greg Clayton via lldb-dev 
>>>>> <lldb-dev@lists.llvm.org> wrote:
>>>>>
>>>>> Maybe we can make it open only an IPv4 socket for lldb-server for now as 
>>>>> a work around?
>>>>>
>>>>>> On Aug 25, 2017, at 8:47 AM, Chris Bieneman <cbiene...@apple.com> wrote:
>>>>>>
>>>>>> Since lldb-server only supports running on a limited set of host 
>>>>>> operating systems it is hard for me to diagnose the issue completely, 
>>>>>> but I suspect the problem is caused by the fact that the new listening 
>>>>>> code can open more than one socket, and TCPSocket::GetLocalPortNumber() 
>>>>>> may be misbehaving.
>>>>>>
>>>>>> I'm unlikely to have time to investigate further until next week, but it 
>>>>>> should be possible to craft a unit test that verifies that 
>>>>>> GetLocalPortNumber() returns non-zero on a socket that is listening 
>>>>>> before a connection is established. That might reproduce the issue in a 
>>>>>> more easy to debug environment.
>>>>>>
>>>>>> -Chris
>>>>>>
>>>>>>> On Aug 25, 2017, at 7:38 AM, Ramana via lldb-dev 
>>>>>>> <lldb-dev@lists.llvm.org> wrote:
>>>>>>>
>>>>>>> Ted, Greg,
>>>>>>>
>>>>>>> I have built lldb tools @r300578 and the lldb-server is returning the
>>>>>>> proper port number to lldb client and the remote debugging is working.
>>>>>>> I have given the lldb-server log at the bottom of my reply.
>>>>>>>
>>>>>>> So, it looks https://reviews.llvm.org/rL300579 (Update LLDB Host to
>>>>>>> support IPv6 over TCP) is causing the issue.
>>>>>>>
>>>>>>>> Ramana, can you stick in a log message to print port_cstr? I suspect 
>>>>>>>> it's actually getting 0 back from lldb-server, which would tell us the 
>>>>>>>> error is in the server code, not the client code.
>>>>>>>
>>>>>>> Ted, I did that and actually the pipe read is returning zero port
>>>>>>> number. So definitely the issue is on the server side.
>>>>>>>
>>>>>>>  GDBRemoteCommunication::StartDebugserverProcess() port_cstr
>>>>>>> before socket pipe read
>>>>>>>  GDBRemoteCommunication::StartDebugserverProcess() port_cstr after
>>>>>>> socket pipe read
>>>>>>>
>>>>>>>
>>>>>>>> Ted's comments are correct and I am guessing we will find the 
>>>>>>>> "lldb-server gdb-server" is not doing the right thing and it isn't 
>>>>>>>> returning the correctly bound port.
>>>>>>>>
>>>>>>>> When we are doing remote stuff we must use TCP so there should be 
>>>>>>>> lldb-server should be opening a TCP socket, binding, listening and 
>>>>>>>> accepting a connection from the remote LLDB.
>>>>>>>>
>>>>>>>> Greg
>>>>>>>
>>>>>>> Greg, thanks for the comments. Are you saying I should check what is
>>>>>>> happening on the TCP socket side? How do I do it other than walking
>>>>>>> through the code?
>>>>>>>
>>>>>>>
>>>>>>> root@arria5:~# /mnt/var/patch_bins/binaries/bin/lldb-server platform
>>>>>>> --log-file Ramana/remote.log --log-channels "gdb-remote process"
>>>>>>> --server --listen *:1400
>>>>>>> Connection established.
>>>>>>> error: lost connection
>>>>>>> lldb-server exiting...
>>>>>>> ^C
>>>>>>> root@arria5:~# /mnt/var/patch_bins/binaries/bin/lldb --version
>>>>>>> lldb version 5.0.0 (https://llvm.org/svn/llvm-project/lldb/trunk
>>>>>>> revision 300578)
>>>>>>> clang revision 300578
>>>>>>> llvm revision 300578
>>>>>>> root@arria5:~# cat Ramana/remote.log
>>>>>>> GDBRemoteCommunication::StartDebugserverProcess(url=tcp://10.10.12.3:0, 
>>>>>>> port=0)
>>>>>>> GDBRemoteCommunication::StartDebugserverProcess() found gdb-remote
>>>>>>> stub exe '/mnt/var/patch_bins/binaries/bin/lldb-server'
>>>>>>> launch info for gdb-remote stub:
>>>>>>> Executable: lldb-server
>>>>>>> Triple: *-*-*
>>>>>>> Arguments:
>>>>>>> argv[0]="/mnt/var/patch_bins/binaries/bin/lldb-server"
>>>>>>> argv[1]="gdbserver"
>>>>>>> argv[2]="tcp://10.10.12.3:0"
>>>>>>> argv[3]="--native-regs"
>>>>>>> argv[4]="--pipe"
>>>>>>> argv[5]="7"
>>>>>>> argv[6]=NULL
>>>>>>>
>>>>>>> Environment:
>>>>>>> env[0]="XDG_SESSION_ID=c7"
>>>>>>> env[1]="TERM=xterm-256color"
>>>>>>> env[2]="SHELL=/bin/sh"
>>>>>>> env[3]="SSH_CLIENT=172.16.16.51 40072 22"
>>>>>>> env[4]="SSH_TTY=/dev/pts/0"
>>>>>>> env[5]="USER=root"
>>>>>>> env[6]="MAIL=/var/mail/root"
>>>>>>> env[7]="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
>>>>>>> env[8]="PWD=/home/root"
>>>>>>> env[9]="EDITOR=vi"
>>>>>>> env[10]="PS1=\u@\h:\w\$ "
>>>>>>> env[11]="SHLVL=1"
>>>>>>> env[12]="HOME=/home/root"
>>>>>>> env[13]="LOGNAME=root"
>>>>>>> env[14]="SSH_CONNECTION=172.16.16.51 40072 10.10.2.4 22"
>>>>>>> env[15]="XDG_RUNTIME_DIR=/run/user/0"
>>>>>>> env[16]="_=/mnt/var/patch_bins/binaries/bin/lldb-server"
>>>>>>> env[17]=NULL
>>>>>>>
>>>>>>> GDBRemoteCommunication::StartDebugserverProcess() debugserver listens 
>>>>>>> 48039 port
>>>>>>>
>>>>>>>
>>>>>>> Regards,
>>>>>>> Ramana
>>>>>>>
>>>>>>> On Thu, Aug 24, 2017 at 10:10 PM, Greg Clayton <clayb...@gmail.com> 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> On Aug 24, 2017, at 8:33 AM, Ted Woodward 
>>>>>>>>> <ted.woodw...@codeaurora.org> wrote:
>>>>>>>>>
>>>>>>>>> The lldb-server launch line looks ok; it should take the port 0 arg 
>>>>>>>>> and get a port from the OS.
>>>>>>>>> lldb is getting the port back from lldb-server in 4.0.1, as seen here:
>>>>>>>>>
>>>>>>>>>> GDBRemoteCommunication::StartDebugserverProcess() debugserver 
>>>>>>>>>> listens 56543 port
>>>>>>>>>
>>>>>>>>> But for 5.0.0 we see it fail the debugserver launch, and get:
>>>>>>>>>
>>>>>>>>>> GDBRemoteCommunication::StartDebugserverProcess() debugserver 
>>>>>>>>>> listens 0 port
>>>>>>>>>
>>>>>>>>> That log message comes right after the pipe read, which succeeds 
>>>>>>>>> because error.Success() is true:
>>>>>>>>>
>>>>>>>>>    // Read port from pipe with 10 second timeout.
>>>>>>>>>    error = socket_pipe.ReadWithTimeout(
>>>>>>>>>        port_cstr, num_bytes, std::chrono::seconds{10}, num_bytes);
>>>>>>>>>    if (error.Success() && (port != nullptr)) {
>>>>>>>>>      assert(num_bytes > 0 && port_cstr[num_bytes - 1] == '\0');
>>>>>>>>>      uint16_t child_port = StringConvert::ToUInt32(port_cstr, 0);
>>>>>>>>>      if (*port == 0 || *port == child_port) {
>>>>>>>>>        *port = child_port;
>>>>>>>>>        if (log)
>>>>>>>>>          log->Printf("GDBRemoteCommunication::%s() "
>>>>>>>>>                      "debugserver listens %u port",
>>>>>>>>>                      __FUNCTION__, *port);
>>>>>>>>>
>>>>>>>>> As an aside, I don't like that assert - if we get garbage back from 
>>>>>>>>> the pipe, we should error out, not take down lldb.
>>>>>>>>
>>>>>>>> The assert should be removed and the code should work correctly 
>>>>>>>> without the assert.
>>>>>>>>
>>>>>>>>> Another aside, the definition of port_cstr is odd:
>>>>>>>>>    char port_cstr[PATH_MAX] = {0};
>>>>>>>>>    port_cstr[0] = '\0';
>>>>>>>>> The size is way to big - max port number is 65535, so we don't need 
>>>>>>>>> PATH_MAX bytes. And 2 assignments to make it a null string?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Ramana, can you stick in a log message to print port_cstr? I suspect 
>>>>>>>>> it's actually getting 0 back from lldb-server, which would tell us 
>>>>>>>>> the error is in the server code, not the client code.
>>>>>>>>>
>>>>>>>>
>>>>>>>> With the following args:
>>>>>>>>
>>>>>>>> argv[0]="/mnt/var/binaries/arm_release/bin/lldb-server"
>>>>>>>> argv[1]="gdbserver"
>>>>>>>> argv[2]="tcp://10.10.12.3:0"
>>>>>>>> argv[3]="--native-regs"
>>>>>>>> argv[4]="--pipe"
>>>>>>>> argv[5]="7"
>>>>>>>> argv[6]=NULL
>>>>>>>>
>>>>>>>> lldb-server should bind to port 0, figure out the port, and write the 
>>>>>>>> port number into the file descriptor 7 ("--pipe 7" argument) to let 
>>>>>>>> the other side know what port to report back to the remote LLDB. The 
>>>>>>>> reply to the qLaunchGDBServer packet should then contain this valid 
>>>>>>>> port number.
>>>>>>>>
>>>>>>>> Ted's comments are correct and I am guessing we will find the 
>>>>>>>> "lldb-server gdb-server" is not doing the right thing and it isn't 
>>>>>>>> returning the correctly bound port.
>>>>>>>>
>>>>>>>> When we are doing remote stuff we must use TCP so there should be 
>>>>>>>> lldb-server should be opening a TCP socket, binding, listening and 
>>>>>>>> accepting a connection from the remote LLDB.
>>>>>>>>
>>>>>>>> Greg
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> Ted
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Qualcomm Innovation Center, Inc.
>>>>>>>>> The Qualcomm Innovation Center, Inc. is a member of Code Aurora 
>>>>>>>>> Forum, a Linux Foundation Collaborative Project
>>>>>>>>>
>>>>>>>>>> -----Original Message-----
>>>>>>>>>> From: Ramana [mailto:ramana.venka...@gmail.com]
>>>>>>>>>> Sent: Thursday, August 24, 2017 4:00 AM
>>>>>>>>>> To: Ted Woodward <ted.woodw...@codeaurora.org>
>>>>>>>>>> Cc: Greg Clayton <clayb...@gmail.com>; Hans Wennborg
>>>>>>>>>> <h...@chromium.org>; lldb-dev@lists.llvm.org
>>>>>>>>>> Subject: Re: [lldb-dev] Remote debugging ARM target from x86 host
>>>>>>>>>>
>>>>>>>>>> Greg, Ted
>>>>>>>>>>
>>>>>>>>>> Thanks for your comments.
>>>>>>>>>>
>>>>>>>>>> On Thu, Aug 24, 2017 at 12:01 AM, Ted Woodward
>>>>>>>>>> <ted.woodw...@codeaurora.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>> What should be happening is Handle_qLaunchGDBServer calls
>>>>>>>>>> LaunchGDBServer with a port of UINT16_MAX, which tells it to use a 
>>>>>>>>>> port in its
>>>>>>>>>> port list. It shouldn't have a port list, so should return 0. 
>>>>>>>>>> LaunchGDBServer calls
>>>>>>>>>> StartDebugServerProcess with a port of 0 in the url. 
>>>>>>>>>> StartDebugServerProcess
>>>>>>>>>> launches the gdbserver with a named pipe, and reads the actual port 
>>>>>>>>>> from the
>>>>>>>>>> pipe.
>>>>>>>>>>
>>>>>>>>>> Yes, the port list is empty unless --(min/max)-gdbserver-port is 
>>>>>>>>>> specified and
>>>>>>>>>> the gdbserver reads port number from the named pipe which in the 
>>>>>>>>>> failing case
>>>>>>>>>> is zero.
>>>>>>>>>>
>>>>>>>>>>> I suggest turning on more logging - specifically, "gdb-remote 
>>>>>>>>>>> process". That's
>>>>>>>>>> the channel used in StartDebugServerProcess.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> In fact I have given the relevant log line of "gdb-remote process" 
>>>>>>>>>> in the bug
>>>>>>>>>> details reporting port zero. Anyhow, the full log of "gdb-remote 
>>>>>>>>>> process" for
>>>>>>>>>> both lldb v4.0.1 and v5.0.0 is given at the bottom of my reply.
>>>>>>>>>>
>>>>>>>>>> I thought https://reviews.llvm.org/rL295947 (Ensure lldb-server 
>>>>>>>>>> waits for child
>>>>>>>>>> debug servers to start up when passing them) got something to do 
>>>>>>>>>> with this bug
>>>>>>>>>> but both reversing
>>>>>>>>>>
>>>>>>>>>> if (pass_comm_fd == -1) {   at
>>>>>>>>>> source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp:1086
>>>>>>>>>>
>>>>>>>>>> to original
>>>>>>>>>>
>>>>>>>>>> if (pass_comm_fd == -1 && ((port != nullptr && *port == 0) || port ==
>>>>>>>>>> nullptr)) {
>>>>>>>>>>
>>>>>>>>>> and
>>>>>>>>>>
>>>>>>>>>> increasing the time out to 30 sec from 10 sec in
>>>>>>>>>> socket_pipe.ReadWithTimeout()    at
>>>>>>>>>> source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp:1255
>>>>>>>>>>
>>>>>>>>>> did not solve the issue.
>>>>>>>>>>
>>>>>>>>>> By the way, the remote debugging of x86 (linux) from x86 (linux) 
>>>>>>>>>> with lldb
>>>>>>>>>> v5.0.0 (but works with v4.0.1) also fails with assertion
>>>>>>>>>>
>>>>>>>>>> assert(num_bytes > 0 && port_cstr[num_bytes - 1] == '\0');  at
>>>>>>>>>> source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp:1258
>>>>>>>>>>
>>>>>>>>>> due to the reason that socket_pipe.ReadWithTimeout() could not 
>>>>>>>>>> successfully
>>>>>>>>>> read the port number from the named pipe.
>>>>>>>>>>
>>>>>>>>>> Based on the above, though I am not sure, the other patch I could 
>>>>>>>>>> think of
>>>>>>>>>> having an effect on this bug is
>>>>>>>>>> https://reviews.llvm.org/rL300579 (Update LLDB Host to support IPv6 
>>>>>>>>>> over TCP)
>>>>>>>>>> which changed the socket implementation.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> lldb-server log for "gdb-remote process" with lldb v4.0.1 (passing 
>>>>>>>>>> case)
>>>>>>>>>>
>>>>>>>>>> GDBRemoteCommunication::StartDebugserverProcess(url=tcp://10.10.12.3:0,
>>>>>>>>>> port=0)
>>>>>>>>>> GDBRemoteCommunication::StartDebugserverProcess() found gdb-remote 
>>>>>>>>>> stub
>>>>>>>>>> exe '/mnt/var/binaries/arm_release/bin/lldb-server'
>>>>>>>>>> launch info for gdb-remote stub:
>>>>>>>>>> Executable: lldb-server
>>>>>>>>>> Triple: *-*-*
>>>>>>>>>> Arguments:
>>>>>>>>>> argv[0]="/mnt/var/binaries/arm_release/bin/lldb-server"
>>>>>>>>>> argv[1]="gdbserver"
>>>>>>>>>> argv[2]="tcp://10.10.12.3:0"
>>>>>>>>>> argv[3]="--native-regs"
>>>>>>>>>> argv[4]="--pipe"
>>>>>>>>>> argv[5]="7"
>>>>>>>>>> argv[6]=NULL
>>>>>>>>>>
>>>>>>>>>> Environment:
>>>>>>>>>> env[0]="XDG_SESSION_ID=c3"
>>>>>>>>>> env[1]="TERM=xterm-256color"
>>>>>>>>>> env[2]="SHELL=/bin/sh"
>>>>>>>>>> env[3]="SSH_CLIENT=10.10.33.99 53542 22"
>>>>>>>>>> env[4]="SSH_TTY=/dev/pts/0"
>>>>>>>>>> env[5]="USER=root"
>>>>>>>>>> env[6]="MAIL=/var/mail/root"
>>>>>>>>>> env[7]="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
>>>>>>>>>> env[8]="PWD=/home/root"
>>>>>>>>>> env[9]="EDITOR=vi"
>>>>>>>>>> env[10]="PS1=\u@\h:\w\$ "
>>>>>>>>>> env[11]="SHLVL=1"
>>>>>>>>>> env[12]="HOME=/home/root"
>>>>>>>>>> env[13]="LOGNAME=root"
>>>>>>>>>> env[14]="SSH_CONNECTION=10.10.33.99 53542 10.10.2.4 22"
>>>>>>>>>> env[15]="XDG_RUNTIME_DIR=/run/user/0"
>>>>>>>>>> env[16]="_=/mnt/var/binaries/arm_release/bin/lldb-server"
>>>>>>>>>> env[17]=NULL
>>>>>>>>>>
>>>>>>>>>> GDBRemoteCommunication::StartDebugserverProcess() debugserver listens
>>>>>>>>>> 56543 port
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> lldb-server log for "gdb-remote process" with lldb v5.0.0 (failing 
>>>>>>>>>> case)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> GDBRemoteCommunication::StartDebugserverProcess(url=tcp://10.10.12.3:0,
>>>>>>>>>> port=0)
>>>>>>>>>> GDBRemoteCommunication::StartDebugserverProcess() found gdb-remote 
>>>>>>>>>> stub
>>>>>>>>>> exe '/mnt/var/binaries/arm_v5.0_orig/bin/lldb-server'
>>>>>>>>>> launch info for gdb-remote stub:
>>>>>>>>>> Executable: lldb-server
>>>>>>>>>> Triple: *-*-*
>>>>>>>>>> Arguments:
>>>>>>>>>> argv[0]="/mnt/var/binaries/arm_v5.0_orig/bin/lldb-server"
>>>>>>>>>> argv[1]="gdbserver"
>>>>>>>>>> argv[2]="tcp://10.10.12.3:0"
>>>>>>>>>> argv[3]="--native-regs"
>>>>>>>>>> argv[4]="--pipe"
>>>>>>>>>> argv[5]="7"
>>>>>>>>>> argv[6]=NULL
>>>>>>>>>>
>>>>>>>>>> Environment:
>>>>>>>>>> env[0]="XDG_SESSION_ID=c3"
>>>>>>>>>> env[1]="TERM=xterm-256color"
>>>>>>>>>> env[2]="SHELL=/bin/sh"
>>>>>>>>>> env[3]="SSH_CLIENT=10.10.33.99 53542 22"
>>>>>>>>>> env[4]="SSH_TTY=/dev/pts/0"
>>>>>>>>>> env[5]="USER=root"
>>>>>>>>>> env[6]="MAIL=/var/mail/root"
>>>>>>>>>> env[7]="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
>>>>>>>>>> env[8]="PWD=/home/root"
>>>>>>>>>> env[9]="EDITOR=vi"
>>>>>>>>>> env[10]="PS1=\u@\h:\w\$ "
>>>>>>>>>> env[11]="SHLVL=1"
>>>>>>>>>> env[12]="HOME=/home/root"
>>>>>>>>>> env[13]="LOGNAME=root"
>>>>>>>>>> env[14]="SSH_CONNECTION=10.10.33.99 53542 10.10.2.4 22"
>>>>>>>>>> env[15]="XDG_RUNTIME_DIR=/run/user/0"
>>>>>>>>>> env[16]="_=/mnt/var/binaries/arm_v5.0_orig/bin/lldb-server"
>>>>>>>>>> env[17]=NULL
>>>>>>>>>>
>>>>>>>>>> GDBRemoteCommunication::StartDebugserverProcess() debugserver 
>>>>>>>>>> listens 0
>>>>>>>>>> port
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Ramana
>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Qualcomm Innovation Center, Inc.
>>>>>>>>>>> The Qualcomm Innovation Center, Inc. is a member of Code Aurora 
>>>>>>>>>>> Forum,
>>>>>>>>>>> a Linux Foundation Collaborative Project
>>>>>>>>>>>
>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>> From: lldb-dev [mailto:lldb-dev-boun...@lists.llvm.org] On Behalf 
>>>>>>>>>>>> Of
>>>>>>>>>>>> Greg Clayton via lldb-dev
>>>>>>>>>>>> Sent: Wednesday, August 23, 2017 12:45 PM
>>>>>>>>>>>> To: Hans Wennborg <h...@chromium.org>
>>>>>>>>>>>> Cc: Ramana <ramana.venka...@gmail.com>; LLDB Dev <lldb-
>>>>>>>>>>>> d...@lists.llvm.org>
>>>>>>>>>>>> Subject: Re: [lldb-dev] Remote debugging ARM target from x86 host
>>>>>>>>>>>>
>>>>>>>>>>>> Port zero should never be returned as a valid port. We do bind to
>>>>>>>>>>>> port zero just so we don't try and pick a port at random just to 
>>>>>>>>>>>> find
>>>>>>>>>>>> it is being used. When we bind to port 9, we must find the actual
>>>>>>>>>>>> port we bound to and return that. Seems something has gone wrong 
>>>>>>>>>>>> with
>>>>>>>>>>>> the code that discovers the port that was actually bound and is 
>>>>>>>>>>>> not reporting
>>>>>>>>>> that back correctly.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Should be straight forward to do by debugging the function
>>>>>>>>>>>> GDBRemoteCommunicationServerPlatform::Handle_qLaunchGDBServer(...)
>>>>>>>>>> in
>>>>>>>>>>>> GDBRemoteCommunicationServerPlatform.cpp and see what is going on
>>>>>>>>>> and
>>>>>>>>>>>> why it is returning 0 as the port.
>>>>>>>>>>>>
>>>>>>>>>>>> Greg
>>>>>>>>>>>>
>>>>>>>>>>>>> On Aug 23, 2017, at 9:44 AM, Hans Wennborg via lldb-dev <lldb-
>>>>>>>>>>>> d...@lists.llvm.org> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> This was marked as an lldb 5.0.0 release blocker since it's a
>>>>>>>>>>>>> regression from 4.0.1: https://bugs.llvm.org/show_bug.cgi?id=34183
>>>>>>>>>>>>>
>>>>>>>>>>>>> lldb-dev: Is there any interest in fixing this bug?
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Fri, Aug 4, 2017 at 10:13 PM, Ramana via lldb-dev
>>>>>>>>>>>>> <lldb-dev@lists.llvm.org> wrote:
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I am trying to remote debug ARM (linux) target from x86 (linux)
>>>>>>>>>>>>>> host and I am getting the following error while trying to launch 
>>>>>>>>>>>>>> a process.
>>>>>>>>>>>>>> The local debugging on ARM works.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> error: connect remote failed (invalid host:port specification:
>>>>>>>>>>>>>> '10.10.2.3')
>>>>>>>>>>>>>> error: process launch failed: invalid host:port specification: 
>>>>>>>>>>>>>> '10.10.2.3'
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> It appears the above error is because the gdb-remote is returning
>>>>>>>>>>>>>> the communication port as zero.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> <  36> send packet: $qLaunchGDBServer;host:svrlin249;#bb
>>>>>>>>>>>>>> <  19> read packet: $pid:298;port:0;#bf
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> What are the possible reasons for the above behavior from
>>>>>>>>>>>>>> gdb-remote and how I could resolve this?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> If it helps, below is the full log.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> (lldb) log enable lldb comm
>>>>>>>>>>>>>> (lldb) log enable gdb-remote packets
>>>>>>>>>>>>>> (lldb) platform select remote-linux
>>>>>>>>>>>>>> Platform: remote-linux
>>>>>>>>>>>>>> Connected: no
>>>>>>>>>>>>>> (lldb) platform connect connect://10.10.2.3:500
>>>>>>>>>>>>>> 0x915bd78 Communication::Communication (name = gdb-remote.client)
>>>>>>>>>>>>>> 0x915bd78 Communication::Disconnect ()
>>>>>>>>>>>>>> 0x915bd78 Communication::Disconnect ()
>>>>>>>>>>>>>> 0x915bd78 Communication::Connect (url = connect://10.10.2.3:500)
>>>>>>>>>>>>>> Socket::TcpConnect (host/port = 10.10.2.3:500) TCPSocket::Connect
>>>>>>>>>>>>>> (host/port = 10.10.2.3:500)
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0xbfcb7433, src_len = 1)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0xbfcb7433, src_len 
>>>>>>>>>>>>>> =
>>>>>>>>>>>>>> 1, flags = 0) => 1 (error = (null))
>>>>>>>>>>>>>> <   1> send packet: +
>>>>>>>>>>>>>> this = 0x0915BD78, dst = 0xBFCB53EC, dst_len = 8192, timeout =
>>>>>>>>>>>>>> 10000 us, connection = 0x0915F578
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0x916022c, src_len = 19)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0x916022c, src_len =
>>>>>>>>>>>>>> 19, flags = 0) => 19 (error = (null))
>>>>>>>>>>>>>> history[1] tid=0x7cbf <   1> send packet: +
>>>>>>>>>>>>>> <  19> send packet: $QStartNoAckMode#b0 this = 0x0915BD78, dst =
>>>>>>>>>>>>>> 0xBFCB51AC, dst_len = 8192, timeout = 6000000 us, connection =
>>>>>>>>>>>>>> 0x0915F578
>>>>>>>>>>>>>> 0x915f608 Socket::Read() (socket = 7, src = 0xbfcb51ac, src_len =
>>>>>>>>>>>>>> 7, flags = 0) => 7 (error = (null))
>>>>>>>>>>>>>> <   1> read packet: +
>>>>>>>>>>>>>> <   6> read packet: $OK#9a
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0xbfcb50f3, src_len = 1)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0xbfcb50f3, src_len 
>>>>>>>>>>>>>> =
>>>>>>>>>>>>>> 1, flags = 0) => 1 (error = (null))
>>>>>>>>>>>>>> <   1> send packet: +
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0x9161ff4, src_len = 13)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0x9161ff4, src_len =
>>>>>>>>>>>>>> 13, flags = 0) => 13 (error = (null)) <  13> send packet:
>>>>>>>>>>>>>> $qHostInfo#9b this = 0x0915BD78, dst = 0xBFCB510C, dst_len = 
>>>>>>>>>>>>>> 8192,
>>>>>>>>>>>>>> timeout =
>>>>>>>>>>>>>> 1000000 us, connection = 0x0915F578
>>>>>>>>>>>>>> 0x915f608 Socket::Read() (socket = 7, src = 0xbfcb510c, src_len =
>>>>>>>>>>>>>> 316, flags = 0) => 316 (error = (null)) < 316> read packet:
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>> $triple:61726d2d2d6c696e75782d676e75656162696866;ptrsize:4;watchpoint
>>>>>>>>>>>>>> _exceptions_received:before;endian:little;os_version:3.10.31;os_bu
>>>>>>>>>>>>>> ild
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>> :332e31302e33312d6c7473692d30323836312d6738303161343066;os_kernel:2
>>>>>>>>>>>> 33
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>> 520534d5020467269204d61792031332031353a35383a3232204953542032303
>>>>>>>>>>>> 136;h
>>>>>>>>>>>>>> ostname:736f
>>>>>>>>>>>>>> 63667067615f617272696135;#0a
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0x915fe9c, src_len = 18)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0x915fe9c, src_len =
>>>>>>>>>>>>>> 18, flags = 0) => 18 (error = (null)) <  18> send packet:
>>>>>>>>>>>>>> $qGetWorkingDir#91 this = 0x0915BD78, dst = 0xBFCB50FC, dst_len =
>>>>>>>>>>>>>> 8192, timeout = 1000000 us, connection = 0x0915F578
>>>>>>>>>>>>>> 0x915f608 Socket::Read() (socket = 7, src = 0xbfcb50fc, src_len =
>>>>>>>>>>>>>> 24, flags = 0) => 24 (error = (null)) <  24> read packet:
>>>>>>>>>>>>>> $2f686f6d652f726f6f74#4b
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0x915fe9c, src_len = 19)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0x915fe9c, src_len =
>>>>>>>>>>>>>> 19, flags = 0) => 19 (error = (null)) <  19> send packet:
>>>>>>>>>>>>>> $qQueryGDBServer#cb this = 0x0915BD78, dst = 0xBFCB531C, dst_len 
>>>>>>>>>>>>>> =
>>>>>>>>>>>>>> 8192, timeout = 1000000 us, connection = 0x0915F578
>>>>>>>>>>>>>> 0x915f608 Socket::Read() (socket = 7, src = 0xbfcb531c, src_len =
>>>>>>>>>>>>>> 7, flags = 0) => 7 (error = (null))
>>>>>>>>>>>>>> <   7> read packet: $E04#a9
>>>>>>>>>>>>>> Platform: remote-linux
>>>>>>>>>>>>>> Triple: arm-*-linux-gnueabihf
>>>>>>>>>>>>>> OS Version: 3.10.31 (3.10.31-ltsi-02861-g801a40f)
>>>>>>>>>>>>>> Kernel: #5 SMP Fri May 13 15:58:22 IST 2016
>>>>>>>>>>>>>> Hostname: socfpga_arria5
>>>>>>>>>>>>>> Connected: yes
>>>>>>>>>>>>>> WorkingDir: /home/root
>>>>>>>>>>>>>> (lldb) file main
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0x91638fc, src_len = 137)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0x91638fc, src_len =
>>>>>>>>>>>>>> 137, flags = 0) => 137 (error = (null)) < 137> send packet:
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>> $qModuleInfo:2f686f6d652f72616d616e616e2f776f726b5f726f6f742f546f545f
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>> 6c6c64622f74657374732f6d61696e;61726d2d2d6c696e75782d656162696866#
>>>>>>>>>>>> f1
>>>>>>>>>>>>>> this = 0x0915BD78, dst = 0xBFCB172C, dst_len = 8192, timeout =
>>>>>>>>>>>>>> 1000000 us, connection = 0x0915F578
>>>>>>>>>>>>>> 0x915f608 Socket::Read() (socket = 7, src = 0xbfcb172c, src_len =
>>>>>>>>>>>>>> 7, flags = 0) => 7 (error = (null))
>>>>>>>>>>>>>> <   7> read packet: $E03#a8
>>>>>>>>>>>>>> Current executable set to 'main' (arm).
>>>>>>>>>>>>>> (lldb) b main
>>>>>>>>>>>>>> Breakpoint 1: where = main`main + 4 at main.c:4, address =
>>>>>>>>>>>>>> 0x000104a0
>>>>>>>>>>>>>> (lldb) run
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0x917bae4, src_len = 36)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0x917bae4, src_len =
>>>>>>>>>>>>>> 36, flags = 0) => 36 (error = (null)) <  36> send packet:
>>>>>>>>>>>>>> $qLaunchGDBServer;host:svrlin249;#bb
>>>>>>>>>>>>>> this = 0x0915BD78, dst = 0xBFCB4FDC, dst_len = 8192, timeout =
>>>>>>>>>>>>>> 10000000 us, connection = 0x0915F578
>>>>>>>>>>>>>> 0x915f608 Socket::Read() (socket = 7, src = 0xbfcb4fdc, src_len =
>>>>>>>>>>>>>> 19, flags = 0) => 19 (error = (null)) <  19> read packet:
>>>>>>>>>>>>>> $pid:298;port:0;#bf
>>>>>>>>>>>>>> 0x92b0a84 Communication::Communication (name = process.stdio)
>>>>>>>>>>>>>> 0x92b0d78 Communication::Communication (name = gdb-remote.client)
>>>>>>>>>>>>>> 0x92b0a84 Communication::Disconnect () Socket::TcpConnect
>>>>>>>>>>>>>> (host/port = 10.10.2.3) TCPSocket::Connect (host/port = 
>>>>>>>>>>>>>> 10.10.2.3)
>>>>>>>>>>>>>> Socket::TcpConnect (host/port = 10.10.2.3) TCPSocket::Connect
>>>>>>>>>>>>>> (host/port = 10.10.2.3) Socket::TcpConnect (host/port = 
>>>>>>>>>>>>>> 10.10.2.3)
>>>>>>>>>>>>>> TCPSocket::Connect (host/port = 10.10.2.3) Socket::TcpConnect
>>>>>>>>>>>>>> (host/port = 10.10.2.3) TCPSocket::Connect (host/port = 
>>>>>>>>>>>>>> 10.10.2.3)
>>>>>>>>>>>>>> Socket::TcpConnect (host/port = 10.10.2.3) TCPSocket::Connect
>>>>>>>>>>>>>> (host/port = 10.10.2.3) Socket::TcpConnect (host/port = 
>>>>>>>>>>>>>> 10.10.2.3)
>>>>>>>>>>>>>> TCPSocket::Connect (host/port = 10.10.2.3) Socket::TcpConnect
>>>>>>>>>>>>>> (host/port = 10.10.2.3) TCPSocket::Connect (host/port = 
>>>>>>>>>>>>>> 10.10.2.3)
>>>>>>>>>>>>>> Socket::TcpConnect (host/port = 10.10.2.3) ..................
>>>>>>>>>>>>>> ..................
>>>>>>>>>>>>>> ..................
>>>>>>>>>>>>>> TCPSocket::Connect (host/port = 10.10.2.3) Socket::TcpConnect
>>>>>>>>>>>>>> (host/port = 10.10.2.3) TCPSocket::Connect (host/port = 
>>>>>>>>>>>>>> 10.10.2.3)
>>>>>>>>>>>>>> Socket::TcpConnect (host/port = 10.10.2.3) TCPSocket::Connect
>>>>>>>>>>>>>> (host/port = 10.10.2.3) Socket::TcpConnect (host/port = 
>>>>>>>>>>>>>> 10.10.2.3)
>>>>>>>>>>>>>> TCPSocket::Connect (host/port = 10.10.2.3) Socket::TcpConnect
>>>>>>>>>>>>>> (host/port = 10.10.2.3) TCPSocket::Connect (host/port = 
>>>>>>>>>>>>>> 10.10.2.3)
>>>>>>>>>>>>>> Socket::TcpConnect (host/port = 10.10.2.3) TCPSocket::Connect
>>>>>>>>>>>>>> (host/port = 10.10.2.3)
>>>>>>>>>>>>>> error: connect remote failed (invalid host:port specification:
>>>>>>>>>>>>>> '10.10.2.3')
>>>>>>>>>>>>>> 0x915bd78 Communication::Write (src = 0x92b38c4, src_len = 27)
>>>>>>>>>>>>>> connection = 0x915f578
>>>>>>>>>>>>>> 0x915f608 Socket::Write() (socket = 7, src = 0x92b38c4, src_len =
>>>>>>>>>>>>>> 27, flags = 0) => 27 (error = (null)) <  27> send packet:
>>>>>>>>>>>>>> $qKillSpawnedProcess:298#8b this = 0x0915BD78, dst = 0xBFCB509C,
>>>>>>>>>>>>>> dst_len = 8192, timeout = 1000000 us, connection = 0x0915F578
>>>>>>>>>>>>>> 0x915f608 Socket::Read() (socket = 7, src = 0xbfcb509c, src_len =
>>>>>>>>>>>>>> 7, flags = 0) => 7 (error = (null))
>>>>>>>>>>>>>> <   7> read packet: $E0a#d6
>>>>>>>>>>>>>> error: process launch failed: invalid host:port specification: 
>>>>>>>>>>>>>> '10.10.2.3'
>>>>>>>>>>>>>> (lldb)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>> Ramana
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> lldb-dev mailing list
>>>>>>>>>>>>>> lldb-dev@lists.llvm.org
>>>>>>>>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> lldb-dev mailing list
>>>>>>>>>>>>> lldb-dev@lists.llvm.org
>>>>>>>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> lldb-dev mailing list
>>>>>>>>>>>> lldb-dev@lists.llvm.org
>>>>>>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> lldb-dev mailing list
>>>>>>> lldb-dev@lists.llvm.org
>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> lldb-dev mailing list
>>>>> lldb-dev@lists.llvm.org
>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>>
>>
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to