X-Spam-Check-By: sourceware.org Message-ID: <45ACC59F.397A6589@dessent.net> Date: Tue, 16 Jan 2007 04:31:27 -0800 From: Brian Dessent X-Mailer: Mozilla 4.79 [en] (Windows NT 5.0; U) MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: Cygwin Python/PIL TCL/TK fork rebase solution References: <87ejpvluvj DOT fsf AT superfluity DOT lefae DOT org> <3D1F5241A4BA56B7EBA1D30B AT qjunbur DOT quns DOT cam DOT ac DOT uk> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Reply-To: cygwin AT cygwin DOT com Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Robin Walker wrote: > So, what is it about Cygwin DLLs that makes them apparently sensitive to > base address in a way that normal Windows DLLs are not? Because in order to emulate fork(), Cygwin has to be able to re-execute the binary and have it load with the same memory layout. If there are DLLs that overlap and need remapping by the OS then the memory layout becomes non-deterministic. If Cygwin cannot create a child process with the same memory layout as the parent, then it cannot fork and you get the "unable to remap" error. Keep in mind that Cygwin jumps through inordinate hoops to emulate this "fork" concept that does not exist natively in any shape or form on Win32, but which is a fundamental syscall around which all process management is based on all POSIX systems. 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/