container-diff icon indicating copy to clipboard operation
container-diff copied to clipboard

Windows: Failed to create symlink / error removing file / error retrieving image

Open sparrowt opened this issue 2 years ago • 1 comments

Expected behavior

Ability to compare two images using latest container-diff.exe downloaded from GitHub

Actual behavior

I ran this: container-diff diff daemon://IMAGENAME:TAG1 daemon://IMAGENAME:TAG2

It spewed a whole bunch of these for different values of FOO

time="2023-11-15T16:53:41Z" level=error msg="Failed to create symlink between FOO and C:\\Users\\USERNAME\\.container-diff\\cache\\daemon_\\IMAGENAME_TAG2\\path\\to\\FOO: symlink FOO C:\\Users\\USERNAME\\.container-diff\\cache\\daemon_\\IMAGENAME_TAG2\\path\\to\\FOO:: A required privilege is not held by the client."
...

followed by these final 2 errors:

time="2023-11-15T16:57:30Z" level=error msg="error removing file C:\\Users\\USERNAME\\.container-diff\\cache\\daemon_\\IMAGENAME_TAG1\\usr\\share\\man\\man1\\:.1.gz"
time="2023-11-15T16:57:30Z" level=error msg="error retrieving image daemon://IMAGENAME:TAG2: getting filesystem for image: remove C:\\Users\\USERNAME\\.container-diff\\cache\\daemon_\\IMAGENAME_TAG2\\usr\\share\\man\\man1\\:.1.gz: The filename, directory name, or volume label syntax is incorrect.\nerror retrieving image daemon://IMAGENAME:TAG1: getting filesystem for image: remove C:\\Users\\USERNAME\\.container-diff\\cache\\daemon_\\IMAGENAME_TAG1\\usr\\share\\man\\man1\\:.1.gz: The filename, directory name, or volume label syntax is incorrect."

and no actual comparison output.

Information

  • container-diff version: v0.17.0 built from git bea7ad9
  • Operating system: Windows 10, 22H2, 19045.3570
  • launched from powershell

Steps to reproduce the behavior

Though I initially hit this on a private image, part of the issue at least seems to repro with other images e.g. choosing 2 public images I happened to have locally:

container-diff diff daemon://alpine:3.14.3 daemon://alpine:3.14.8

This produced a whole bunch of the "Failed to create symlink between" error - though not the other 2 final ones above - so in that case after all the errors I see only the 'Image size diference' but nothing else.

sparrowt avatar Nov 15 '23 17:11 sparrowt

Ah, the Failed to create symlink errors no longer occur if I run from an Administrator powershell prompt - assuming this is expected, perhaps the documentation needs updating to mention this for Windows e.g. under https://github.com/GoogleContainerTools/container-diff#windows ? (happy to open a PR if so)

Nevertheless for my private image the other errors (error removing file and thus error retrieving image) still remain so no comparison can be performed. Is it that the file name actually contains a colon :.1.gz?

Looking in the affected .container-diff\cache folder I see a file with the name ..1.gz so perhaps something is replacing the : with a . but then trying to delete it by its original name?

sparrowt avatar Nov 15 '23 17:11 sparrowt