X-Spam-Check-By: sourceware.org
Message-ID: <459133CB.3080102@ukf.net>
Date: Tue, 26 Dec 2006 14:38:03 +0000
From: Max Bowsher <maxb1@ukf.net>
Reply-To: cygwin@cygwin.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050923 Thunderbird/1.0.7
MIME-Version: 1.0
To: cygwin@cygwin.com
Subject: Re: Updated cygwin dlls cause unnecessary reboot on NT
References: <458EE598.3010404@aim.com> <458F31B1.6050804@byu.net> <458F81CC.3090500@tlinx.org> <458FDC4E.9040505@cygwin.com> <458FEC2E.70705@tlinx.org> <Pine.GSO.4.63.0612251346240.27982@access1.cims.nyu.edu> <45902BC4.50803@tlinx.org> <4590BD4E.5020905@cygwin.com> <45910426.9030603@tlinx.org>
In-Reply-To: <45910426.9030603@tlinx.org>
OpenPGP: id=C0F2C580
Content-Type: multipart/signed; micalg=pgp-sha1;  protocol="application/pgp-signature";  boundary="------------enig709F3012DBA7802EA724A330"
X-IsSubscribed: yes
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com

--------------enig709F3012DBA7802EA724A330
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Linda Walsh wrote:
>    The fix I proposed has nothing to do with the cygwin1.dll.  As has
> been covered previously, since cygwin1.dll and a few other libs are
> part of the cygwin "kernel", special handling may be needed to upgrade
> those dll's.  What can be fixed is the installation of .exe and .dll
> files for
> applications.  The behavior of those should be the same as replacing
> in-use .so's and executables on *nix.

I believe there is a critical element you have missed.

In order to perform the rather miraculous emulation of fork(), Cygwin
needs to reload all the same DLLs that are operating in one process into
another newly created process. Updating the DLL files on disk whilst
processes are using them prevents this from happening.

For a simple demonstration of this:

* Start a bash shell
* Rename any of the DLLs used by bash to something else
* Try to execute any non-builtin command
* See the fork failure message


Could this be worked around? Perhaps.
Is it likely to happen? No, the benefit-to-work ratio is too low.

Max.


--------------enig709F3012DBA7802EA724A330
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iD8DBQFFkTPUfFNSmcDyxYARAgLhAJ0V4U60zSjgIpAREjSqXBqMTdJWWgCg13Co
Q9zfya3OZTRceZU/RfsEso8=
=HnEc
-----END PGP SIGNATURE-----

--------------enig709F3012DBA7802EA724A330--
