delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/05/13/21:37:00

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS
X-Spam-Check-By: sourceware.org
Message-ID: <4A0B751A.30007@cygwin.com>
Date: Wed, 13 May 2009 21:34:18 -0400
From: "Larry Hall (Cygwin)" <reply-to-list-only-lh AT cygwin DOT com>
Reply-To: cygwin AT cygwin DOT com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20090101 Remi/2.0.0.19-1.fc8.remi Lightning/0.9 Thunderbird/2.0.0.19 Mnenhy/0.7.5.0
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: Question of the necessity of rebaseall
References: <gufoof$4ov$1 AT ger DOT gmane DOT org> <4A0B6BE4 DOT 1020905 AT cygwin DOT com> <gufqp0$8jv$1 AT ger DOT gmane DOT org>
In-Reply-To: <gufqp0$8jv$1@ger.gmane.org>
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
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

Lenik wrote:
> On 2009-5-14 8:55, Larry Hall (Cygwin) wrote:
>> Lenik wrote:
>>> Imagebase in PE header is something a bit of optional, that means if
>>> two dlls with same imagebase, the OS kernel will automaticly relocate
>>> one of them, to put them in different virtual spaces. So, rebase
>>> should be a utility for optimizing the overall start-up speed, to
>>> reduce avoidable relocations, rather then fix start-up errors.
>>>
>>> Any idea?
>>
>> cygwin1.dll cannot be relocated if the fork semantics are to work. So
>> while what you say above is true for apps in general, it's not true for
>> Cygwin apps.
>>
> 
> I can't figure out how fork will break the relocation, for libraries 
> have been loaded, they're already relocated before invoke into fork, and 
> for libraries haven't been loaded, they don't need to share memory after 
> new processes created by fork.

You have it backwards.  Forking doesn't break the relocation.  Relocation
breaks forking.  cygwin1.dll needs to have a very special memory layout to
implement the fork semantics in Win32.  If this memory layout is disrupted,
fork breaks.  Relocating cygwin1.dll disrupts the required memory layout.
'rebaseall' does its best to locate all Cygwin DLLs that it knows of
into a layout that avoids collisions.  This maintains the required
memory layout so fork can do its job.

-- 
Larry Hall                              http://www.rfk.com
RFK Partners, Inc.                      (508) 893-9779 - RFK Office
216 Dalton Rd.                          (508) 893-9889 - FAX
Holliston, MA 01746

_____________________________________________________________________

A: Yes.
 > Q: Are you sure?
 >> A: Because it reverses the logical flow of conversation.
 >>> Q: Why is top posting annoying in email?

--
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