From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from conssluserg-05.nifty.com (conssluserg-05.nifty.com [210.131.2.90]) by sourceware.org (Postfix) with ESMTPS id 7FE203858C2C for ; Sun, 5 Dec 2021 02:54:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7FE203858C2C Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=nifty.ne.jp Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=nifty.ne.jp Received: from Express5800-S70 (z221123.dynamic.ppp.asahi-net.or.jp [110.4.221.123]) (authenticated) by conssluserg-05.nifty.com with ESMTP id 1B52s1iw021751 for ; Sun, 5 Dec 2021 11:54:01 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-05.nifty.com 1B52s1iw021751 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1638672841; bh=ZmxO8WY7E8YzxYdUbCO8UEe8CMAXXFt9UurrQf6YQ4E=; h=Date:From:To:Subject:In-Reply-To:References:From; b=a6M0KWfczhFH5EbW1lNRVZXTfiqJ0LLLSiGrMiLCIhv9Re//5ZOJgzjGPk+6/6bIG SbxATZ12h3e/LYQxCds0OqrgI0vpepm+cUSwiQvpCEM4xISa5fQuiqHe0ka6QQGMgl xttsL64OGSX2bL6RgHkLPdvNfDXYgMuCXZhtGCaXtotrNu+J1QTTKc27AmZ3O7KxFF qHSDU8/kFhxu7cHa2pLqufbuObCqbw3P9AxXhJl+vaA1L6Lw7dRxZ58ODC5MvE4ozC mQHnB2ms4R2ER939/CvwDmKURGXZEhra5Hl4iM12w7Pd7JKM7l9HbqRnKXcV/uyWfK SoZ8s4b07UMYA== X-Nifty-SrcIP: [110.4.221.123] Date: Sun, 5 Dec 2021 11:54:11 +0900 From: Takashi Yano To: cygwin@cygwin.com Subject: Re: vboxsharedfs - Too many levels of symbolic links Message-Id: <20211205115411.1619911cb3e2d23f671912ce@nifty.ne.jp> In-Reply-To: References: X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Dec 2021 02:54:22 -0000 On Tue, 30 Nov 2021 19:04:57 +0200 Oskar Skog wrote: > vboxsharedfs file systems no longer work. Any attempt to access will > result in "too many levels of symbolic links". > > This only affects the VirtualBox shared folder, the Samba share works > just fine. > > Last time I updated (before today) was sometime before the 10th of > September. > > MSYS2 has the same problem, but no one seems to have reported it to > Cygwin: > https://github.com/msys2/msys2-runtime/issues/58 > > > user@DESKTOP-******* ~$ ls /cygdrive/z > ls: cannot access '/cygdrive/z': Too many levels of symbolic links > user@DESKTOP-******* ~$ mount > C:/Cygwin/bin on /usr/bin type ntfs (binary,auto) > C:/Cygwin/lib on /usr/lib type ntfs (binary,auto) > C:/Cygwin on / type ntfs (binary,auto) > C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto) > D: on /cygdrive/d type iso9660 (binary,posix=0,user,noumount,auto) > Y: on /cygdrive/y type smbfs (binary,posix=0,user,noumount,auto) > Z: on /cygdrive/z type vboxsharedfolderfs > (binary,posix=0,user,noumount,auto) > user@DESKTOP-******* ~$ uname -a > CYGWIN_NT-10.0 DESKTOP-* 3.3.2(0.341/5/3) 2021-11-08 16:55 x86_64 Cygwin Thanks for the report. It seems that this happens only in 64bit Windoes10/11. In 32bit Windows10: $ ls -l /cygdrive/z total 0 -rw-r--r-- 1 yano yano 0 Dec 3 22:16 testfile.txt $ mount C:/cygwin/bin on /usr/bin type ntfs (binary,auto) C:/cygwin/lib on /usr/lib type ntfs (binary,auto) C:/cygwin on / type ntfs (binary,auto) C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto) D: on /cygdrive/d type iso9660 (binary,posix=0,user,noumount,auto) Z: on /cygdrive/z type vboxsharedfolderfs (binary,posix=0,user,noumount,auto) $ uname -a CYGWIN_NT-10.0 DESKTOP-HGUT5FP 3.3.2(0.341/5/3) 2021-11-08 16:51 i686 Cygwin In 64bit Windows10: $ ls -l /cygdrive/z ls: /cygdrive/z: Too many levels of symbolic links ls: cannot open directory '/cygdrive/z': Too many levels of symbolic links $ mount C:/cygwin/bin on /usr/bin type ntfs (binary,auto) C:/cygwin/lib on /usr/lib type ntfs (binary,auto) C:/cygwin on / type ntfs (binary,auto) C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto) Z: on /cygdrive/z type vboxsharedfolderfs (binary,posix=0,user,noumount,auto) $ uname -a CYGWIN_NT-10.0-WOW DESKTOP-CUHC1NV 3.3.2(0.341/5/3) 2021-11-08 16:51 i686 Cygwin I tested with VirtualBox version 6.1.30. In 64bit Windows10, for vbox shared path, GetFinalPathNameByHandleW() returns path with trailing '\'. As a result, RtlEqualUnicodeString() fails and tries to resolve symlink repeatedly. For example, RtlEqualUnicodeString() compares \??\UNC\VBoxSrv\tmp and \??\UNC\VBoxSrv\tmp\, then it fails. This does not happen in 32bit Windows10. It seems that UNC path is not treated as a symlink in 32bit Windows10. I am not sure why. Therefore, I have applied a patch which stops to treat UNC path as a symlink for testing as follows. diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index baf04ce89..31a96ca58 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3490,6 +3490,9 @@ restart: ret = GetFinalPathNameByHandleW (h, fpbuf, NT_MAX_PATH, 0); if (ret) { + if (wcsstr (fpbuf, L"\\\\?\\UNC\\") == fpbuf) + goto file_not_symlink; + UNICODE_STRING fpath; RtlInitCountedUnicodeString (&fpath, fpbuf, ret * sizeof (WCHAR)); I have confirmed this patch fixes the issue. In addition, this patch also resolves the issue: https://cygwin.com/pipermail/cygwin/2021-December/250103.html Is this the right thing? -- Takashi Yano