Mail Archives: cygwin/2002/08/02/10:14:22
--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--
- Raw text -