X-Spam-Check-By: sourceware.org Date: Tue, 16 Jan 2007 17:50:06 +0000 From: Robin Walker Reply-To: Robin Walker To: cygwin AT cygwin DOT com Subject: Re: Cygwin Python/PIL TCL/TK fork rebase solution Message-ID: In-Reply-To: <45ACCBEF.49170261@dessent.net> References: <87ejpvluvj DOT fsf AT superfluity DOT lefae DOT org> <3D1F5241A4BA56B7EBA1D30B AT qjunbur DOT quns DOT cam DOT ac DOT uk> <45ACC59F DOT 397A6589 AT dessent DOT net> <45ACCBEF DOT 49170261 AT dessent DOT net> X-Mailer: Mulberry/4.0.7 (Win32) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=sha1; protocol="application/pkcs7-signature"; boundary="==========E23932E9CDBE014FB78D==========" X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: 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 --==========E23932E9CDBE014FB78D========== Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: quoted-printable Content-Disposition: inline --On 16 January 2007 04:58 -0800 Brian Dessent wrote: > 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. > > Also note that this explains why binaries that dynamically load modules > at runtime with dlopen() (such as Perl, Python, Apache, ...) are > particular likely to be affected by this whereas if you are just running > ordinary binaries that do no dynamic loading you almost never have to > mess with rebasing. Specifically, if a process loads modules at runtime > and those modules need to be relocated by the OS then the memory layout > depends now on countless details of the execution of the script or the > logic flow of the binary. Or put differently, the Windows process image > loader (i.e. the thing that loads a .exe and all DLLs that it was linked > against at link time) is relatively deterministic and repeatable, so you > can get away with unbased DLLs if there is no runtime loading since the > memory layout is still somewhat repeatably reproducable. Brian, Thanks for the explanations. So, if I've understood things correctly, the= =20 difficulty boils down to cloning a parent process's address space layout=20 within that of a child, which includes ensuring that DLLs appear at the=20 same base within both processes. For this to be the problem it appears to be, I'm guessing that there must= =20 be some shortcoming in the Windows APIs in this area when compared with=20 facilities available within other Posix-compliant OSs. How does Linux deal with the same issues of having libraries (or whatever= =20 are logically equivalent to DLLs) potentially linked at different bases in= =20 the two address spaces? --=20 Robin Walker (Junior Bursar), Queens' College, Cambridge CB3 9ET, UK rdhw AT cam DOT ac DOT uk http://www.queens.cam.ac.uk/ Tel:+44 1223 335528 --==========E23932E9CDBE014FB78D========== Content-Type: application/pkcs7-signature Content-Transfer-Encoding: base64 MIIPuwYJKoZIhvcNAQcCoIIPrDCCD6gCAQExCzAJBgUrDgMCGgUAMAsGCSqG SIb3DQEHAaCCDYAwggPnMIIDUKADAgECAhB/XB5Eipwh6JZtd6i9RCwoMA0G CSqGSIb3DQEBBAUAMIHUMR4wHAYDVQQKExVTdHVkZW50IExvYW5zIENvbXBh bnkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxPDA6BgNVBAsT M1Rlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy50cnVzdHdpc2UuY29tL3Jw YSAoYykwMzEwMC4GA1UECxMnQ2xhc3MgMiBPblNpdGUgSW5kaXZpZHVhbCBT dWJzY3JpYmVyIENBMSEwHwYDVQQDExhTdHVkZW50IExvYW5zIENvbXBhbnkg Q0EwHhcNMDYwODE3MDAwMDAwWhcNMDcwOTE1MjM1OTU5WjCB/jELMAkGA1UE BhMCR0IxEjAQBgNVBAcUCUNhbWJyaWRnZTEqMCgGA1UEChQhVGhlIFN0dWRl bnQgTG9hbnMgQ29tcGFueSBMaW1pdGVkMR4wHAYDVQQLExV3d3cudHJ1c3R3 aXNlLmNvbS9ycGExIzAhBgNVBAsUGk1haWxTdG9wIC0gUXVlZW5zJyBDb2xs ZWdlMRwwGgYDVQQLFBNMRUEvSEVJIENvZGUgLSBDQUVFMRYwFAYDVQQMFA1K dW5pb3IgQnVyc2FyMRUwEwYDVQQDEwxSb2JpbiBXYWxrZXIxHTAbBgkqhkiG 9w0BCQEWDnJkaHdAY2FtLmFjLnVrMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJB ANk5fuWXoV1q2IIIUCYLVs0wM5bHBQ0dEF0AGFe/JdQrJNj4jUdsQSejp8HJ +csNokcUY0MDdiFvksGyuszn/CMCAwEAAaOB0TCBzjAJBgNVHRMEAjAAMEQG A1UdIAQ9MDswOQYKYIZIAYb4RQEHCTArMCkGCCsGAQUFBwIBFh1odHRwczov L3d3dy50cnVzdHdpc2UuY29tL3JwYTALBgNVHQ8EBAMCBaAwEQYJYIZIAYb4 QgEBBAQDAgeAMFsGA1UdHwRUMFIwUKBOoEyGSmh0dHA6Ly9vbnNpdGVjcmwu dHJ1c3R3aXNlLmNvbS9UaGVTdHVkZW50TG9hbnNDb21wYW55TGltaXRlZC9M YXRlc3RDUkwuY3JsMA0GCSqGSIb3DQEBBAUAA4GBAEdZ4gUFj7rMntVJAyxI LcOdhDgMlbFKp+4dmbAjachVQy0ZK6iaIxpit2SW5xvl7u0YyE5meLzRMMkq 7IXX+GNSEIcr13c0PQksem6i/vTcYCw1nK9JNafSG6snytqmJ0cTVp7E0vAP CRLTDUBYYgeGUDFwqQlKjaAKdMNKvk8KMIIDYjCCAsugAwIBAgIQZlpoaaRJ nbo/tOG5fY8NkzANBgkqhkiG9w0BAQQFADBkMScwJQYDVQQKEx5Ccml0aXNo IFRlbGVjb21tdW5pY2F0aW9ucyBwbGMxHzAdBgNVBAsTFlZlcmlTaWduIFRy dXN0IE5ldHdvcmsxGDAWBgNVBAMTD0JUIFRydXN0V2lzZSBDQTAeFw0wMzA5 MTgwMDAwMDBaFw0wODA5MTcyMzU5NTlaMIHUMR4wHAYDVQQKExVTdHVkZW50 IExvYW5zIENvbXBhbnkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv cmsxPDA6BgNVBAsTM1Rlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy50cnVz dHdpc2UuY29tL3JwYSAoYykwMzEwMC4GA1UECxMnQ2xhc3MgMiBPblNpdGUg SW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBMSEwHwYDVQQDExhTdHVkZW50IExv YW5zIENvbXBhbnkgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALa0 MyhCbExYSe88SbETURStgVHxxboMuzV0TOSMUS76PTT9cnpy5IqCWt6NndWy fVcOPtCCCAgoOH1yDS3F4kIlKnOBCIIXv7ExFFBOESPBp6aNQ4Zek8gu16wZ 0v1ruYF1kOsyyuKcitlJIvhjKvx5lmQFa9FYUqSiF9U1TNsDAgMBAAGjgaMw gaAwDwYDVR0TBAgwBgEB/wIBADBFBgNVHSAEPjA8MDoGC2CGSAGG+EUBBxcC MCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vd3d3LnRydXN0d2lzZS5jb20vcnBh MAsGA1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwJgYDVR0RBB8wHaQb MBkxFzAVBgNVBAMTDmJ0YzJvbnNpdGUxLTEzMA0GCSqGSIb3DQEBBAUAA4GB AKFq2zZnXaspVfkukjegQ1qYS//0eqE5lvxndZJLIwqgfQ55K/BQL38NX6Qu NiiGf/GU7pixSiCE5rVCsOX7hP712Jhbb2/BHmdd4andkd7Odo2bUV6nmNjY Rp7g30Z1trEjAEXCvpTD2Nb9VkijBe/jvuTDuiWtl6qnryiSULCcMIIDJDCC Ao2gAwIBAgIQcFoaAbh84F1u3DpAgpiMGDANBgkqhkiG9w0BAQQFADCBwTEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQL EzNDbGFzcyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y aXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJbmMuIC0g Rm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWduIFRy dXN0IE5ldHdvcmswHhcNOTkwODE5MDAwMDAwWhcNMTQwMTA2MjM1OTU5WjBk MScwJQYDVQQKEx5Ccml0aXNoIFRlbGVjb21tdW5pY2F0aW9ucyBwbGMxHzAd BgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxGDAWBgNVBAMTD0JUIFRy dXN0V2lzZSBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApUGJBlbV EdU4veD4N0zAH/2RvFDs/tU3/gXxOzFO/AD0N/O+1RnlJWN/g94GyVghgcEZ O7BA1SEFlTjOs6u+Bq6B/STxkPddlURpOOC3q31YSPiHkdqtQsb40RFE7ZW9 kZooaxnJM9/dUQsBDYeBkNpLaorYZLwBCwSKDfI/l3UCAwEAAaN5MHcwEQYJ YIZIAYb4QgEBBAQDAgEGMEQGA1UdIAQ9MDswOQYKYIZIAYb4RQEHCTArMCkG CCsGAQUFBwIBFh1odHRwczovL3d3dy50cnVzdHdpc2UuY29tL1JQQTAPBgNV HRMECDAGAQH/AgEBMAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQQFAAOBgQBf qGorIHXS8AcaIMa/suA2DF0ZFtq2ULNHvkV4E1uIeee1nwlFKpQ5/G0tWTfM KThNyIQuE7IdYuBhiZUELtJbJd3M3dvrYxx0g98EY4V1RBM4ZK33tc5n3keQ Kb+yzBjyLm1/32SH1EqmSCS8cD/x3t0L6V5Vrp0NevQFOA1UQTCCAwMwggJs AhEAuS9gzIifoXpGCbhbcGyKrzANBgkqhkiG9w0BAQUFADCBwTELMAkGA1UE BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFz cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0g RzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1 dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5l dHdvcmswHhcNOTgwNTE4MDAwMDAwWhcNMjgwODAxMjM1OTU5WjCBwTELMAkG A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzND bGFzcyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJbmMuIC0gRm9y IGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 IE5ldHdvcmswgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKeIASF0LOca A/CY4Zc8DyEI8Zzbl+ma/MIEBhO+X1LIzB4sElYsuAFpLMyZH62wlq55BPIT OcF7mLoILOjChBMsqmnpCfTHqQKkQsIjT0rY8A6i+zFsyeZvmScH9eb0THie betGhvq5hslU8rLEr9RGHFrJFTD/DWz1LQ5tzn93AgMBAAEwDQYJKoZIhvcN AQEFBQADgYEAci75f9HxcfvEnvbFXlGKQJi4aPibHIPY4p29/+2h5mbqLwn0 ytfqpSuV9iRghk1ELoOlxC2g0654aW9y2myuCPBjkjfmu8QwF613zEk1qs/Y j9G+txiWR3NqVCI0ZC22FptZW7RRWTqzCxT0Et9noPStMmResUZyJ4wSe8VE tK4xggIDMIIB/wIBATCB6TCB1DEeMBwGA1UEChMVU3R1ZGVudCBMb2FucyBD b21wYW55MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTwwOgYD VQQLEzNUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudHJ1c3R3aXNlLmNv bS9ycGEgKGMpMDMxMDAuBgNVBAsTJ0NsYXNzIDIgT25TaXRlIEluZGl2aWR1 YWwgU3Vic2NyaWJlciBDQTEhMB8GA1UEAxMYU3R1ZGVudCBMb2FucyBDb21w YW55IENBAhB/XB5Eipwh6JZtd6i9RCwoMAkGBSsOAwIaBQCggbEwGAYJKoZI hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDcwMTE2MTc1 MDA2WjAjBgkqhkiG9w0BCQQxFgQUiOYxigTRoVssvxKDgAPgsSQmg0UwUgYJ KoZIhvcNAQkPMUUwQzAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYI KoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcN AQEBBQAEQArtIRcudaT6Co7/xC7VyDLJq9n5G6oEi96mkYWr7fos0tcJUcfc yMIR95oJ32pgHsUBsvKn0VaWdZkkiUtYHmE= --==========E23932E9CDBE014FB78D==========--