Fuse hang on copyfile

That's hanwen/go-fuse which powers rclone mount2 rather than bazil/fuse which powers rclone mount...

It looks like that fix is already integrated into rclone mount2 so that is another alternative to try... Though I keep meaning to get rid of rclone mount2 as we have too many mount implementations as it is!

Looking at Commits · bazil/fuse · GitHub it hasn't had a commit for nearly 2 years so I wonder if the project is dying.

In my opinion rclone cmount is the most reliable mount as it uses libfuse directly. We use it for macOS and Windows by default as rclone mount. The only reason we don't use it for linux is that we need to compile it with shared library support which means opening the whole CGO can of worms. However there is a solution for that too... Provide official CGO/libfuse build of rclone for Linux · Issue #5090 · rclone/rclone · GitHub

This is an example of porting that hack to bazil/fuse which will require us to maintain a fork of the library:

Not sure if you want to go that route.

Confirmed. Running rcd separate from mount worked as did mount2.

1 Like

That fork looks like it branched from bazil/fuse in about 2016 so has lots of stuff missing in comparison.

It does have that deadlock fix though and what appears to be a fix for macFUSE v4 but I'm not 100% sure about that.

I tried porting that patch to bazil/fuse. @zSeriesGuy can you see if this fixes the problem for you? For some reason your copyfile recipe doesn't deadlock for me so I don't know if it is working! Thank you

v1.59.0-beta.6041.664958a3a.fix-fuse-deadlock on branch fix-fuse-deadlock (uploaded in 15-30 mins)

Still hangs.

2022/03/25 16:46:47 DEBUG : rclone: Version "v1.59.0-beta.6041.664958a3a.fix-fuse-deadlock" starting with parameters ["/usr/bin/rclone" "mount" "GD:" "/Plex" "--rc" "--rc-addr=:5572" "--rc-user=XXXX" "--rc-pass=XXXX" "--debug-fuse" "--log-level=DEBUG" "--log-file=/home/rclonelog.txt"]
2022/03/25 16:46:47 INFO  : Using --user XXXX --pass XXXX as authenticated user
2022/03/25 16:46:47 NOTICE: Serving remote control on http://[::]:5572/
2022/03/25 16:46:47 DEBUG : Creating backend with remote "GD:"
2022/03/25 16:46:47 DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
2022/03/25 16:46:47 DEBUG : GD: Loaded invalid token from config file - ignoring
2022/03/25 16:46:48 DEBUG : Saving config "token" in section "GD" of the config file
2022/03/25 16:46:48 DEBUG : Keeping previous permissions for config file: -rwxr-xr-x
2022/03/25 16:46:48 DEBUG : GD: Saved new token in config file
2022/03/25 16:46:49 DEBUG : Google drive root '': Mounting on "/Plex"
2022/03/25 16:46:49 DEBUG : : Root: 
2022/03/25 16:46:49 DEBUG : : >Root: node=/, err=<nil>
2022/03/25 16:46:49 DEBUG : fuse: <- Lookup [ID=0x4 Node=0x1 Uid=0 Gid=0 Pid=13043] ".bazil-fuse-epoll-hack"
2022/03/25 16:46:49 DEBUG : /: Lookup: name=".bazil-fuse-epoll-hack"
2022/03/25 16:46:49 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2022/03/25 16:46:49 DEBUG : fuse: -> [ID=0x4] Lookup error=ENOENT
2022/03/25 16:46:49 DEBUG : fuse: <- Create [ID=0x6 Node=0x1 Uid=0 Gid=0 Pid=13043] ".bazil-fuse-epoll-hack" fl=OpenWriteOnly+OpenCreate+OpenTruncate mode=---x------ umask=-----w--w-
2022/03/25 16:46:49 DEBUG : fuse: -> [ID=0x6] Create {0xffffffffffffffff gen=1 valid=1m0s attr={valid=0s ino=18446744073709551615 size=0 mode=-rw-r--r--}} {0xffffffffffffffff fl=0}
2022/03/25 16:46:49 DEBUG : fuse: <- Poll [ID=0x8 Node=0xffffffffffffffff Uid=0 Gid=0 Pid=13043] 0xffffffffffffffff kh=1 fl=0 ev=PollIn+PollPriority+PollOut+PollError+PollHangup
2022/03/25 16:46:49 DEBUG : fuse: missing handle: 0xffffffffffffffff 0x1
2022/03/25 16:46:49 DEBUG : fuse: -> [ID=0x8] Poll error=ESTALE
2022/03/25 16:46:49 DEBUG : fuse: <- Flush [ID=0xa Node=0xffffffffffffffff Uid=0 Gid=0 Pid=13043] 0xffffffffffffffff fl=0x0 owner=336d72dc2d0c78d2
2022/03/25 16:46:49 DEBUG : fuse: missing handle: 0xffffffffffffffff 0x1
2022/03/25 16:46:49 DEBUG : fuse: -> [ID=0xa] Flush error=ESTALE
2022/03/25 16:46:49 DEBUG : fuse: <- Release [ID=0xc Node=0xffffffffffffffff Uid=0 Gid=0 Pid=0] 0xffffffffffffffff fl=OpenWriteOnly rfl=0 owner=0
2022/03/25 16:46:49 DEBUG : fuse: missing handle: 0xffffffffffffffff 0x1
2022/03/25 16:46:49 DEBUG : fuse: -> [ID=0xc] Release error=ESTALE
2022/03/25 16:46:52 DEBUG : fuse: <- Getattr [ID=0xe Node=0x1 Uid=0 Gid=0 Pid=13047] 0x0 fl=0
2022/03/25 16:46:52 DEBUG : /: Attr: 
2022/03/25 16:46:52 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0xe] Getattr valid=1s ino=1 size=0 mode=drwxr-xr-x
2022/03/25 16:46:52 DEBUG : fuse: <- Getxattr [ID=0x10 Node=0x1 Uid=0 Gid=0 Pid=13047] "security.selinux" 255
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x10] Getxattr error=operation not supported
2022/03/25 16:46:52 DEBUG : fuse: <- Getxattr [ID=0x12 Node=0x1 Uid=0 Gid=0 Pid=13047] "system.posix_acl_access" 0
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x12] Getxattr error=operation not supported
2022/03/25 16:46:52 DEBUG : fuse: <- Open [ID=0x14 Node=0x1 Uid=0 Gid=0 Pid=13047] dir=true fl=OpenReadOnly+OpenDirectory+OpenNonblock
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x14] Open 0x1 fl=0
2022/03/25 16:46:52 DEBUG : fuse: <- Read [ID=0x16 Node=0x1 Uid=0 Gid=0 Pid=13047] 0x1 4096 @0x0 dir=true fl=0 owner=0 ffl=OpenReadOnly+OpenDirectory+OpenNonblock
2022/03/25 16:46:52 DEBUG : /: ReadDirAll: 
2022/03/25 16:46:52 DEBUG : /: >ReadDirAll: item=11, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x16] Read 400
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x18 Node=0x1 Uid=0 Gid=0 Pid=13047] "Backups"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="Backups"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=Backups/, err=<nil>
2022/03/25 16:46:52 DEBUG : Backups/: Attr: 
2022/03/25 16:46:52 DEBUG : Backups/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x18] Lookup 0x2 gen=0 valid=1s attr={valid=1s ino=6361105148754046731 size=0 mode=drwxr-xr-x}
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x1a Node=0x1 Uid=0 Gid=0 Pid=13047] "Cera&Taylor"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="Cera&Taylor"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=Cera&Taylor/, err=<nil>
2022/03/25 16:46:52 DEBUG : Cera&Taylor/: Attr: 
2022/03/25 16:46:52 DEBUG : Cera&Taylor/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x1a] Lookup 0x3 gen=0 valid=1s attr={valid=1s ino=6475667535930301470 size=0 mode=drwxr-xr-x}
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x1c Node=0x1 Uid=0 Gid=0 Pid=13047] "DVD Wishlist.xlsx"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="DVD Wishlist.xlsx"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=DVD Wishlist.xlsx, err=<nil>
2022/03/25 16:46:52 DEBUG : DVD Wishlist.xlsx: Attr: 
2022/03/25 16:46:52 DEBUG : DVD Wishlist.xlsx: >Attr: a=valid=1s ino=0 size=0 mode=-rw-r--r--, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x1c] Lookup 0x4 gen=0 valid=1s attr={valid=1s ino=3946788626199850250 size=0 mode=-rw-r--r--}
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x1e Node=0x1 Uid=0 Gid=0 Pid=13047] "Home Assistant Backups"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="Home Assistant Backups"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=Home Assistant Backups/, err=<nil>
2022/03/25 16:46:52 DEBUG : Home Assistant Backups/: Attr: 
2022/03/25 16:46:52 DEBUG : Home Assistant Backups/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x1e] Lookup 0x5 gen=0 valid=1s attr={valid=1s ino=11534653835894747696 size=0 mode=drwxr-xr-x}
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x20 Node=0x1 Uid=0 Gid=0 Pid=13047] "LBC"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="LBC"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=LBC/, err=<nil>
2022/03/25 16:46:52 DEBUG : LBC/: Attr: 
2022/03/25 16:46:52 DEBUG : LBC/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x20] Lookup 0x6 gen=0 valid=1s attr={valid=1s ino=16551047373813223959 size=0 mode=drwxr-xr-x}
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x22 Node=0x1 Uid=0 Gid=0 Pid=13047] "PlexCrypt"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="PlexCrypt"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=PlexCrypt/, err=<nil>
2022/03/25 16:46:52 DEBUG : PlexCrypt/: Attr: 
2022/03/25 16:46:52 DEBUG : PlexCrypt/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x22] Lookup 0x7 gen=0 valid=1s attr={valid=1s ino=12464805663151100271 size=0 mode=drwxr-xr-x}
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x24 Node=0x1 Uid=0 Gid=0 Pid=13047] "RRHA"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="RRHA"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=RRHA/, err=<nil>
2022/03/25 16:46:52 DEBUG : RRHA/: Attr: 
2022/03/25 16:46:52 DEBUG : RRHA/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x24] Lookup 0x8 gen=0 valid=1s attr={valid=1s ino=4635526621099911147 size=0 mode=drwxr-xr-x}
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x26 Node=0x1 Uid=0 Gid=0 Pid=13047] "Shared"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="Shared"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=Shared/, err=<nil>
2022/03/25 16:46:52 DEBUG : Shared/: Attr: 
2022/03/25 16:46:52 DEBUG : Shared/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x26] Lookup 0x9 gen=0 valid=1s attr={valid=1s ino=13280543842340301409 size=0 mode=drwxr-xr-x}
2022/03/25 16:46:52 DEBUG : fuse: <- Lookup [ID=0x28 Node=0x1 Uid=0 Gid=0 Pid=13047] "test"
2022/03/25 16:46:52 DEBUG : /: Lookup: name="test"
2022/03/25 16:46:52 DEBUG : /: >Lookup: node=test/, err=<nil>
2022/03/25 16:46:52 DEBUG : test/: Attr: 
2022/03/25 16:46:52 DEBUG : test/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x28] Lookup 0xa gen=0 valid=1s attr={valid=1s ino=14597221540505887712 size=0 mode=drwxr-xr-x}
2022/03/25 16:46:52 DEBUG : fuse: <- Read [ID=0x2a Node=0x1 Uid=0 Gid=0 Pid=13047] 0x1 4096 @0x190 dir=true fl=0 owner=0 ffl=OpenReadOnly+OpenDirectory+OpenNonblock
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x2a] Read 0
2022/03/25 16:46:52 DEBUG : fuse: <- Release [ID=0x2c Node=0x1 Uid=0 Gid=0 Pid=0] 0x1 fl=OpenReadOnly+OpenDirectory+OpenNonblock rfl=0 owner=0
2022/03/25 16:46:52 DEBUG : fuse: -> [ID=0x2c] Release
2022/03/25 16:47:41 DEBUG : rc: "operations/copyfile": with parameters map[dstFs:/home dstRemote:testfile2.txt srcFs:/Plex srcRemote:testfile.txt]
2022/03/25 16:47:41 DEBUG : Creating backend with remote "/Plex"
2022/03/25 16:47:41 DEBUG : fuse: <- Getattr [ID=0x2e Node=0x1 Uid=0 Gid=0 Pid=13043] 0x0 fl=0
2022/03/25 16:47:41 DEBUG : /: Attr: 
2022/03/25 16:47:41 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:47:41 DEBUG : fuse: -> [ID=0x2e] Getattr valid=1s ino=1 size=0 mode=drwxr-xr-x
2022/03/25 16:47:41 DEBUG : Creating backend with remote "/home"
2022/03/25 16:47:41 DEBUG : fuse: <- Lookup [ID=0x30 Node=0x1 Uid=0 Gid=0 Pid=13043] "testfile.txt"
2022/03/25 16:47:41 DEBUG : /: Lookup: name="testfile.txt"
2022/03/25 16:47:41 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2022/03/25 16:47:41 DEBUG : fuse: -> [ID=0x30] Lookup error=ENOENT
2022/03/25 16:47:41 ERROR : rc: "operations/copyfile": error: object not found
2022/03/25 16:47:49 DEBUG : Google drive root '': Checking for changes on remote
2022/03/25 16:47:57 DEBUG : rc: "operations/copyfile": with parameters map[dstFs:/home dstRemote:testfile2.txt srcFs:/Plex/test srcRemote:testfile.txt]
2022/03/25 16:47:57 DEBUG : Creating backend with remote "/Plex/test"
2022/03/25 16:47:57 DEBUG : fuse: <- Lookup [ID=0x32 Node=0x1 Uid=0 Gid=0 Pid=13043] "test"
2022/03/25 16:47:57 DEBUG : /: Lookup: name="test"
2022/03/25 16:47:57 DEBUG : /: >Lookup: node=test/, err=<nil>
2022/03/25 16:47:57 DEBUG : test/: Attr: 
2022/03/25 16:47:57 DEBUG : test/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2022/03/25 16:47:57 DEBUG : fuse: -> [ID=0x32] Lookup 0xa gen=0 valid=1s attr={valid=1s ino=14597221540505887712 size=0 mode=drwxr-xr-x}
2022/03/25 16:47:57 DEBUG : fuse: <- Lookup [ID=0x34 Node=0xa Uid=0 Gid=0 Pid=13043] "testfile.txt"
2022/03/25 16:47:57 DEBUG : test/: Lookup: name="testfile.txt"
2022/03/25 16:47:58 DEBUG : test/: >Lookup: node=test/testfile.txt, err=<nil>
2022/03/25 16:47:58 DEBUG : test/testfile.txt: Attr: 
2022/03/25 16:47:58 DEBUG : test/testfile.txt: >Attr: a=valid=1s ino=0 size=20 mode=-rw-r--r--, err=<nil>
2022/03/25 16:47:58 DEBUG : fuse: -> [ID=0x34] Lookup 0xb gen=0 valid=1s attr={valid=1s ino=8624812173295771553 size=20 mode=-rw-r--r--}
2022/03/25 16:47:58 DEBUG : testfile.txt: Need to transfer - File not found at Destination
2022/03/25 16:47:58 DEBUG : fuse: <- Open [ID=0x36 Node=0xb Uid=0 Gid=0 Pid=13043] dir=false fl=OpenReadOnly
2022/03/25 16:47:58 DEBUG : test/testfile.txt: Open: flags=OpenReadOnly
2022/03/25 16:47:58 DEBUG : test/testfile.txt: Open: flags=O_RDONLY
2022/03/25 16:47:58 DEBUG : test/testfile.txt: >Open: fd=test/testfile.txt (r), err=<nil>
2022/03/25 16:47:58 DEBUG : test/testfile.txt: >Open: fh=&{test/testfile.txt (r)}, err=<nil>
2022/03/25 16:47:58 DEBUG : fuse: -> [ID=0x36] Open 0x1 fl=0
SIGQUIT: quit
PC=0x46af41 m=0 sigcode=0

goroutine 48 [syscall]:
runtime.notetsleepg(0xc0005d7da0, 0xc000063fd0)
	runtime/lock_futex.go:236 +0x34 fp=0xc000063fa0 sp=0xc000063f68 pc=0x40bb54
os/signal.signal_recv()
	runtime/sigqueue.go:169 +0x98 fp=0xc000063fc0 sp=0xc000063fa0 pc=0x4657b8
os/signal.loop()
	os/signal/signal_unix.go:24 +0x19 fp=0xc000063fe0 sp=0xc000063fc0 pc=0x75e019
runtime.goexit()
	runtime/asm_amd64.s:1581 +0x1 fp=0xc000063fe8 sp=0xc000063fe0 pc=0x469141
created by os/signal.Notify.func1.1
	os/signal/signal.go:151 +0x2c

goroutine 1 [select]:
github.com/rclone/rclone/cmd/mountlib.(*MountPoint).Wait(0xc000447c80)
	github.com/rclone/rclone/cmd/mountlib/mount.go:293 +0x285
github.com/rclone/rclone/cmd/mountlib.NewMountCommand.func1(0xc000300500, {0xc0005a01b0, 0x9, 0x9})
	github.com/rclone/rclone/cmd/mountlib/mount.go:183 +0x298
github.com/spf13/cobra.(*Command).execute(0xc000300500, {0xc0005a0120, 0x9, 0x9})
	github.com/spf13/cobra@v1.2.1/command.go:860 +0x5f8
github.com/spf13/cobra.(*Command).ExecuteC(0x2ce9e20)
	github.com/spf13/cobra@v1.2.1/command.go:974 +0x3bc
github.com/spf13/cobra.(*Command).Execute(...)
	github.com/spf13/cobra@v1.2.1/command.go:902
github.com/rclone/rclone/cmd.Main()
	github.com/rclone/rclone/cmd/cmd.go:553 +0x76
main.main()
	github.com/rclone/rclone/rclone.go:14 +0x17

goroutine 9 [select]:
go.opencensus.io/stats/view.(*worker).start(0xc0000eba00)
	go.opencensus.io@v0.23.0/stats/view/worker.go:276 +0xb9
created by go.opencensus.io/stats/view.init.0
	go.opencensus.io@v0.23.0/stats/view/worker.go:34 +0x92

goroutine 41 [IO wait]:
internal/poll.runtime_pollWait(0x7f8bd38dd438, 0x72)
	runtime/netpoll.go:234 +0x89
internal/poll.(*pollDesc).wait(0xc00036f180, 0xc000afa000, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00036f180, {0xc000afa000, 0x1645, 0x1645})
	internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc00036f180, {0xc000afa000, 0xc000489900, 0xc000afa005})
	net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000774298, {0xc000afa000, 0xc000afa005, 0x28d})
	net/net.go:183 +0x45
github.com/rclone/rclone/fs/fshttp.(*timeoutConn).Read(0xc00000d6e0, {0xc000afa000, 0x682e6ff35b9cca4f, 0x100008c71347a97})
	github.com/rclone/rclone/fs/fshttp/dialer.go:104 +0x32
crypto/tls.(*atLeastReader).Read(0xc0001a7e18, {0xc000afa000, 0x0, 0x409dcd})
	crypto/tls/conn.go:777 +0x3d
bytes.(*Buffer).ReadFrom(0xc0002c13f8, {0x1edf820, 0xc0001a7e18})
	bytes/buffer.go:204 +0x98
crypto/tls.(*Conn).readFromUntil(0xc0002c1180, {0x7f8bd36b4058, 0xc00000d6e0}, 0x1645)
	crypto/tls/conn.go:799 +0xe5
crypto/tls.(*Conn).readRecordOrCCS(0xc0002c1180, 0x0)
	crypto/tls/conn.go:606 +0x112
crypto/tls.(*Conn).readRecord(...)
	crypto/tls/conn.go:574
crypto/tls.(*Conn).Read(0xc0002c1180, {0xc0005f8000, 0x1000, 0x0})
	crypto/tls/conn.go:1277 +0x16f
net/http.(*persistConn).Read(0xc0007e4d80, {0xc0005f8000, 0xc00008db60, 0xc00087bd30})
	net/http/transport.go:1926 +0x4e
bufio.(*Reader).fill(0xc000164c60)
	bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000164c60, 0x1)
	bufio/bufio.go:139 +0x5d
net/http.(*persistConn).readLoop(0xc0007e4d80)
	net/http/transport.go:2087 +0x1ac
created by net/http.(*Transport).dialConn
	net/http/transport.go:1747 +0x1e05

goroutine 19 [select]:
github.com/rclone/rclone/backend/drive.(*Fs).ChangeNotify.func1()
	github.com/rclone/rclone/backend/drive/drive.go:2755 +0x158
created by github.com/rclone/rclone/backend/drive.(*Fs).ChangeNotify
	github.com/rclone/rclone/backend/drive/drive.go:2746 +0xd6

goroutine 18 [IO wait]:
internal/poll.runtime_pollWait(0x7f8bd38dd608, 0x72)
	runtime/netpoll.go:234 +0x89
internal/poll.(*pollDesc).wait(0xc0000ebc00, 0xc000058000, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc0000ebc00)
	internal/poll/fd_unix.go:402 +0x22c
net.(*netFD).accept(0xc0000ebc00)
	net/fd_unix.go:173 +0x35
net.(*TCPListener).accept(0xc00000c480)
	net/tcpsock_posix.go:140 +0x28
net.(*TCPListener).Accept(0xc00000c480)
	net/tcpsock.go:262 +0x3d
net/http.(*Server).Serve(0xc0002f4380, {0x1f07310, 0xc00000c480})
	net/http/server.go:3002 +0x394
github.com/rclone/rclone/cmd/serve/httplib.(*Server).Serve.func1()
	github.com/rclone/rclone/cmd/serve/httplib/httplib.go:352 +0x318
created by github.com/rclone/rclone/cmd/serve/httplib.(*Server).Serve
	github.com/rclone/rclone/cmd/serve/httplib/httplib.go:328 +0x127

goroutine 46 [runnable]:
syscall.Syscall(0x0, 0x10, 0xc000600000, 0x21000)
	syscall/asm_linux_amd64.s:20 +0x5
syscall.read(0x2cdada0, {0xc000600000, 0xc, 0x0})
	syscall/zsyscall_linux_amd64.go:687 +0x4d
syscall.Read(...)
	syscall/syscall_unix.go:189
bazil.org/fuse.(*Conn).ReadRequest(0xc000164f00)
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fuse.go:583 +0xc6
bazil.org/fuse/fs.(*Server).Serve(0xc0002f5a40, {0x1ee2a20, 0xc0009b8540})
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fs/serve.go:501 +0x3d5
github.com/rclone/rclone/cmd/mount.mount.func2()
	github.com/rclone/rclone/cmd/mount/mount.go:100 +0x3e
created by github.com/rclone/rclone/cmd/mount.mount
	github.com/rclone/rclone/cmd/mount/mount.go:99 +0x373

goroutine 82 [IO wait]:
internal/poll.runtime_pollWait(0x7f8bd38dd520, 0x72)
	runtime/netpoll.go:234 +0x89
internal/poll.(*pollDesc).wait(0xc00036fe80, 0xc00062ee21, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00036fe80, {0xc00062ee21, 0x1, 0x1})
	internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc00036fe80, {0xc00062ee21, 0x0, 0x1})
	net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000774750, {0xc00062ee21, 0x0, 0x17ee4a0})
	net/net.go:183 +0x45
net/http.(*connReader).backgroundRead(0xc00062ee10)
	net/http/server.go:672 +0x3f
created by net/http.(*connReader).startBackgroundRead
	net/http/server.go:668 +0xcf

goroutine 81 [running]:
	goroutine running on other thread; stack unavailable
created by net/http.(*Server).Serve
	net/http/server.go:3034 +0x4e8

goroutine 42 [select]:
net/http.(*persistConn).writeLoop(0xc0007e4d80)
	net/http/transport.go:2386 +0xfb
created by net/http.(*Transport).dialConn
	net/http/transport.go:1748 +0x1e65

goroutine 86 [runnable]:
github.com/rclone/rclone/fs/accounting.(*StatsInfo).startAverageLoop.func1·dwrap·21()
	github.com/rclone/rclone/fs/accounting/stats.go:341
runtime.goexit()
	runtime/asm_amd64.s:1581 +0x1
created by github.com/rclone/rclone/fs/accounting.(*StatsInfo).startAverageLoop.func1
	github.com/rclone/rclone/fs/accounting/stats.go:341 +0x72

goroutine 51 [chan receive]:
github.com/rclone/rclone/lib/atexit.Register.func1.1()
	github.com/rclone/rclone/lib/atexit/atexit.go:45 +0x2f
created by github.com/rclone/rclone/lib/atexit.Register.func1
	github.com/rclone/rclone/lib/atexit/atexit.go:44 +0x6d

goroutine 87 [runnable]:
syscall.Syscall(0x1, 0x10, 0xc0007d9aa0, 0x20)
	syscall/asm_linux_amd64.s:20 +0x5
syscall.write(0xc0003a1990, {0xc0007d9aa0, 0x1, 0x50})
	syscall/zsyscall_linux_amd64.go:915 +0x4d
syscall.Write(...)
	syscall/syscall_unix.go:214
bazil.org/fuse.(*Conn).writeToKernel(0x7f8bfa6c4108, {0xc0007d9aa0, 0x20, 0x20})
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fuse.go:1168 +0xea
bazil.org/fuse.(*Conn).respond(0x44ce92, {0xc0007d9aa0, 0x173c240, 0x1})
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fuse.go:1181 +0x25
bazil.org/fuse.(*Header).respond(0xc0008b5d80, {0xc0007d9aa0, 0xc00086caf0, 0x0})
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fuse.go:313 +0x45
bazil.org/fuse.(*OpenRequest).Respond(0xc0008b5d80, 0xc00086caf0)
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fuse.go:1811 +0x97
bazil.org/fuse/fs.(*Server).handleRequest(0xc0002f5a40, {0x1f1f150, 0xc0008b5e40}, {0x1ee2a40, 0xc00017e7f0}, 0xc0008b5d40, {0x1f00c80, 0xc0008b5d80}, 0xc0003a1f08)
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fs/serve.go:1245 +0x176c
bazil.org/fuse/fs.(*Server).serve(0xc0002f5a40, {0x1f00c80, 0xc0008b5d80})
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fs/serve.go:1015 +0x645
bazil.org/fuse/fs.(*Server).Serve.func1()
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fs/serve.go:512 +0x69
created by bazil.org/fuse/fs.(*Server).Serve
	bazil.org/fuse@v0.0.0-20200524192727-fb710f7dfd05/fs/serve.go:510 +0x3c5

rax    0xca
rbx    0x0
rcx    0x46af43
rdx    0x0
rdi    0x2d3a180
rsi    0x80
rbp    0xc000063f18
rsp    0xc000063ed0
r8     0x0
r9     0x0
r10    0x0
r11    0x286
r12    0x7ffd03a59ad0
r13    0x0
r14    0xc0005236c0
r15    0x7f8bd3bd2c78
rip    0x46af41
rflags 0x286
cs     0x33
fs     0x0
gs     0x0

Thanks for giving it a go.

I think I'll abandon that line of attack since I haven't got the capacity to be maintaining a fork of something like bazil/fuse and it is wizard level code that needs a special kind of filing system expert to understand! I'm at the level of "can play a filing system expert on TV" so I know just how difficult the code is but not enough to work out what is wrong with it.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.