Fork issues with 3.4 in Docker only

Corinna Vinschen corinna-cygwin@cygwin.com
Mon Dec 19 09:44:53 GMT 2022


On Dec 18 10:18, Christoph Reiter via Cygwin wrote:
> After the upgrade to 3.4 (disclaimer: in MSYS2) I'm seeing, and getting reports
> of, various things failing in Docker only, for example:
> 
>       1 [main] pacman 252 child_copy: dll data read copy failed,
> 0x7FF8C816C000..0x7FF8C8178EB0, done 0, windows pid 5096, Win32 error
> 299
>       0 [main] pacman 251 dofork: child -1 - forked process 5096 died
> unexpectedly, retry 0, exit code 0xC0000005, errno 11
>       0 [main] pacman 253 child_copy: dll data read copy failed,
> 0x7FF8C816C000..0x7FF8C8178EB0, done 0, windows pid 584, Win32 error
> 299
>   67887 [main] pacman 251 dofork: child -1 - forked process 584 died
> unexpectedly, retry 0, exit code 0xC0000005, errno 11
>       0 [main] pacman 254 child_copy: dll data read copy failed,
> 0x7FF8C816C000..0x7FF8C8178EB0, done 0, windows pid 2336, Win32 error
> 299
>  124719 [main] pacman 251 dofork: child -1 - forked process 2336 died
> unexpectedly, retry 0, exit code 0xC0000005, errno 11
> 
> Reverting https://cygwin.com/git/?p=newlib-cygwin.git;a=commit;h=943433b00cacdde0cb9507d0178770a2fb67bd71
> fixes things again.
> 
> Note that this doesn't happen outside of Docker, I've built more than 100
> packages with 3.4 on different hosts without any issues, and the errors in
> Docker are pretty consistent, so I'm guessing that something with ASLR behaves
> differently under Docker(?)

No idea what docker is doing differently, but you could try to switch
off ASLR for the Cygwin DLL.  Right now, starting with 3.4.0, it's
supposed to be the only DLL using ASLR by default in the Cygwin distro,
all other DLLs should still use fixed addresses.

Try this:

  cp /bin/cygwin1.dll ~/docker-cygwin1.dll
  peflags -d0 ~/docker-cygwin1.dll

Then copy that DLL over to /bin/cygwin1.dll in your docker image
and try again.


Corinna


More information about the Cygwin mailing list