Okay, I found the offending sparql query, that makes tracker crash and burn for me. For me tracker dies with the following debug messages:
(tracker-miner-fs:1197): Tracker-CRITICAL **: 14:36:25.957: Could not execute sparql: GDBus.Error:org.freedesktop.Tracker1.SparqlError.Internal: Not a ISO 8601 date string. Allowed form is [-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm]
In strace, the offending query is:
INSERT DATA {\nGRAPH <urn:uuid:472ed0cc-40ff-4e37-9c0c-062d78656540> {\n_:1 a nfo:FileDataObject , nie:InformationElement , nfo:Folder ; \n nie:dataSource <urn:nepomuk:datasource:6b397c2211a096d778fae0a21cf10ea2> ; \n nfo:belongsToContainer <urn:uuid:30e161e0-33ce-4ee1-8520-90ae893368e5> ; \n nfo:fileSize 4096 ; \n nie:isStoredAs _:1 ; \n nfo:fileLastModified \"292278994-08-17T07:12:55.807Z\" ; \n nfo:fileName \"With Love\" ; \n nfo:fileLastAccessed \"2021-05-26T11:45:26Z\" ; \n nie:mimeType \"inode/directory\" ; \n nie:url \"file:///run/media/defaultuser/ec5e57e8-5cd2-4dd4-8a82-d0d2f274de59/Music/Christina%20Grimmie/Christina%20Grimmie/With%20Love\" ; \n tracker:available TRUE .\n}\n};\n
As you can see, the modification timestamp is horribly wrong. So sparql rightfully chokes on it.
If I run stat from the command line manually, I get the following:
File: /run/media/defaultuser/ec5e57e8-5cd2-4dd4-8a82-d0d2f274de59/Music/Christina Grimmie/Christina Grimmie/With Love/
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: b341h/45889d Inode: 9437904 Links: 2
Access: (0755/drwxr-xr-x) Uid: (100000/defaultuser) Gid: ( 1000/ system)
Access: 2021-05-26 13:45:26.000000000
Modify: 1970-01-01 00:00:00.000000000
Change: 2019-07-15 19:47:12.000000000
So I guess it just has no modification timestamp?
It seems like newer versions of tracker fallback to setting it to the unix epoch start: src/miners/fs/tracker-miner-files.c · master · mirror / tracker-miners · GitLab
But that is a new change: tracker-miner-fs: Fall back if no modification date is found (c6beebb1) · Commits · mirror / tracker-miners · GitLab
Maybe that causes some issues or that change isn’t in Sailfish yet?
It also explains why it only breaks on 64bit. The date is ~INT_MAX, which on 32bit has 4 digits (2038) and on 64bit has a lot more.