public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Tom Honermann <thonermann@coverity.com>
To: <cygwin@cygwin.com>
Subject: Re: Intermittent failures retrieving process exit codes - snapshot test requested
Date: Fri, 21 Dec 2012 23:09:00 -0000	[thread overview]
Message-ID: <50D4EBFE.6090309@coverity.com> (raw)
In-Reply-To: <50D4E144.706@gmail.com>

On 12/21/2012 05:23 PM, marco atzeri wrote:
> On 12/21/2012 8:36 PM, Christopher Faylor wrote:
>> I tested this lightly on Windows 7 and 32-bit XP but it would be nice to
>> hear if multi-threaded things like X work on other platforms too.
>>
>> If you test a snapshot, note that I'm still tracking down Ken Brown's
>> reporte emacs regression in recent snapshots so that will still be
>> broken.
>>
>> cgf
>>
>
> I think the Xserver doesn't like it.
> on 20121221 it freezes on start on W7/64
> no issue on 20121218

I was worried about this possibility after looking at the code changes. 
  But, I haven't had to a chance to test adequately yet.  I would expect 
indefinite blocking in dll_entry() may prevent unloading DLLs.  For 
example, calls to dll_entry() for DLL_PROCESS_DETACH may get blocked.

It looks to me like the changes made are insufficient to prevent the 
race.  For example, this won't address the case where an exiting thread 
releases the process lock acquired in dll_entry() before a thread 
exiting the process acquires it in pinfo::exit().  Both threads could 
still end up in an ExitThread() vs ExitProcess()/TerminateProcess() 
race.  However, this is only true for threads whose exits are not 
predicated upon an action taken by the process exiting thread after it 
has acquired the process lock in pinfo::exit().  And since the exiting 
thread must be the last thread of the process in order to hit the issue, 
this may not be a concern.

I'm not sure that a general workaround for this issue is feasible for 
all possible threads.  At least, not without hooking the Terminate* and 
Exit* Win32 APIs.  My gut tells me that a general solution requires 
waiting for thread handles to be signaled, but I haven't thought it 
completely through yet.

It looks like Chris reverted the change and checked in a new update.  I 
haven't looked at those changes yet.

Tom.


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

  reply	other threads:[~2012-12-21 23:09 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-07 19:55 Intermittent failures retrieving process exit codes Tom Honermann
2012-12-07 21:54 ` Tom Honermann
2012-12-07 23:07 ` bartels
2012-12-21  6:30   ` Tom Honermann
2012-12-21 10:33     ` Corinna Vinschen
2012-12-21 12:15       ` Nick Lowe
2012-12-21 19:45         ` Tom Honermann
2012-12-22  3:09           ` Nick Lowe
2012-12-21 16:10       ` Christopher Faylor
2012-12-21 17:02         ` Corinna Vinschen
2012-12-21 19:36           ` Intermittent failures retrieving process exit codes - snapshot test requested Christopher Faylor
2012-12-21 20:37             ` Daniel Colascione
2012-12-21 22:23             ` marco atzeri
2012-12-21 23:09               ` Tom Honermann [this message]
2012-12-22  2:53                 ` Christopher Faylor
2012-12-22  2:57                   ` Tom Honermann
2012-12-22  2:49               ` Christopher Faylor
2012-12-22  3:14                 ` Christopher Faylor
2012-12-22  9:06                   ` marco atzeri
2012-12-22 17:50                     ` Christopher Faylor
2012-12-23 16:56                       ` Christopher Faylor
2012-12-23 18:54                         ` marco atzeri
2012-12-27 20:50                         ` Tom Honermann
2012-12-29 21:57                           ` Christopher Faylor
2013-01-01  1:45                             ` Tom Honermann
2013-01-01  5:36                               ` Christopher Faylor
2013-01-02 19:15                                 ` Tom Honermann
2013-01-02 20:48                                   ` Christopher Faylor
2013-01-02 20:53                                     ` Daniel Colascione
2013-01-02 21:41                                       ` Christopher Faylor
2013-01-02 21:25                                     ` Tom Honermann
2013-01-15 22:17                                       ` Intermittent failures with ctrl-c (was: retrieving process exit codes) Tom Honermann
2013-01-16  2:04                                         ` Christopher Faylor
2013-01-16 16:38                                           ` Intermittent failures with ctrl-c Tom Honermann
2013-01-16 16:53                                             ` marco atzeri
2013-01-16 17:42                                               ` Tom Honermann
2013-01-16 18:05                                                 ` Earnie Boyd
2013-01-16 18:51                                                   ` Tom Honermann
2013-01-16 18:59                                                     ` Christopher Faylor
2013-01-16 20:19                                                       ` Tom Honermann
2013-01-16 22:23                                                         ` Christopher Faylor
2013-01-18 20:12                                                           ` Tom Honermann
2013-01-19  5:58                                                             ` Christopher Faylor
2013-01-20 22:09                                                               ` Tom Honermann
2013-01-23  3:20                                                                 ` Tom Honermann
2013-01-23  5:27                                                                   ` Christopher Faylor
2013-01-23 18:18                                                                     ` Tom Honermann
2013-01-23 18:35                                                                       ` Christopher Faylor
2013-01-24  4:12                                                                         ` Tom Honermann
2013-01-16 19:14                                             ` Christopher Faylor
2013-01-16 20:24                                               ` Tom Honermann
2012-12-21 20:01     ` Intermittent failures retrieving process exit codes Tom Honermann
2013-11-14  4:02     ` Tom Honermann
2013-11-14  9:20       ` Corinna Vinschen
2013-11-14 15:21         ` Tom Honermann
2013-11-15 18:53       ` Denis Excoffier
2013-11-15 19:21         ` Christopher Faylor
2013-11-17 13:30           ` Denis Excoffier
2013-11-15 22:15         ` Tom Honermann
2013-11-25 19:59         ` Lasse Collin
2013-11-25 23:12           ` Antivirus strikes back (probably) (Was: Intermittent failures retrieving process exit codes) Denis Excoffier
2013-11-26 21:09             ` Denis Excoffier
2013-11-26 21:09             ` Denis Excoffier
2013-11-26 23:36               ` Christopher Faylor
2013-12-01 13:24             ` Lasse Collin

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=50D4EBFE.6090309@coverity.com \
    --to=thonermann@coverity.com \
    --cc=cygwin@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).