This is the mail archive of the cygwin-developers@cygwin.com 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]

dll_list::load_after_fork() blues


I am looking for some guidance on how to possibly solve the Cygwin Python
fork() problem demonstrated by:

    http://cygwin.com/ml/cygwin/2001-12/msg00419.html

After applying the attached patch to further instrument load_after_fork(),
I get the attached output.  From this test case, we see that
load_after_fork() can currently handle the case when the DLL remaps to
an address that is lower than the expected value (e.g.  cygcrypto.dll).
But, load_after_fork() cannot handle the case when the DLL remaps to a
higher address (e.g., cygssl.dll).

Does anyone have ideas on how to handle the too high case?  Does anyone
understand why the DLL in question seems to remap to an address that is
exactly 0x10000 too high?  Note that I have also tried a Python built
without "-Wl,--enable-auto-image-base".  I got identical results including
the 0x10000 offset (albeit with different address).

Thanks,
Jason

Attachment: dll_init.cc.diff
Description: Text document

Attachment: nothreads.txt
Description: Text document


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