Welcome to Vifm Q&A, where you can ask questions about using Vifm. Registration is optional, anonymous posts are moderated. E-mail and GitHub logins are enabled.
0 votes
in vifm by
retagged by

I have fuse-zip working in my machine (Mac OS ventura) having compiled fuse-zip using the new fuse-t library. I can mount a zip file with fuse-zip <zipfile.zip> <mountpoint>.

When I try to mount the same zip file in VIFM, I get "FUSE mounting selected file, please stand by.." and the process would hang.

I would kill the fuse-zip process from another terminal, and vifm will enter the ~/.config/vifm/fuse/.zip directory which would be empty. When I try to move back out from that directory, vifm will issue the message Can't unmount <filename>.zip. It may be busy.

In the vifm logs, it says: FUSE mount command: fuse-zip <zipfile.zip> /Users/xxxx/.config/vifm/fuse//<zipfile.zip> (Yes, that is a double slash before the <zipfile.zip>) I issue the same outside vifm, and the command successfully mounts the zipfile.

I tried the vifm version from brew and macports. I also compiled vifm from source. In all instances, I encountered the same problem.

1 Answer

0 votes
by
edited by
 
Best answer

I would kill the fuse-zip process from another terminal, and vifm will enter the ~/.config/vifm/fuse/.zip directory which would be empty.

This is a good indication that fuze-zip doesn't daemonize but instead waits for something and Vifm waits for fuze-zip to finish. You can probably try using ktrace in filetype command to see where fuse-zip stops (save log to a file).

fuse-zip has corresponding flag for not detaching:

    -f           don't detach from terminal
    -d           turn on debugging, also implies -f

Make sure you don't use either flag.


Update (comments' summary): it was a bug in fuse-t 1.0.23 (and maybe all earlier releases) which didn't show up with Vifm v0.12.1. The bug was reported upstream and fixed in fuse-t 1.0.24, so that it should work with any version of Vifm now.

by

Thank you for your help.

Neither -f or -d is fed to the fuse-zip command in vifm's filetype command.

I tried:

filetype *.zip FUSE_MOUNT|sudo ktrace trace fuse-zip %SOURCE_FILE %DESTINATION_DIR > /tmp/ktrace.out

and run vifm as root. Again, I killed the fuse-zip process. I have the ktrace.out file that is a few hundred megabytes big, but couldn't make any sense of it. Here's a tail of the last 200 lines:

https://pastebin.com/9KV1HYBE

by

It seems to trace all processes in the system. Is there dtrace? I think it might be more like strace in Linux (I'm not an OS X user, so my advice might not always be sound).

You can also try setsid fuse-zip ... or fuze-zip ... < /dev/null > /dev/null in a shell to see whether it detaches in this cases.

I've also remembered that v0.13 changed how FUSE commands are executed, which might have introduced a bug. Which Vifm versions have you tried?

by

I can't seem to make dtrace work. I think I have to set some privileges for the program to work.

At any rate, I downloaded and compiled a previous version (0.12.1) to see if it works, and it does. I will use this version for now. I'm sorry I could not provide you with a dtrace to help determine the problem.

by

So this is a regression. Thanks for the bug report then :) I'll figure it out in a VM (with tests if dtrace or gdb won't work due to inappropriate permissions, I think gdb didn't in the past).

by

I hope you can find the problem.

I have been using vifm for many years now and deeply appreciate your work.

Thank you!

by

Opened an issue in fuse-t, it needs to be fixed there. Earlier versions of Vifm just don't make this problem with fuse-t visible.

by

Fixed in fuse-t 1.0.24.

...