all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Alain Schneble <a.s@realize.ch>
To: Lars Ingebrigtsen <larsi@gnus.org>
Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
Subject: Re: Asynchronous DNS
Date: Thu, 4 Feb 2016 09:18:57 +0100	[thread overview]
Message-ID: <8637t8opla.fsf@realize.ch> (raw)
In-Reply-To: <87lh71nriy.fsf@gnus.org> (Lars Ingebrigtsen's message of "Thu, 04 Feb 2016 13:22:29 +1100")

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>> If we introduce such a thread, its code needs to be carefully audited
>> for the above-mentioned gotchas.  E.g., passing to it a C pointer to a
>> contents of a Lisp string is probably unsafe.  It's not rocket science
>> to DTRT in this case (we already do that quite a lot on MS-Windows),
>> it just requires very careful programming and code review.
>
> Sure.  But I think that for the getaddrinfo_a thing, it really is that
> simple.  Everything is allocated and freed in the main thread, the
> address lookup doesn't need to access anything Lispy, etc.  (This is how
> the structure of the getaddrinfo_a library already works.)
>

Just for the record, getaddrinfo_a creates at least one detached worker
thread to synchronously call getaddrinfo.  If all threads are busy, it
will spawn new threads.  Idle workers will die eventually after some
period of inactivity.

So far so good.

>Alain Schneble <a.s@realize.ch> writes:
>
>But still, I wonder why there is no call to `gai_cancel' at all.

What I meant with this is that, when working with external resources,
the caller should explicitly account for the "unusual" (e.g. shutdown)
cases as well, explicitly, IMHO.  Given the case where any number of
async DNS requests are still pending and the (OS) process is to be
terminated, it should explicitly cancel all pending requests before its
last heartbeat.  For me, this sounds like best practice.  I understand
that it works properly without it in this async-DNS-feature case.  But
still -- maybe due to my zero knowledge about glibc -- I see the DNS
resolve library as a black box.  It could well have started let's say a
new OS process which does the resolve and which would survive our
"initiator" OS process if the requests are not explicitly cancelled
before termination.  One could argue that this would then be a bug, but
maybe not. I'm happy to learn that such things won't ever happen in
glibc by convention.

Furthermore, in your proposal, processes with pending DNS requests are
maintained in a separate list `dns_processes'.  If a LISP process gets
deleted by a call to `delete-process', and DNS requests are still
pending for it, it might be that `connect_network_socket' will be called
even though the process has been deleted.  Shouldn't
`deactivate_process' cancel any pending requests for that process?  Or
do we just forget about this probably "theoretical" case?

Alain




  reply	other threads:[~2016-02-04  8:18 UTC|newest]

Thread overview: 190+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-23 13:50 Asynchronous DNS Lars Magne Ingebrigtsen
2016-01-23 14:56 ` Elias Mårtenson
2016-01-24 21:17   ` Lars Magne Ingebrigtsen
2016-01-25  8:58     ` Elias Mårtenson
2016-01-25 15:51       ` Eli Zaretskii
2016-01-25 17:15         ` Elias Mårtenson
2016-01-25 17:26           ` Eli Zaretskii
2016-01-23 21:42 ` Paul Eggert
2016-01-24 13:53   ` Lars Magne Ingebrigtsen
2016-01-24 14:01     ` Lars Magne Ingebrigtsen
2016-01-24 14:14       ` Lars Magne Ingebrigtsen
2016-01-24 19:58         ` Paul Eggert
2016-01-24  4:49 ` Stefan Monnier
2016-01-24 13:56   ` Lars Magne Ingebrigtsen
2016-01-24 17:16     ` Lars Magne Ingebrigtsen
2016-01-25  2:06       ` Stefan Monnier
2016-01-26 19:48 ` John Wiegley
2016-01-26 22:05 ` Florian Weimer
2016-01-30  0:11 ` Lars Ingebrigtsen
2016-01-30  2:39   ` Alex Dunn
2016-01-30  2:58     ` Lars Ingebrigtsen
2016-01-30  4:11       ` Alex Dunn
2016-01-30  4:34         ` Lars Ingebrigtsen
2016-02-01  3:55           ` Lars Ingebrigtsen
2016-01-30  7:23   ` Eli Zaretskii
2016-01-30  7:46     ` Lars Ingebrigtsen
2016-01-30  8:46       ` Eli Zaretskii
2016-01-30 22:46         ` Lars Ingebrigtsen
2016-01-31  6:12       ` Ken Raeburn
2016-02-01  2:46         ` Lars Ingebrigtsen
2016-01-31 14:03   ` Andy Moreton
2016-02-01  2:08     ` Lars Ingebrigtsen
2016-02-01  2:36       ` Lars Ingebrigtsen
2016-02-01 18:51         ` Eli Zaretskii
2016-02-02  1:15           ` Lars Ingebrigtsen
2016-02-02  3:38             ` Eli Zaretskii
2016-02-02  3:48               ` Lars Ingebrigtsen
2016-02-02 13:25                 ` Stefan Monnier
2016-02-02 16:24                   ` Eli Zaretskii
2016-02-02 17:11                     ` Stefan Monnier
2016-02-02 16:12                 ` Eli Zaretskii
2016-02-03  0:42                   ` Lars Ingebrigtsen
2016-02-03 15:49                     ` Eli Zaretskii
2016-02-04  2:22                       ` Lars Ingebrigtsen
2016-02-04  8:18                         ` Alain Schneble [this message]
2016-02-04  8:55                           ` Lars Ingebrigtsen
2016-02-04 10:13                             ` Alain Schneble
2016-02-05  2:08                               ` Lars Ingebrigtsen
2016-02-05  7:19                                 ` Eli Zaretskii
2016-02-05  7:32                                   ` Lars Ingebrigtsen
2016-02-13 23:47                                     ` Alain Schneble
2016-02-14  2:22                                       ` Lars Ingebrigtsen
2016-02-14 11:19                                         ` Alain Schneble
2016-02-14 16:40                                           ` Eli Zaretskii
2016-02-16 21:37                                             ` Alain Schneble
2016-02-20  1:28                                               ` Lars Ingebrigtsen
2016-02-20 17:55                                                 ` Paul Eggert
2016-02-20 20:18                                                   ` Alain Schneble
2016-02-20 20:33                                                     ` Paul Eggert
2016-02-21 10:29                                                       ` Alain Schneble
2016-02-26 23:54                                                         ` YAMAMOTO Mitsuharu
2016-02-27  3:57                                                           ` Lars Ingebrigtsen
2016-02-27  9:22                                                             ` Alain Schneble
2016-02-28  4:43                                                               ` Lars Ingebrigtsen
2016-02-28  9:44                                                                 ` Andreas Schwab
2016-02-29  2:59                                                                   ` Lars Ingebrigtsen
2016-02-29  3:30                                                                     ` Lars Ingebrigtsen
2016-02-29  8:41                                                                       ` Andreas Schwab
2016-02-20 19:31                                                 ` Alain Schneble
2016-02-20 19:57                                                   ` Alain Schneble
2016-02-21  2:36                                                     ` Lars Ingebrigtsen
2016-02-21  3:03                                                       ` Lars Ingebrigtsen
2016-02-21 18:55                                                         ` Alain Schneble
2016-02-21 20:23                                                           ` Eli Zaretskii
2016-02-22  2:15                                                             ` Lars Ingebrigtsen
2016-02-22  3:39                                                               ` Eli Zaretskii
2016-02-22  4:03                                                                 ` Lars Ingebrigtsen
2016-02-22  5:45                                                                   ` Lars Ingebrigtsen
2016-02-22  2:07                                                           ` Lars Ingebrigtsen
2016-02-24  6:26                                                             ` Lars Ingebrigtsen
2016-02-24  6:29                                                               ` Paul Eggert
2016-02-24  6:52                                                                 ` Lars Ingebrigtsen
2016-02-24  8:27                                                               ` John Wiegley
2016-02-21 19:35                                                         ` Alain Schneble
2016-02-22  2:01                                                           ` Lars Ingebrigtsen
2016-02-20 10:57                                               ` Eli Zaretskii
2016-02-16  2:09                                       ` Lars Ingebrigtsen
2016-02-05  9:37                                   ` Alain Schneble
2016-02-04 16:30                         ` Eli Zaretskii
2016-02-05  2:31                           ` Lars Ingebrigtsen
2016-02-05  7:20                             ` Eli Zaretskii
2016-02-03  2:49                   ` Lars Ingebrigtsen
2016-02-02  6:41             ` Alain Schneble
2016-02-02  7:06               ` Lars Ingebrigtsen
2016-02-02  7:49                 ` Alain Schneble
2016-02-02 21:27                   ` Alain Schneble
2016-02-03  0:22                   ` Lars Ingebrigtsen
2016-02-03 10:22                     ` Yuri Khan
2016-02-04  0:18                       ` Lars Ingebrigtsen
2016-02-01 11:58       ` Andy Moreton
2016-02-01 19:10         ` Eli Zaretskii
2016-02-01 22:18           ` Andy Moreton
2016-02-02  1:54         ` Lars Ingebrigtsen
2016-02-02  2:05           ` YAMAMOTO Mitsuharu
2016-02-02  2:18             ` Lars Ingebrigtsen
2016-02-02  3:42           ` Eli Zaretskii
2016-02-03  0:50             ` Lars Ingebrigtsen
2016-02-03  2:43               ` Lars Ingebrigtsen
2016-02-03 15:50               ` Eli Zaretskii
2016-02-04  2:25                 ` Lars Ingebrigtsen
2016-02-04 16:31                   ` Eli Zaretskii
2016-02-05  2:32                     ` Lars Ingebrigtsen
2016-02-05  7:21                       ` Eli Zaretskii
2016-02-05  7:33                         ` Lars Ingebrigtsen
2016-02-06  7:49                           ` Lars Ingebrigtsen
2016-02-06  8:19                             ` Eli Zaretskii
2016-02-07  0:34                               ` Alain Schneble
2016-02-07  1:38                                 ` Lars Ingebrigtsen
2016-02-07 11:41                                   ` Alain Schneble
2016-02-07 19:16                                     ` Eli Zaretskii
2016-02-07 20:24                                       ` Alain Schneble
2016-02-08  1:55                                     ` Lars Ingebrigtsen
2016-02-08  3:40                                       ` Lars Ingebrigtsen
2016-02-08  7:40                                       ` Alain Schneble
2016-02-08  7:52                                         ` Lars Ingebrigtsen
2016-02-08  8:10                                           ` Alain Schneble
2016-02-09  0:37                                             ` Lars Ingebrigtsen
2016-02-09  9:02                                               ` Alain Schneble
2016-02-09 13:46                                                 ` Lars Ingebrigtsen
2016-02-09 17:00                                                 ` Eli Zaretskii
2016-02-09 20:43                                                   ` Alain Schneble
2016-02-09 20:48                                                     ` Eli Zaretskii
2016-02-09 23:22                                                     ` Lars Ingebrigtsen
2016-02-10 10:39                                                       ` Alain Schneble
2016-02-12  2:15                                                         ` Lars Ingebrigtsen
2016-02-12 10:12                                                           ` Alain Schneble
2016-02-13  4:04                                                             ` Lars Ingebrigtsen
2016-02-13 10:16                                                               ` Alain Schneble
2016-02-14  2:20                                                                 ` Lars Ingebrigtsen
2016-02-14  5:56                                                                   ` Eli Zaretskii
2016-02-14  7:01                                                                     ` Lars Ingebrigtsen
2016-02-14 13:56                                                                       ` Stefan Monnier
2016-02-15  0:19                                                                         ` Alain Schneble
2016-02-15  4:22                                                                         ` Lars Ingebrigtsen
2016-02-14 16:32                                                                       ` Eli Zaretskii
2016-02-15  0:14                                                                         ` Alain Schneble
2016-02-15  3:41                                                                           ` Eli Zaretskii
2016-02-15  4:30                                                                             ` Lars Ingebrigtsen
2016-02-15  0:02                                                                       ` Alain Schneble
2016-02-15  4:39                                                                         ` Lars Ingebrigtsen
2016-02-15  6:14                                                                           ` Lars Ingebrigtsen
2016-02-15  6:25                                                                             ` Lars Ingebrigtsen
2016-02-15 10:55                                                                             ` Eli Zaretskii
2016-02-15 12:01                                                                               ` Andreas Schwab
2016-02-15 13:50                                                                                 ` Eli Zaretskii
2016-02-16  2:26                                                                               ` Lars Ingebrigtsen
2016-02-15 10:50                                                                           ` Eli Zaretskii
2016-02-15 11:06                                                                             ` Alain Schneble
2016-02-15 13:49                                                                               ` Eli Zaretskii
2016-02-15 15:04                                                                                 ` Alain Schneble
2016-02-15 16:40                                                                                   ` Alain Schneble
2016-02-16  2:13                                                                                     ` Lars Ingebrigtsen
2016-02-16  6:48                                                                                       ` Alain Schneble
2016-02-15 18:13                                                                           ` Alain Schneble
2016-02-12 10:35                                                           ` Andreas Schwab
2016-02-12 11:37                                                             ` Alain Schneble
2016-02-08 18:11                                           ` Eli Zaretskii
2016-02-09  0:47                                             ` Lars Ingebrigtsen
2016-02-09 16:56                                               ` Eli Zaretskii
2016-02-08 10:43                                       ` Andreas Schwab
2016-02-08 11:55                                         ` Alain Schneble
2016-02-08 12:55                                           ` Andreas Schwab
2016-02-08 14:25                                             ` Alain Schneble
2016-02-08 14:31                                               ` Andreas Schwab
2016-02-09  0:40                                                 ` Lars Ingebrigtsen
2016-02-09  9:15                                                   ` Alain Schneble
2016-02-09  9:35                                                     ` Alain Schneble
2016-02-07 15:55                                 ` Eli Zaretskii
2016-02-07 17:45                                   ` Alain Schneble
2016-02-08  2:03                                   ` Lars Ingebrigtsen
2016-02-08 15:56                                     ` John Wiegley
2016-02-08 20:30                                       ` Rasmus
2016-02-09  0:34                                       ` Lars Ingebrigtsen
2016-02-08 18:22                                     ` Eli Zaretskii
2016-02-07  1:35                               ` Lars Ingebrigtsen
2016-02-07 16:07                                 ` Eli Zaretskii
2016-02-08  2:05                                   ` Lars Ingebrigtsen
2016-02-08 18:20                                     ` Eli Zaretskii
2016-02-07 17:27                             ` John Wiegley
2016-02-08  1:26                               ` Lars Ingebrigtsen

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=8637t8opla.fsf@realize.ch \
    --to=a.s@realize.ch \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=larsi@gnus.org \
    /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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.