Weird (path) problems with cygwin test release 3.5.0-0.384.g9939aa7d0945.x86_64 ...

Corinna Vinschen
Mon Aug 14 10:21:59 GMT 2023

On Aug 11 13:36, Mainz, Roland via Cygwin wrote:
> Hi!
> ----
> Cygwin test release 3.5.0-0.384.g9939aa7d0945.x86_64 has some weird
> path problems with network filesystems on Windows 10. Previous stable
> version of Cygwin (4.7.x ?) worked fine.


> In our case we have a project with both custom binaries and sources
> both hosted on the filesystem as /home/rmainz/ (i.e. filesystem
> mounted on H:, and then bind mount to /home/rmainz).
> After updating Cygwin to 3.5.0-0.384.g9939aa7d0945.x86_64 the build
> now fails *IF* I access the binaries with their full absolute path AND
> the sources with their absolute path:
> ---- snip ----
> $ cd /home/rmainz/tmp/try10_rde_new_rds/RDE-Development/build_windows4/tmp
> $ ls -l x.cpp
> -rw-r--r-- 1 rmainz rovdevel 110 Aug 11 15:32 x.cpp
> $ /home/rmainz/tmp/try10_rde_new_rds/Dependencies/win/qt/qt_5_15_2/Tools/mingw810_64/bin/c++ $PWD/x.cpp
> c++.exe: error: /home/rmainz/tmp/try10_rde_new_rds/RDE-Development/build_windows4/tmp/x.cpp: No such file or directory
> c++.exe: fatal error: no input files
> compilation terminated.
> ---- snip ----

I can't reproduce this:

$ net use H: <blah>
$ mount -o exec H: /home/rmainz
$ cd /home/rmainz/tmp
$ cp /bin/cat.exe .
$ mkdir baz
$ echo foo > baz/bar
$ /home/rmainz/tmp/cat $PWD/baz/bar

> Even more weird is that if I try to debug this via strace I get this:
> ---- snip ----
> $ strace -o mylog.log /home/rmainz/tmp/try10_rde_new_rds/Dependencies/win/qt/qt_5_15_2/Tools/mingw810_64/bin/c++ $PWD/x.cpp
> strace.exe: error creating process C:\cygwin64\home\rmainz\tmp\try10_rde_new_rds\Dependencies\win\qt\qt_5_15_2\Tools\mingw810_64\bin\c++, (error 2)
> ---- snip ----
> Note that the Windows-style path doesn't start with H:\tmp as I would
> expect - it starts with C:\cygwin64\, followed by the bind mount name
> (\home\rmainz).

Looks like your mount point is only temporary, i. e., you created it
with mount at runtime in your shell (as I did above).  If you add it to
your fstab file, e. g., /etc/fstab.d/rmainz, it will be persistent.

The problem here is this: To allow debugging bugs in Cygwin itself,
strace is a MingW executable.  As a non-Cygwin executable, it does not
have access to the Cygwin-specific shared memory region containing
mount points.

Thus, it reads the mount points from the /etc/fstab and
/etc/fstab.d/$USER files.  If the mount point is missing in these files,
strace can't use it.


More information about the Cygwin mailing list