iCloud Drive: Crashes when accessing shared iCloud Folder

What is the problem you are having with rclone?

When syncing a local directory with my iCloud Drive, rclone crashes when it attempts to access a shared iCloud folder that somebody else created and shared with me. This is by no means urgent, but it seemed worth documenting.

Run the command 'rclone version' and share the full output of the command.

rclone v1.69.1
- os/version: fedora 41 (64 bit)
- os/kernel: 6.12.13-200.fc41.x86_64 (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.24.0
- go/linking: static
- go/tags: none

Which cloud storage system are you using? (eg Google Drive)

iclouddrive

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone mount -vv --vfs-cache-mode full iCloud: iCloud/

The rclone config contents with secrets removed.

[iCloud]
type = iclouddrive
apple_id = [email]
password = [password]
cookies = [cookies]
trust_token = [token]

A log from the command with the -vv flag

2025/02/19 20:49:55 DEBUG : /: Lookup: name="[SHARED FOLDER]"
2025/02/19 20:49:55 DEBUG : /: >Lookup: node=[SHARED FOLDER]/, err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: Attr: 
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2025/02/19 20:49:55 DEBUG : /: Lookup: name="[SHARED FOLDER]"
2025/02/19 20:49:55 DEBUG : /: >Lookup: node=[SHARED FOLDER]/, err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: Attr: 
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2025/02/19 20:49:55 DEBUG : /: Lookup: name="[SHARED FOLDER]"
2025/02/19 20:49:55 DEBUG : /: >Lookup: node=[SHARED FOLDER]/, err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: Attr: 
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2025/02/19 20:49:55 DEBUG : /: Attr: 
2025/02/19 20:49:55 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2025/02/19 20:49:55 DEBUG : /: Lookup: name=".Trash"
2025/02/19 20:49:55 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2025/02/19 20:49:55 DEBUG : /: Lookup: name=".Trash-1000"
2025/02/19 20:49:55 DEBUG : /: >Lookup: node=.Trash-1000/, err=<nil>
2025/02/19 20:49:55 DEBUG : .Trash-1000/: Attr: 
2025/02/19 20:49:55 DEBUG : .Trash-1000/: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: ReadDirAll: 
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: >ReadDirAll: item=5, err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: Lookup: name="Screenshot 2024-03-05 at 10.14.58\u202fAM.png"
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: >Lookup: node=[SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png, err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: Attr: 
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: >Attr: a=valid=1s ino=0 size=931855 mode=-rw-r--r--, err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: Lookup: name=".hidden"
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/: >Lookup: node=<nil>, err=no such file or directory
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: Open: flags=OpenReadOnly+0x40000
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: Open: flags=O_RDONLY|0x40000
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: newRWFileHandle: 
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: >newRWFileHandle: err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: >Open: fd=[SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png (rw), err=<nil>
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: >Open: fh=&{[SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png (rw)}, err=<nil>
2025/02/19 20:49:55 DEBUG : &{[SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png (rw)}: Read: len=32768, offset=0
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png(0xc000c5f840): _readAt: size=32768, off=0
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png(0xc000c5f840): openPending: 
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: vfs cache: checking remote fingerprint "931855,2024-03-05 15:15:04 +0000 UTC" against cached fingerprint "931855,2024-03-05 15:15:04 +0000 UTC"
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: vfs cache: truncate to size=931855 (not needed as size correct)
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]: Added virtual directory entry vAddFile: "Screenshot 2024-03-05 at 10.14.58\u202fAM.png"
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png(0xc000c5f840): >openPending: err=<nil>
2025/02/19 20:49:55 DEBUG : vfs cache: looking for range={Pos:0 Size:32768} in [] - present false
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: ChunkedReader.RangeSeek from -1 to 0 length -1
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: ChunkedReader.Read at -1 length 32768 chunkOffset 0 chunkSize 134217728
2025/02/19 20:49:55 DEBUG : [SHARED FOLDER]/Screenshot 2024-03-05 at 10.14.58 AM.png: ChunkedReader.openRange at 0 length 134217728
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x1235c2f]

goroutine 720 [running]:
github.com/rclone/rclone/backend/iclouddrive/api.(*DriveService).DownloadFile(0xc00006f240, {0x2c21d88, 0x40da320}, {0x0, 0x0}, {0xc000566bc0, 0x2, 0x2})
	github.com/rclone/rclone/backend/iclouddrive/api/drive.go:257 +0x1af
github.com/rclone/rclone/backend/iclouddrive.(*Object).Open.func1()
	github.com/rclone/rclone/backend/iclouddrive/iclouddrive.go:1024 +0xd1
github.com/rclone/rclone/fs.pacerInvoker(0x1, 0xa, 0xc000580008?)
	github.com/rclone/rclone/fs/pacer.go:88 +0x32
github.com/rclone/rclone/lib/pacer.(*Pacer).call(0xc000bd01e0, 0xc000d657c0, 0xa)
	github.com/rclone/rclone/lib/pacer/pacer.go:197 +0x7c
github.com/rclone/rclone/lib/pacer.(*Pacer).Call(0xc000bd01e0, 0xc000d657c0)
	github.com/rclone/rclone/lib/pacer/pacer.go:216 +0x93
github.com/rclone/rclone/backend/iclouddrive.(*Object).Open(0xc000db99a0, {0x2c21d88, 0x40da320}, {0xc000566bc0, 0x2, 0x2})
	github.com/rclone/rclone/backend/iclouddrive/iclouddrive.go:1013 +0x1ca
github.com/rclone/rclone/fs/chunkedreader.(*sequential).openRange(0xc0000267e0)
	github.com/rclone/rclone/fs/chunkedreader/sequential.go:209 +0x4e5
github.com/rclone/rclone/fs/chunkedreader.(*sequential).Read(0xc0000267e0, {0xc000d0a000?, 0xc00092be30?, 0x477e79?})
	github.com/rclone/rclone/fs/chunkedreader/sequential.go:73 +0x2ff
io.copyBuffer({0x2bfb1c0, 0xc000b8f530}, {0x7f959bc78020, 0xc0000267e0}, {0x0, 0x0, 0x0})
	io/io.go:429 +0x190
io.Copy(...)
	io/io.go:388
github.com/rclone/rclone/fs/accounting.(*Account).WriteTo(0xc000b70500, {0x2c0bb00, 0xc000026770})
	github.com/rclone/rclone/fs/accounting/accounting.go:413 +0x13c
github.com/rclone/rclone/vfs/vfscache/downloaders.(*downloader).download(0x0?)
	github.com/rclone/rclone/vfs/vfscache/downloaders/downloaders.go:628 +0x28
github.com/rclone/rclone/vfs/vfscache/downloaders.(*Downloaders)._newDownloader.func1()
	github.com/rclone/rclone/vfs/vfscache/downloaders/downloaders.go:195 +0x72
created by github.com/rclone/rclone/vfs/vfscache/downloaders.(*Downloaders)._newDownloader in goroutine 687
	github.com/rclone/rclone/vfs/vfscache/downloaders/downloaders.go:193 +0x1fb
1 Like

welcome to the forum,

you can easily suggest changes by editing the docs, click the pencil icon at
rclone/docs/content/iclouddrive.md at master · rclone/rclone · GitHub
that will create create a PR

@cak can you report this as a GitHub issue please - rclone should never crash like that - thanks. We can then get the iCloud drive maintainer to take a look.

1 Like

Issue has been created. Thank you!