Subject: RE: Cygwin fork() rebase solution (was Re: dll_list::load_after_fork() blues ...)
From: "Norman Vine" <[email-masked]>
To: "'Jason Tishler'" <[email-masked]>, "'Michael Hudson'" <[email-masked]>, <[email-masked]>
Cc: "'Cygwin'" <[email-masked]>, "'Python-List'" <[email-masked]>
Date: Wed, 19 Dec 2001 21:28:07 -0500

Jason Tishler writes:
>
>I believe that I have found a rebase solution to the Cygwin fork()
>problem that has been causing Cygwin Python some grief lately.  I added
>an offset option to the attached rebase tool.  If I spread the DLLs out
>by an extra 0x10000, then the fork() problem seems to be mitigate.
>

>After rebasing the necessary Cygwin and Python DLLs:

>I can run the full regression test without any failures *even though*
>_socket is a shared module.

> If my findings are corroborated, then I will work with the Cygwin team
> to integrate rebase into setup.exe so that rebasing automatically occurs
> every time that setup.exe is run.

HI Jason

'Rebase'ing appears to work :-)

Following report on a Win98 box with a 'fresh' Cygwin install

Let me know if you need more testing done

Cheers

Norman

==========
bash-2.05a$ uname -a
CYGWIN_98-4.10 NHV 1.3.6(0.47/3/2) 2001-12-08 17:02 i686 unknown
==========
bash-2.05a$ ./rebase.sh
cygcrypto.dll: new base = 67f40000, new size = c0000
cygform5.dll: new base = 67f20000, new size = 20000
cygform6.dll: new base = 67f00000, new size = 20000
cyggdbm.dll: new base = 67ee0000, new size = 20000
cyghistory4.dll: new base = 67ec0000, new size = 20000
cyghistory5.dll: new base = 67ea0000, new size = 20000
cygmenu5.dll: new base = 67e80000, new size = 20000
cygmenu6.dll: new base = 67e60000, new size = 20000
cygncurses++5.dll: new base = 67e20000, new size = 40000
cygncurses++6.dll: new base = 67de0000, new size = 40000
cygncurses5.dll: new base = 67d90000, new size = 50000
cygncurses6.dll: new base = 67d40000, new size = 50000
cygpanel5.dll: new base = 67d20000, new size = 20000
cygpanel6.dll: new base = 67d00000, new size = 20000
cygreadline4.dll: new base = 67cd0000, new size = 30000
cygreadline5.dll: new base = 67c90000, new size = 40000
cygregex.dll: new base = 67c60000, new size = 30000
cygz.dll: new base = 67c30000, new size = 30000
cygssl.dll: new base = 67bf0000, new size = 40000
========
bash-2.05a$ python regrtest.py
Python 2.1.1 (#34, Dec 19 2001, 20:24:16)
[GCC 2.95.3-5 (cygwin special)] on cygwin

.......

15 tests skipped:
test_al test_bsddb test_cd test_cl test_dbm test_dl test_gl test_imgfile
test_largefile
test_linuxaudiodev test_locale test_nis test_socketserver test_sunaudiodev
test_sundry
=========
        Cygwin DLL version info:
        DLL version: 1.3.6
        DLL epoch: 19
        DLL bad signal mask: 19005
        DLL old termios: 5
        DLL malloc env: 28
        API major: 0
        API minor: 47
        Shared data: 3
        DLL identifier: cygwin1
        Mount registry: 2
        Cygnus registry name: Cygnus Solutions
        Cygwin registry name: Cygwin
        Program options name: Program Options
        Cygwin mount registry name: mounts v2
        Cygdrive flags: cygdrive flags
        Cygdrive prefix: cygdrive prefix
        Cygdrive default prefix:
        Build date: Sat Dec 8 17:02:30 EST 2001
        CVS tag: cygwin-1-3-6-6
        Shared id: cygwin1S3

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