Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm 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 Date: Fri, 2 Aug 2002 15:14:03 +0100 From: "Steven O'Brien" To: cygwin AT cygwin DOT com Subject: [RFC] an alternative to rebasing Message-Id: <20020802151403.56afae59.steven.obrien2@ntlworld.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart_Fri__2_Aug_2002_15:14:03_+0100_100fef48" Note-from-DJ: This may be spam --Multipart_Fri__2_Aug_2002_15:14:03_+0100_100fef48 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit I may have found a way of getting cygwin fork() to load dlls reliably without the need for rebasing dlls. I described my understanding of the problem in a previous post (http://www.cygwin.com/ml/cygwin/2002-07/msg01260), but basically it boils down to the fact that during fork() the child process does not load dlls in the same order as the parent, and consequently cannot always get them to the same address. I would be difficult to record and reproduce the full sequence of LoadLibrary/FreeLibrary calls, but after some experimentation I believe that there is an alternative. If the child loads dlls in the order that they are in memory in the parent, then it appears to get the correct addresses. To test this I patched cygwin1.dll so that a list of loaded dlls, in address order, is maintained, and the child walks this list instead of the existing list of all dlls. I have done some simple tests that fail with cygwin1.dll-1.3.12-2, but succeed with my patched dll. I am also running the gnome desktop and core apps which depend on run-time loaded dlls to function and that is OK. I would like package maintainers who would otherwise need rebasing (Jason?) to try my patch and report results here if they can find time. If this approach proves successful, then rebasing would still improve load time for dlls, but apps using run-time loading of dlls would no longer depend on rebase to function. Attached is the patch and a Changelog entry Steven --Multipart_Fri__2_Aug_2002_15:14:03_+0100_100fef48 Content-Type: application/octet-stream; name="mypatch" Content-Disposition: attachment; filename="mypatch" Content-Transfer-Encoding: base64 SW5kZXg6IGRsbF9pbml0LmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5z dXAvY3lnd2luL2RsbF9pbml0LmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI3CmRpZmYgLXUg LXAgLXIxLjI3IGRsbF9pbml0LmNjCi0tLSBkbGxfaW5pdC5jYwk1IEp1biAyMDAyIDA0OjAxOjQy IC0wMDAwCTEuMjcKKysrIGRsbF9pbml0LmNjCTIgQXVnIDIwMDIgMTQ6MTE6NTEgLTAwMDAKQEAg LTE3Niw3ICsxNzYsNDQgQEAgZGxsX2xpc3Q6OmFsbG9jIChISU5TVEFOQ0UgaCwgcGVyX3Byb2Nl cwogICBlbmQgPSBkOwogICB0b3QrKzsKICAgaWYgKHR5cGUgPT0gRExMX0xPQUQpCi0gICAgbG9h ZGVkX2RsbHMrKzsKKyAgICB7CisgICAgICBsb2FkZWRfZGxscysrOworICAgICAgaWYgKGVuZF9s b2FkZWQgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgIGVuZF9sb2FkZWQgPSBkOworICAg ICAgICAgIHN0YXJ0X2xvYWRlZCA9IGQ7CisgICAgICAgICAgZC0+bmV4dF9sb2FkZWQgPSBOVUxM OworICAgICAgICAgIGQtPnByZXZfbG9hZGVkID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgZWxz ZQorICAgICAgICB7CisgICAgICAgICAgZGxsICpjdXIgPSBlbmRfbG9hZGVkOworICAgICAgICAg IHdoaWxlICgoY3VyLT5wcmV2X2xvYWRlZCkgJiYgKGQtPmhhbmRsZSA8IGN1ci0+aGFuZGxlKSkK KyAgICAgICAgICAgIGN1ciA9IGN1ci0+cHJldl9sb2FkZWQ7CisgICAgICAgICAgaWYgKGQtPmhh bmRsZSA8IGN1ci0+aGFuZGxlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjdXItPnBy ZXZfbG9hZGVkID0gZDsKKyAgICAgICAgICAgICAgZC0+bmV4dF9sb2FkZWQgPSBjdXI7CisgICAg ICAgICAgICAgIGQtPnByZXZfbG9hZGVkID0gTlVMTDsKKyAgICAgICAgICAgICAgc3RhcnRfbG9h ZGVkID0gZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIGQtPm5leHRfbG9hZGVkID0gY3VyLT5uZXh0X2xvYWRlZDsKKyAgICAgICAg ICAgICAgZC0+cHJldl9sb2FkZWQgPSBjdXI7CisgICAgICAgICAgICAgIGlmIChjdXItPm5leHRf bG9hZGVkKQorICAgICAgICAgICAgICAgIGN1ci0+bmV4dF9sb2FkZWQtPnByZXZfbG9hZGVkID0g ZDsKKyAgICAgICAgICAgICAgY3VyLT5uZXh0X2xvYWRlZCA9IGQ7CisgICAgICAgICAgICAgIGlm IChjdXIgPT0gZW5kX2xvYWRlZCkKKyAgICAgICAgICAgICAgICBlbmRfbG9hZGVkID0gZDsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGQtPm5l eHRfbG9hZGVkID0gTlVMTDsKKyAgICAgIGQtPnByZXZfbG9hZGVkID0gTlVMTDsKKyAgICB9CiAg IHJldHVybiBkOwogfQogCkBAIC0xOTQsMTEgKzIzMSwyMSBAQCBkbGxfbGlzdDo6ZGV0YWNoIChk bGwgKmQpCiAgICAgICBkLT5wLnJ1bl9kdG9ycyAoKTsKICAgICAgIGQtPnByZXYtPm5leHQgPSBk LT5uZXh0OwogICAgICAgaWYgKGQtPm5leHQpCi0JZC0+bmV4dC0+cHJldiA9IGQtPnByZXY7Cisg ICAgICAgZC0+bmV4dC0+cHJldiA9IGQtPnByZXY7CiAgICAgICBpZiAoZC0+dHlwZSA9PSBETExf TE9BRCkKLQlsb2FkZWRfZGxscy0tOworICAgICAgICB7CisgICAgICAgICAgbG9hZGVkX2RsbHMt LTsKKyAgICAgICAgICBpZiAoZC0+cHJldl9sb2FkZWQpCisgICAgICAgICAgICBkLT5wcmV2X2xv YWRlZC0+bmV4dF9sb2FkZWQgPSBkLT5uZXh0X2xvYWRlZDsKKyAgICAgICAgICBpZiAoZC0+bmV4 dF9sb2FkZWQpCisgICAgICAgICAgICBkLT5uZXh0X2xvYWRlZC0+cHJldl9sb2FkZWQgPSBkLT5w cmV2X2xvYWRlZDsKKyAgICAgICAgICBpZiAoZCA9PSBzdGFydF9sb2FkZWQpCisgICAgICAgICAg ICBzdGFydF9sb2FkZWQgPSBkLT5uZXh0X2xvYWRlZDsKKyAgICAgICAgICBpZiAoZCA9PSBlbmRf bG9hZGVkKQorICAgICAgICAgICAgZW5kX2xvYWRlZCA9IGQtPnByZXZfbG9hZGVkOworICAgICAg ICB9CiAgICAgICBpZiAoZW5kID09IGQpCi0JZW5kID0gZC0+cHJldjsKKyAgICAgICBlbmQgPSBk LT5wcmV2OwogICAgICAgVmlydHVhbEZyZWUgKGQsIDAsIE1FTV9SRUxFQVNFKTsKICAgICB9CiB9 CkBAIC0zMjgsNyArMzc1LDcgQEAgZGxsX2xpc3Q6OmxvYWRfYWZ0ZXJfZm9yayAoSEFORExFIHBh cmVudAogCSAgICAgIHRyeTIgPSAwOwogCSAgICB9CiAJfQotICAgICAgbmV4dCA9IGQubmV4dDsJ LyogR2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBuZXh0IERMTC4gKi8KKyAgICAgIG5leHQgPSBkLm5l eHRfbG9hZGVkOwkvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIG5leHQgRExMLiAqLwogICAgIH0K ICAgaW5fZm9ya2VlID0gMDsKIH0KSW5kZXg6IGRsbF9pbml0LmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vZGxsX2luaXQuaCx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS43CmRpZmYgLXUgLXAgLXIxLjcgZGxsX2luaXQuaAotLS0gZGxsX2luaXQuaAkxOSBB cHIgMjAwMiAxNDo0MjoyMCAtMDAwMAkxLjcKKysrIGRsbF9pbml0LmgJMiBBdWcgMjAwMiAxNDox MTo1MSAtMDAwMApAQCAtNDUsNyArNDUsNyBAQCB0eXBlZGVmIGVudW0KIAogc3RydWN0IGRsbAog ewotICBzdHJ1Y3QgZGxsICpuZXh0LCAqcHJldjsKKyAgc3RydWN0IGRsbCAqbmV4dCwgKnByZXYs ICpuZXh0X2xvYWRlZCwgKnByZXZfbG9hZGVkOwogICBwZXJfbW9kdWxlIHA7CiAgIEhNT0RVTEUg aGFuZGxlOwogICBpbnQgY291bnQ7CkBAIC02Miw5ICs2MiwxMSBAQCBjbGFzcyBkbGxfbGlzdAog ewogICBkbGwgKmVuZDsKICAgZGxsICpob2xkOworICBkbGwgKmVuZF9sb2FkZWQ7CiAgIGRsbF90 eXBlIGhvbGRfdHlwZTsKIHB1YmxpYzoKICAgZGxsIHN0YXJ0OworICBkbGwgKnN0YXJ0X2xvYWRl ZDsKICAgaW50IHRvdDsKICAgaW50IGxvYWRlZF9kbGxzOwogICBpbnQgcmVsb2FkX29uX2Zvcms7 CkluZGV4OiBmb3JrLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAv Y3lnd2luL2ZvcmsuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuODgKZGlmZiAtdSAtcCAtcjEu ODggZm9yay5jYwotLS0gZm9yay5jYwkxMyBKdWwgMjAwMiAyMDowMDoyNiAtMDAwMAkxLjg4Cisr KyBmb3JrLmNjCTIgQXVnIDIwMDIgMTQ6MTE6NTMgLTAwMDAKQEAgLTM5NSw3ICszOTUsNyBAQCBm b3JrX3BhcmVudCAoSEFORExFJiBoUGFyZW50LCBkbGwgKiZmaXJzCiAgICAgIGlmIHdlIG5lZWQg dG8gbG9hZCBkbGxzLiAgV2UgZG8gdGhpcyBoZXJlIHNvIHRoYXQgdGhpcwogICAgICBpbmZvcm1h dGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBpbiB0aGUgcGFyZW50IGFuZCwgd2hlbgogICAgICB0aGUg c3RhY2sgaXMgY29waWVkLCBpbiB0aGUgY2hpbGQuICovCi0gIGZpcnN0X2RsbCA9IGRsbHMuc3Rh cnQubmV4dDsKKyAgZmlyc3RfZGxsID0gZGxscy5zdGFydF9sb2FkZWQ7CiAgIGxvYWRfZGxscyA9 IGRsbHMucmVsb2FkX29uX2ZvcmsgJiYgZGxscy5sb2FkZWRfZGxsczsKIAogICAvKiBUaGlzIHdp bGwgaGVscCBzb21lIG9mIHRoZSBjb25mdXNpb24uICAqLwo= --Multipart_Fri__2_Aug_2002_15:14:03_+0100_100fef48 Content-Type: application/octet-stream; name="cygwin_changelog" Content-Disposition: attachment; filename="cygwin_changelog" Content-Transfer-Encoding: base64 MjAwMi0wOC0wMiAgU3RldmVuIE8nQnJpZW4gIDxzdGV2ZW4ub2JyaWVuMkBudGx3b3JsZC5jb20+ DQoNCgkqIGRsbF9pbml0LmggKHN0cnVjdCBkbGwpOiBBZGQgbmV4dF9sb2FkZWQgYW5kIHByZXZf bG9hZGVkIHBvaW50ZXJzDQoJdG8gc3VwcG9ydCBleHRyYSBsaXN0IG9mIGxvYWRlZCBkbGxzLg0K CShjbGFzcyBkbGxfbGlzdCk6IEFkZCBlbmRfbG9hZGVkIGFuZCBzdGFydF9sb2FkZWQgcG9pbnRl cnMgdG8gc3VwcG9ydA0KCWV4dHJhIGxpc3Qgb2YgbG9hZGVkIGRsbHMuDQoJKiBkbGxfaW5pdC5j YyAoZGxsX2xpc3Q6OmFsbG9jKTogSW5zZXJ0IGRsbCBpbnRvIGxpc3Qgb2YgbG9hZGVkIGRsbHMg dG8NCglyZWNvcmQgaXRzIHJlbGF0aXZlIHBvc3Rpb24gaW4gbWVtb3J5Lg0KCShkbGxfbGlzdDo6 ZGV0YWNoKTogUmVtb3ZlIGRsbCBmcm9tIGxpc3Qgb2YgbG9hZGVkIGRsbHMuDQoJKGRsbF9saXN0 Ojpsb2FkX2FmdGVyX2ZvcmspOg0KCSogZm9yay5jYyAoZm9ya19wYXJlbnQpOiB1c2Ugc3RhcnRf bG9hZGVkIGluc3RlYWQgb2Ygc3RhcnQgYXMgZmlyc3RfZGxsLg0K --Multipart_Fri__2_Aug_2002_15:14:03_+0100_100fef48 Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ --Multipart_Fri__2_Aug_2002_15:14:03_+0100_100fef48--