winfsp / cgofuse

Cross-platform FUSE library for Go - Works on Windows, macOS, Linux, FreeBSD, NetBSD, OpenBSD
https://winfsp.dev
MIT License
527 stars 84 forks source link

cgofuse fails in Windows XP 32-bit #17

Closed balazer closed 6 years ago

balazer commented 7 years ago

It is understood that WinFsp and the rclone mount command will only work in Windows 7 and up. But cgofuse is causing rclone to fail in Windows XP SP2 32-bit with this error, even without mount:

"The procedure entry point RegGetValueW could not be located in the dynamic link library ADVAPI32.dll".

That's just running rclone with no command-line options. A bit of googling shows that RegGetValueW is only supported in 64-bit Windows XP. If rclone is going to continue supporting Windows XP (albeit without mount support), cgofuse should fail gracefully when RegGetValueW is not available.

See https://github.com/ncw/rclone/issues/1481#issuecomment-325067265 for more context.

The alternative is to build rclone without cgofuse, which also fixes the problem. (e.g. special build https://github.com/ncw/rclone/issues/1481#issuecomment-308458944 , which does run in Windows XP 32-bit).

billziss-gh commented 7 years ago

@balazer, thank you for the excellent bug report.

billziss-gh commented 7 years ago

I have a potential fix in commit 3a24389863c5bf906de391226ee8c4ec2c925bfe. It runs on my local system, but I have not been able to run it through automated testing yet as GitHub seems to experience issues with the CI services currently.

billziss-gh commented 7 years ago

Turns out that most tests pass except for an unrelated test on Travis CI. I am merging this change in and tagging it v1.0.3.

@balazer It would be helpful if you tested with 32-bit WinXP test to make sure that everything works as I no longer have WinXP. Once I receive confirmation that the fix works on WinXP I will ping ncw to produce an updated version of rclone.

[Re: Travis CI failure.

The failing test has to do with the setuid and setgid bit status after a chown(2) on Linux. POSIX does not specify what the behavior should be for special files, but Linux has traditionally cleared the setxid bits on them. It appears that on the version of Linux used by the current Travis CI build workers (2017/9/7), Linux does not clear those bits. This is a rather weird failure, but benign for cgofuse and unrelated to this change.

So I am punting on this (Travis CI) failure for now.]

billziss-gh commented 6 years ago

Closing this as I believe the issue is resolved. Let me know if this is not the case.