This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Question of the necessity of rebaseall


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Lenik on 5/13/2009 7:49 PM:
>> 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.
>>
> Could you explain in more detail? I can't find any document about this
> special memory layout.

Read the source.  This link is a bit old, but still captures the essence:
http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/how-cygheap-works.txt?rev=1.5&content-type=text/x-cvsweb-markup&cvsroot=src

Remember, the semantics of fork is that BOTH processes (the parent and
child) must see the SAME memory, and that includes all shared libraries
being mapped at the SAME location.  But since Windows doesn't provide a
native fork, the child must remap everything that the parent had, and hope
that it lands at the same place.  Rebasing improves the chance that the
child will remap, because there are fewer dlls to be remapped in an
arbitrary order.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             ebb9@byu.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoLfLIACgkQ84KuGfSFAYDpbQCcDXx2/G9B08xMHgTZU++SeLA+
NEIAoJGTv/tj2DxYSl22yqPbtffd8v6y
=pTcV
-----END PGP SIGNATURE-----

--
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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]