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: Fork issue on W10 WOW


On Jul  9 13:37, Marco Atzeri wrote:
> Am 7/9/2018 um 11:03 AM schrieb Corinna Vinschen:
> > On Jul  8 18:03, Marco Atzeri wrote:
> > > Am 30.06.2018 um 22:47 schrieb Ken Brown:
> > > > On 6/30/2018 11:52 AM, Marco Atzeri wrote:
> > > > 
> > > > I've never had this problem with my own 32bit installation on W10, but I
> > > > just reproduced it by doing a new installation with your list of
> > > > packages.  Have you tried just installing a minimal list of packages
> > > > that you need for building the packages you maintain?
> > > > 
> > > 
> > > On a fresh minimal installation the problem can arise again
> > > 
> > > $ cygcheck -cd |wc -l
> > > 245
> > > 
> > > as the first system shared libs are lower than the rebase
> > > DefaultBaseAddress=0x070000000
> > > 
> > > 6F810000-6F811000 r--p  /cygdrive/c/Windows/System32/wow64.dll
> > > 6F811000-6F844000 r-xp  /cygdrive/c/Windows/System32/wow64.dll
> > > 
> > > I think that rebase should consider different rebase
> > > base address for W10.
> > > 
> > > Using DefaultBaseAddress=0x06F000000 seems fine
> > > for the time being
> > 
> > I can do that in the rebaseall script (I have a matching patch locally),
> > but it looks like a race we can't win in the long run.  240 Megs less
> > space is a lot given the number of DLLs in the distro.
> 
> I know, but until we try to support the 32bit version, we need a
> way to handle it.
> 
> > To make matters worse, I just checked my local 32 bit W10 and it turns
> > out that various Windows DLLs loaded by default (even in a simple tcsh)
> > are at even lower addresses, e.g.
> > 
> >    6B690000-6B6A3000 /mnt/c/Windows/System32/netapi32.dll
> 
> I suspect it is due the their 64bit base address

netapi32.dll is 32 bit.  And it's a 32 bit OS, not WOW64...

>  $ objdump -x /cygdrive/c/Windows/System32/wow64.dll|grep ImageBase
> ImageBase               000000006b000000
> 
>  $ objdump -x /cygdrive/c/Windows/System32/wow64win.dll |grep ImageBase
> ImageBase               000000006b180000
> 
> It is like they put the 64bit System 32 over 0x6b000000 (maybe)

0x6b000000?  In your previous mail you wrote 0x6f000000.

> and the WoW64 over 0x70000000

I don't think there's a rule.  On my 64 bit W10 system:

  76E60000-76ED8000 /mnt/c/Windows/System32/wow64win.dll
  76EE0000-76EEA000 /mnt/c/Windows/System32/wow64cpu.dll
  76EF0000-76F42000 /mnt/c/Windows/System32/wow64.dll

Of course you can rebase the wow64 DLLs, it's just unclear if that
helps, given Windows uses different DLL addresses for their system DLLs
after each reboot.

> But I guess that ALSR can play around that numbers.
> There is still a way to disable ALSR?

ASLR is disabled by default on Cygwin executables.  Unless it can't
be disabled anymore for certain (system?) DLLs.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: signature.asc
Description: PGP signature


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