Bug#1094270: std::filesystem::weakly_canonical throws if the file disappears during its execution
On Mon, Jan 27, 2025 at 02:21:30PM +0100, Matthias Klose wrote:
> On 26.01.25 17:41, Enrico Zini wrote:
> > The function std::filesystem::weakly_canonical is defined as working
> > even if the path points to a file that does not exist.
> >
> > If however the path disappears while weakly_canonical does its thing, we
> > surprisingly get an exception.
>
> do you also see this behavior with gcc-15 from experimental?
I see it, yes:
$ rm weakly_canonical
$ g++-15 --version
g++-15 (Debian 15-20250114-1) 15.0.1 20250114 (experimental) [master r15-6887-g20b8500cfa5]
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ g++-15 -o weakly_canonical weakly_canonical.cc
$ ./weakly_canonical
Canonicalized path for missing file: "/media/arkimet/tmp/does-not-exist"
weakly_canonical failed at iteration 20: filesystem error: cannot make canonical path: No such file or directory [tmp/test]
$ ldd weakly_canonical
linux-vdso.so.1 (0x00007fd067f7a000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd067c00000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd067f38000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd067a0a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd067924000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd067f7c000)
$ dpkg -S libstdc++.so.6
libstdc++6:amd64: /usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.34-gdb.py
libstdc++6:amd64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6
libstdc++6:amd64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.34
$ dpkg -l libstdc++6
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-================-=============-============-=================================
ii libstdc++6:amd64 15-20250114-1 amd64 GNU Standard C++ Library v3
Enrico
--
GPG key: 4096R/634F4BD1E7AD5568 2009-05-08 Enrico Zini <enrico@enricozini.org>
Reply to: