public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: John Darrington <john@darrington.wattle.id.au>
To: Pedro Alves <palves@redhat.com>
Cc: John Darrington <john@darrington.wattle.id.au>,
	gdb-patches@sourceware.org
Subject: Re: [PATCH] Allow remote debugging over a local domain socket
Date: Tue, 02 Oct 2018 10:16:00 -0000	[thread overview]
Message-ID: <20181002101505.nsmr46li462bfdwi@jocasta.intra> (raw)
In-Reply-To: <8f22580d-fbd2-e1a8-f0f1-10d3c650cdf9@redhat.com>

Hi Pedro, 

Nice to hear from you.

On Mon, Oct 01, 2018 at 08:45:52PM +0100, Pedro Alves wrote:

     >      Can you clarify how unix sockets are different from tcp sockets here?
     > 
     > 1.  Unix sockets have a (almost) infinite choice of connection points.
     > Whereas TCP sockets you're limited by the port number (usually 16 bits).
     > 
     > 2.  One can never be sure that a TCP port doesn't already have something
     > listening on it.  So starting a server cannot be guaranteed to succeed.
     > Whereas with a Unix socket you can create the directory where the file
     > entry is to reside and know it'll be empty.
     > 
     > 3.  If a server listening on a TCP socket crashes, then that port number
     > will be unavailable until the kernel's timeout expires (usually after ~
     > 2 minutes).  You cannot restart the server until that happens.   There
     > is no way (outside of unloading the kernel's TCP/IP stack) to force the
     > port to become a available again.  With Unix sockets, you simply unlink
     > the filename.
     > 
     > 4.  Unix sockets can only be used for communication between processes on
     > the same host.
     
     What I meant with "different ... here" was, how are unix domain sockets
     different from tcp sockets with respect to:
     
      "This is because there is a race condition in a server between the 
      bind and listen syscalls.  GDB must not attempt to connect until
      listen has returned successfully."
     
     If GDB attempts to connect to a tcp gdbserver before it listens/binds,
     then the connection will fail too.  Except, GDB retries the
     connection, but that would be the case with unix domain sockets
     too, no?

You are right.  There is no difference in this respect.  My only reason
for mentioning it was that it is the only problem affecting concurrent
gdb/gdbserver sessions which is *not* solved by the use of unix domain
sockets.
     
     > 
     > I don't mind. If you want me to copy the macro from there, I can do
     > that.
     
     Please do.

Done.
     
     > My first choice was ser-unix.c but that is already taken.   I really
     > don't have a preference.  What would you prefer?  ser-local.c perhaps?
     > 
     
     As I had mentioned before, if "unix" is taken, I'd prefer "ser-uds.c", for
     "Unix Domain Socket", and uds_ as function/symbol prefix.  I think UDS
     is quite established and clearer than "local".  I get where it comes
     from, but note how "local" isn't even ever mentioned anywhere in
      <https://en.wikipedia.org/wiki/Unix_domain_socket>,
     for example.

I don't remember you suggesting ser-uds.c before. But no problem - I
will make that change.

     
Thanks for your comments.  I will attend to them all tonight and check
it in.

J'

      reply	other threads:[~2018-10-02 10:16 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-29  7:05 Remote debugging over local domain sockets? John Darrington
2018-08-29 15:17 ` Tom Tromey
2018-08-29 15:28   ` John Darrington
2018-08-29 15:39     ` Tom Tromey
2018-08-31 10:18       ` [PATCH] Allow remote debugging over a local domain socket John Darrington
2018-08-31 14:59         ` Eli Zaretskii
2018-08-31 15:10           ` John Darrington
2018-08-31 17:50             ` Eli Zaretskii
2018-08-31 15:10         ` Tom Tromey
2018-08-31 15:12           ` John Darrington
2018-08-31 16:01         ` Pedro Alves
2018-08-31 16:40           ` John Darrington
2018-09-03 13:19             ` Pedro Alves
2018-09-03 18:49               ` John Darrington
2018-10-01 19:45                 ` Pedro Alves
2018-10-02 10:16                   ` John Darrington [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181002101505.nsmr46li462bfdwi@jocasta.intra \
    --to=john@darrington.wattle.id.au \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).