public inbox for cygwin-developers@cygwin.com
 help / color / mirror / Atom feed
From: Corinna Vinschen <corinna-cygwin@cygwin.com>
To: cygwin-developers@cygwin.com
Subject: Re: 3.3.0: Possible regression in cygwin DLL (Win10); fixed in snapshot
Date: Thu, 11 Nov 2021 10:52:33 +0100	[thread overview]
Message-ID: <YYzn4ba59UJ/i5+2@calimero.vinschen.de> (raw)
In-Reply-To: <YYwtEZY+7HdHYTov@calimero.vinschen.de>

On Nov 10 21:35, Corinna Vinschen wrote:
> On Nov 10 22:30, Takashi Yano wrote:
> > On Wed, 10 Nov 2021 11:34:25 +0100
> > Corinna Vinschen wrote:
> > > On Nov 10 17:30, Takashi Yano wrote:
> > > > I tried to implement your idea, however, I noticed that
> > > > NtQueryObject(ObjectNameInformation) call in
> > > > get_query_hdl_per_process() is blocked while reading the
> > > > pipe if FIPE_SYNCHRONOUS_IO_NONALERT is set and pipe is
> > > > in blocking mode.
> > > > 
> > > > So I would like to propose alternative implementation with
> > > > FILE_SYNCHRONOUS_IO_NONALERT being set. Please have a look
> > > > at attached patch. With this patch, pipe itself in read side
> > > > is always set to nonblocking mode and simulate the blocking
> > > > behaviour in raw_read(). This can eliminate creating thread
> > > > for reading as well as calling CancelSynchronousIo().
> > > > 
> > > > Note that setting FILE_SYNCHRONOUS_IO_NONALERT only for read
> > > > pipe seems to be enough for C# programs.
> > > > 
> > > > What do you think of this implementation?
> > > 
> > > Can you push this to the topic/pipe branch for playing?  I updated
> > > the branch to current master.
> > 
> > Thanks. I have just pushed the experimental patch to topic/pipe.
> > Please try. If something wrong, please point it out.
> 
> Great, I'll have a look.  Ken, you're looking as well, right?

What I like with this approach is that it actually simplifies the code.

What I don't like much is that we are now running a busy loop, but the
NtQueryObject hang is... disappointing, to say the least.  What about
using another function like NtQueryInformationFile(FileNameInformation)?
I bet this hangs, too, right?  

Btw., while looking I was wondering if get_query_hdl_per_process and
get_query_hdl_per_system could be replaced by a function utilizing
NtQueryInformationFile(FileProcessIdsUsingFileInformation).  This
supposedly returns all process ids of processes having an open handle to
this file.  This could be quite a bit faster than the other two
functions, ideally.  Per MSDN, FileProcessIdsUsingFileInformation
exists since Vista.


Corinna

  parent reply	other threads:[~2021-11-11  9:52 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAEv6GOB8PXHgHoz7hdJy6Bia2GWEmUDnTd252gTGinz2vuv=hA@mail.gmail.com>
     [not found] ` <20211105123950.b118a7f2ba38379764df4c12@nifty.ne.jp>
     [not found]   ` <CAEv6GOA-y58YrftXgEgFrjqtOTHmfdu2Vrq76Lwn0suZpZ=U9w@mail.gmail.com>
     [not found]     ` <20211105170542.96ce6dd4ca32880ddfddd660@nifty.ne.jp>
     [not found]       ` <CAEv6GODiM88Xfhk9R3AcEW6UTYSzACzYe4C0gPoTYm=u9ZTqRQ@mail.gmail.com>
     [not found]         ` <20211106044116.698b465a5d8ed6ce2cc75c99@nifty.ne.jp>
     [not found]           ` <2cfa5de7-3b95-9062-4572-f36d304bc916@cornell.edu>
2021-11-06  6:10             ` Takashi Yano
2021-11-06 11:42               ` Corinna Vinschen
2021-11-06 12:02                 ` Corinna Vinschen
2021-11-06 14:13                   ` Takashi Yano
2021-11-06 17:20                     ` Corinna Vinschen
2021-11-07  3:01                       ` Takashi Yano
2021-11-06 16:38                 ` Ken Brown
2021-11-06 17:20                   ` Corinna Vinschen
2021-11-07  3:46                   ` Takashi Yano
2021-11-07 22:20                     ` Ken Brown
2021-11-08  8:23                       ` Takashi Yano
2021-11-08  9:46                         ` Corinna Vinschen
2021-11-10  8:30                 ` Takashi Yano
2021-11-10 10:34                   ` Corinna Vinschen
2021-11-10 13:30                     ` Takashi Yano
2021-11-10 20:35                       ` Corinna Vinschen
2021-11-10 21:32                         ` Ken Brown
2021-11-11 16:11                           ` Ken Brown
2021-11-12  8:38                             ` Takashi Yano
2021-11-16 23:46                             ` Takashi Yano
2021-11-17  8:10                               ` Takashi Yano
2021-11-17 15:12                                 ` Ken Brown
2021-11-11  9:52                         ` Corinna Vinschen [this message]
2021-11-11 11:12                           ` Takashi Yano
2021-11-11 11:33                             ` Corinna Vinschen
2021-11-11 12:02                               ` Takashi Yano
2021-11-11 13:20                                 ` Takashi Yano
2021-11-11 16:07                                   ` Corinna Vinschen
2021-11-12  8:33                             ` Takashi Yano
2021-11-12 10:02                               ` Corinna Vinschen
2021-12-12 13:26                                 ` Takashi Yano
2021-12-12 13:36                                   ` Ken Brown
2021-12-13 11:15                                     ` Takashi Yano

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=YYzn4ba59UJ/i5+2@calimero.vinschen.de \
    --to=corinna-cygwin@cygwin.com \
    --cc=cygwin-developers@cygwin.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).