Skip to content

Bug: Characters disallowed by PathCleanupSpec in filesystems mounted via WSL2 are rendered as invalid codepoints. #17205

Open
@RokeJulianLockhart

Description

@RokeJulianLockhart

Description

I've some directories and files whose names are comprised of tabs ( ). Inside dolphin-25.04.2-1.fc42 (on cpe:/o:fedoraproject:fedora:42), these render as expected:

Image

However, in FilesPreview, these render as UTF tofu:

Image

To confirm, if I duplicate one of their filenames to my Windows clipboard, I see:

`{title ,id s22ai3}`{.JSON5}.dir

However, this should be, per my Linux installation:

`{title: "", id: "s22ai3"}`{.JSON5}.dir

...which can be confirmed with tree there:

.
└── \011`{title: "",\011id: "s22ai3"}`{.JSON5}.dir

This is a significant problem, because it means that Files is performing character replacement, thereby potentially making unintentionally modifying the filename trivial. I haven't confirmed this because I don't dare: I should have mounted this as ro.

Please note that although, in the browser, you're probably seeing hexagana if you're using Windows, this is font-dependent, so Files isn't doing anything special. It's merely not rendering the characters. As an example, explorer.exe "\\?\UNC\wsl.localhost\fedoraremix\mnt\rjlb_data\@{'Name'='Entities'}#.dir\@{'Status'='Commenced'; 'Name'='In Use'}#.dir\@{'Person'='Beedell'; 'Identifier'='S21AIB'}#.dir\@{'Name'='Entity-Specific'}#.dir\@{'Person'='Roke'; 'Identifier'='S1EV2L'}#.dir\@{'Name'='Temporary'}#.dir\. [ ]`{title Git,id s2ykra}`{.JSON5}.dir" also fails to, but renders another (incorrect) replacement character:

Image

Steps To Reproduce

  1. Using a real Linux OS, in a BTRFS filesystem, create a path longer than MAX_PATH that contains tab characters.

  2. Create the undermentioned structure: 1

    1. #!/usr/bin/env sh
      sudo lsblk -f
    2. NAME   FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
      sda
      sdb
      sdc                                           [SWAP]
      sdd                             954.8G     0% /mnt/wslg/distro
                                                    /
      sde
      ├─sde1
      ├─sde2
      ├─sde3
      └─sde4                            1.4T    24% /mnt/test
      sdf
      └─sdf1                          184.3G    90% /mnt/rjlb_data

    To do so:

    1. #!/usr/bin/env pwsh
      #Requires -PSEdition Core
      If ($IsWindows) {
      	sudo wsl --mount \\.\PHYSICALDRIVE1 --bare
      }
    2. #!/usr/bin/env sh
      sudo lsblk -f
      	# Utilise the output to confirm that the *device* has been mounted into `wsl`, then set its path as `$dev_id`, and define a mount point at `$path`.
      sudo mount -t btrfs /dev/$dev_id /mnt/$path

Files Version

3.9.10.0

Windows Version

10.0.26120

User ID

353b71b8-86f9-4fe0-ac0e-e1da114b9349

Log File

debug.log

Footnotes

  1. files-community/Files/issues/17133

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions