On Jan 11 22:52, Denis Excoffier wrote: > > On 2018-01-11 13:32, Christian Franke wrote: > > > > After 4.4.3-1 upgrade, rebase always fails on 32- and 64-bit Cygwin: > > > > $ rebase -s -T /var/cache/rebase/rebase_all > > rebase: Too many DLLs for available address space: Cannot allocate memory > > > > Using /bin/rebaseall does not help. > > > > A downgrade to 4.4.2-1 fixes the problem. > > > Same for me. I also tried rebase-4.4.3 and it didn't work (message in setup.log and no /etc/re* created). > Therefore i also switched back to 4.4.2. > > I would like to add that under my system (Windows 7 32bits), when i autorebase everything (full), > the 'rebase -si' function (rebase-4.4.2) produces the following result: > > /usr/bin/cygvpx-3.dll base 0x002d0000 size 0x00201000 > /usr/bin/cygvpx-1.dll base 0x004e0000 size 0x001ed000 > /usr/bin/cygvorbisfile-3.dll base 0x006d0000 size 0x00010000 > ... > [...] > /usr/bin/cygvte-9.dll base 0xffee0000 size 0x00099000 > /usr/bin/cygvte-2.91-0.dll base 0xfff80000 size 0x0005f000 > /usr/bin/cygvpx-4.dll base 0xfffe0000 size 0x002e2000 > [...] > Is this expected, this kind of arithmetic modulo 2^32? Yes, because rebase was not designed originally with a lower address boundary, so it just dilligently computes addresses and never checks if a boundary is crossed. At the time when this was designed we had hundreds, rather than thousands of DLLs, and it didn't occur any of us that the distro would grow to these dimensions. I pushed a patch yesterday which let rebase bail out as soon as the address gets < 0x1000000. That's only barely above the usual address executables are loaded to (0x400000). The regions beneath that are usually used for the main thread stack (0x20000 - 0x220000) and various helper address mappings. I releaase rebase 4.4.4 with the above patch today. > In any case, i have no fork problems. That may be as it is, but if you're really running a 32 bit Windows, in contrast to under WOW64 on a 64 bit Windows, the above does not at all work as desired and you're just lucky. Any DLL in the upper region beyond 0x80000000 will be rebased at runtime by the Windows loader. > The full list contains 8006 lines, i have the complete Cygwin 32bit installation The bottom line of this is, and it has been said before and I can't stress this enough, we can't support this scenario at all, for the simple fact that we have more DLLs than fit into the 32 bit address space. It's not much of a problem on 64 bit, but on 32 bit it's just not feasible anymore. Ultimately, You should (must) not install all of Cygwin on 32 bit, only the set of stuff you need on top of the base category. Or install 64 bit Cygwin. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat