delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/10/25/21:58:31

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <435EE2BE.86691C8F@dessent.net>
Date: Tue, 25 Oct 2005 18:58:22 -0700
From: Brian Dessent <brian AT dessent DOT net>
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: cygwin-setup & rebaseall
References: <SERRANO4A2DreBBsQwY0000021e AT SERRANO DOT CAM DOT ARTIMI DOT COM> <Pine DOT LNX DOT 4 DOT 64 DOT 0510251143120 DOT 10534 AT asterix>
X-IsSubscribed: yes
Reply-To: cygwin AT cygwin DOT com

Satish Balay wrote:

> - open a dialog box with a message:
>  "some packages that require 'rebaseall' are updated. This operation
>  cannot be done at this time due to active cygwin processes. Please
>  reboot, shutdown cygwin services, and run 'rebaseall' from 'ash'."

The thing is, you can't just do a "partial" rebaseall.  If you update
just one DLL, you can't just pick a new base address for that one DLL,
you have to start over and reassign all new base addresses to every
DLL.  This is because the current algorithm for choosing the base
addresses just packs them together back to back, so adding/modifying one
could potentially cause all those below to have to be moved.  You can
get around this by setting up some kind of registry of assigned base
addresses, or treating the problem like a heap, but that get
extraordinarily more complex because you have to maintain state.

This is why the whole rebasing method is not scaleable and why we should
really be aiming to throw away rebase and use --enable-auto-image-base
for every package.

So, the reason I mention all that is that it means that the above dialog
box would be displayed *any time* that setup was run with *any cygwin
program or service active*, no matter how small or irrelevent.  We would
get flooded with complaints about this extra annoying dialog box, and
"why can't setup replace in use files like it used to", and "I don't
care about rebasing, all my apps work fine, how can I disable this?"

> - open a dialog box with a message: "some packages that require
>   'rebaseall' are updated - hence setup is incomplete. Please reboot,
>   shutdown cygwin services and rerun setup - so that it can continue
>   and fix this."

You wouldn't want to bail partway through a rebase and leave things in a
partial state.  What setup would have to do is perform the full rebase
of all DLLs, scheduling any that were in use for replacement with their
rebased copy on the next reboot, as it already does for upgrading DLLs. 
But as I've been trying to say this requires a great deal of coding in
setup because you have to internalize all the rebasing logic, it can't
just punt to the rebaseall script.

Brian

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019