www.delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-SWARE-Spam-Status: | No, hits=-0.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,RCVD_NUMERIC_HELO,SPF_HELO_PASS,SPF_PASS |
X-Spam-Check-By: | sourceware.org |
To: | cygwin AT cygwin DOT com |
From: | Lenik <lenik AT bodz DOT net> |
Subject: | Re: Question of the necessity of rebaseall |
Date: | Thu, 14 May 2009 09:49:57 +0800 |
Lines: | 34 |
Message-ID: | <guftc9$de2$1@ger.gmane.org> |
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> <4A0B751A DOT 30007 AT cygwin DOT com> |
Mime-Version: | 1.0 |
User-Agent: | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20090223 Thunderbird/3.0b2 |
In-Reply-To: | <4A0B751A.30007@cygwin.com> |
X-IsSubscribed: | yes |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Unsubscribe: | <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT 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 |
On 2009-5-14 9:34, Larry Hall (Cygwin) wrote: > 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. > Could you explain in more detail? I can't find any document about this special memory layout. Thanks -- 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/
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |