Storj_uplink.dll

Hello,

I keep having many such entries on various devices, for example when I try to recreate databases:

Feb 11, 2021 8:53 PM: Failed to load assembly C:\Program Files\Duplicati 2\storj_uplink.dll, error message: Im Modul wurde ein Assemblymanifest erwartet. (Ausnahme von HRESULT: 0x80131018)
{"ClassName":"System.BadImageFormatException","Message":"Im Modul wurde ein Assemblymanifest erwartet. (Ausnahme von HRESULT: 0x80131018)","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":"   bei System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)\r\n   bei System.Reflection.Assembly.LoadFile(String path)\r\n   bei Duplicati.Library.DynamicLoader.DynamicLoader`1.FindInterfaceImplementors(String[] additionalfolders)","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nnLoadFile\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Reflection.RuntimeAssembly\nSystem.Reflection.RuntimeAssembly nLoadFile(System.String, System.Security.Policy.Evidence)","HResult":-2146234344,"Source":"mscorlib","WatsonBuckets":null,"BadImageFormat_FileName":null,"BadImageFormat_FusionLog":null}

Always this file: storj_uplink.dll

Is this normal?

Best regards
Oliver

Does the file exist on your system? There have been a couple reports in the past of antimalware software blocking access to the file or deleting it. What antimalware do you use?

What system are you running on? Is it ARM-based? Here are some related issues:

The Tardigrade backend is not supported on ARM yet:

Here is a similar error, but not running on ARM:

@ollibraun, are you running this on an ARM-architecture system?

No, only Windows 10 and Windows xxxx Server, but I don’t have access to an affected system at the moment.

Only Windows Defender.

Architecture x64

[v2.0.5.112-2.0.5.112_canary_2021-01-20]

So, the Recreating Database job is running. Let’s wait and see. But the error is there.

The file exists:

 Datentraeger in Laufwerk C: ist Windows Server 2012 R2 x64
 Volumeseriennummer: BC17-58EB

 Verzeichnis von C:\Program Files\Duplicati 2

20.01.2021  21:56        10.642.432 storj_uplink.dll
               1 Datei(en),     10.642.432 Bytes
               0 Verzeichnis(se), 62.386.667.520 Bytes frei

More Log:

Wähle eine Protokollierungsstufe aus und sehe dir die Meldungen an während sie erstellt werden:

ExplicitOnly
17. Febr. 2021 13:04: Fehler beim Laden der Assembly C:\Program Files\Duplicati 2\storj_uplink.dll, Fehlermeldung: Im Modul wurde ein Assemblymanifest erwartet. (Ausnahme von HRESULT: 0x80131018)
17. Febr. 2021 13:04: Fehler beim Laden der Assembly C:\Program Files\Duplicati 2\storj_uplink.dll, Fehlermeldung: Im Modul wurde ein Assemblymanifest erwartet. (Ausnahme von HRESULT: 0x80131018)
17. Febr. 2021 13:04: Fehler beim Laden der Assembly C:\Program Files\Duplicati 2\storj_uplink.dll, Fehlermeldung: Im Modul wurde ein Assemblymanifest erwartet. (Ausnahme von HRESULT: 0x80131018)
17. Febr. 2021 13:04: Fehler beim Laden der Assembly C:\Program Files\Duplicati 2\storj_uplink.dll, Fehlermeldung: Im Modul wurde ein Assemblymanifest erwartet. (Ausnahme von HRESULT: 0x80131018)
17. Febr. 2021 12:19: Starting - ExecuteNonQuery: INSERT INTO "BlocksetEntry" ("BlocksetID", "Index", "BlockID") SELECT DISTINCT "H"."BlocksetID", "H"."Index", "H"."BlockID" FROM (SELECT "E"."BlocksetID" AS "BlocksetID", "D"."FullIndex" AS "Index", "F"."ID" AS "BlockID" FROM ( SELECT "E"."BlocksetID", "F"."Index" + ("E"."BlocklistIndex" * 3200) AS "FullIndex", "F"."BlockHash", MIN(102400, "E"."Length" - (("F"."Index" + ("E"."BlocklistIndex" * 3200)) * 102400)) AS "BlockSize", "E"."Hash", "E"."BlocklistSize", "E"."BlocklistHash" FROM ( SELECT * FROM ( SELECT "A"."BlocksetID", "A"."Index" AS "BlocklistIndex", MIN(3200 * 32, ((("B"."Length" + 102400 - 1) / 102400) - ("A"."Index" * (3200))) * 32) AS "BlocklistSize", "A"."Hash" AS "BlocklistHash", "B"."Length" FROM "BlocklistHash" A, "Blockset" B WHERE "B"."ID" = "A"."BlocksetID" ) C, "Block" D WHERE "C"."BlocklistHash" = "D"."Hash" AND "C"."BlocklistSize" = "D"."Size" ) E, "TempBlocklist-0C7A232D71E34A4386E35375C35824A7" F WHERE "F"."BlocklistHash" = "E"."Hash" ORDER BY "E"."BlocksetID", "FullIndex" ) D, "BlocklistHash" E, "Block" F, "Block" G WHERE "D"."BlocksetID" = "E"."BlocksetID" AND "D"."BlocklistHash" = "E"."Hash" AND "D"."BlocklistSize" = "G"."Size" AND "D"."BlocklistHash" = "G"."Hash" AND "D"."Blockhash" = "F"."Hash" AND "D"."BlockSize" = "F"."Size" UNION SELECT "Blockset"."ID" AS "BlocksetID", 0 AS "Index", "Block"."ID" AS "BlockID" FROM "Blockset", "Block", "TempSmalllist-37B44EDD17186844B05ED0A1F27EC478" S WHERE "Blockset"."Fullhash" = "S"."FileHash" AND "S"."BlockHash" = "Block"."Hash" AND "S"."BlockSize" = "Block"."Size" AND "Blockset"."Length" = "S"."BlockSize" AND "Blockset"."Length" <= 102400 ) H WHERE ("H"."BlocksetID" || ':' || "H"."Index") NOT IN (SELECT ("ExistingBlocksetEntries"."BlocksetID" || ':' || "ExistingBlocksetEntries"."Index") FROM "BlocksetEntry" "ExistingBlocksetEntries" )
17. Febr. 2021 12:19: ExecuteNonQuery: INSERT INTO "Block" ("Hash", "Size", "VolumeID") SELECT "FullHash" AS "Hash", "Length" AS "Size", -1 AS "VolumeID" FROM (SELECT "A"."FullHash", "A"."Length", CASE WHEN "B"."Hash" IS NULL THEN '' ELSE "B"."Hash" END AS "Hash", CASE WHEN "B"."Size" is NULL THEN -1 ELSE "B"."Size" END AS "Size" FROM (SELECT DISTINCT "FullHash", "Length" FROM (SELECT "BlockHash" AS "FullHash", "BlockSize" AS "Length" FROM ( SELECT "E"."BlocksetID", "F"."Index" + ("E"."BlocklistIndex" * 3200) AS "FullIndex", "F"."BlockHash", MIN(102400, "E"."Length" - (("F"."Index" + ("E"."BlocklistIndex" * 3200)) * 102400)) AS "BlockSize", "E"."Hash", "E"."BlocklistSize", "E"."BlocklistHash" FROM ( SELECT * FROM ( SELECT "A"."BlocksetID", "A"."Index" AS "BlocklistIndex", MIN(3200 * 32, ((("B"."Length" + 102400 - 1) / 102400) - ("A"."Index" * (3200))) * 32) AS "BlocklistSize", "A"."Hash" AS "BlocklistHash", "B"."Length" FROM "BlocklistHash" A, "Blockset" B WHERE "B"."ID" = "A"."BlocksetID" ) C, "Block" D WHERE "C"."BlocklistHash" = "D"."Hash" AND "C"."BlocklistSize" = "D"."Size" ) E, "TempBlocklist-0C7A232D71E34A4386E35375C35824A7" F WHERE "F"."BlocklistHash" = "E"."Hash" ORDER BY "E"."BlocksetID", "FullIndex" ) UNION SELECT "BlockHash", "BlockSize" FROM "TempSmalllist-37B44EDD17186844B05ED0A1F27EC478" )) A LEFT OUTER JOIN "Block" B ON "B"."Hash" = "A"."FullHash" AND "B"."Size" = "A"."Length" ) WHERE "FullHash" != "Hash" AND "Length" != "Size" took 0:00:13:01.041
17. Febr. 2021 12:06: Starting - ExecuteNonQuery: INSERT INTO "Block" ("Hash", "Size", "VolumeID") SELECT "FullHash" AS "Hash", "Length" AS "Size", -1 AS "VolumeID" FROM (SELECT "A"."FullHash", "A"."Length", CASE WHEN "B"."Hash" IS NULL THEN '' ELSE "B"."Hash" END AS "Hash", CASE WHEN "B"."Size" is NULL THEN -1 ELSE "B"."Size" END AS "Size" FROM (SELECT DISTINCT "FullHash", "Length" FROM (SELECT "BlockHash" AS "FullHash", "BlockSize" AS "Length" FROM ( SELECT "E"."BlocksetID", "F"."Index" + ("E"."BlocklistIndex" * 3200) AS "FullIndex", "F"."BlockHash", MIN(102400, "E"."Length" - (("F"."Index" + ("E"."BlocklistIndex" * 3200)) * 102400)) AS "BlockSize", "E"."Hash", "E"."BlocklistSize", "E"."BlocklistHash" FROM ( SELECT * FROM ( SELECT "A"."BlocksetID", "A"."Index" AS "BlocklistIndex", MIN(3200 * 32, ((("B"."Length" + 102400 - 1) / 102400) - ("A"."Index" * (3200))) * 32) AS "BlocklistSize", "A"."Hash" AS "BlocklistHash", "B"."Length" FROM "BlocklistHash" A, "Blockset" B WHERE "B"."ID" = "A"."BlocksetID" ) C, "Block" D WHERE "C"."BlocklistHash" = "D"."Hash" AND "C"."BlocklistSize" = "D"."Size" ) E, "TempBlocklist-0C7A232D71E34A4386E35375C35824A7" F WHERE "F"."BlocklistHash" = "E"."Hash" ORDER BY "E"."BlocksetID", "FullIndex" ) UNION SELECT "BlockHash", "BlockSize" FROM "TempSmalllist-37B44EDD17186844B05ED0A1F27EC478" )) A LEFT OUTER JOIN "Block" B ON "B"."Hash" = "A"."FullHash" AND "B"."Size" = "A"."Length" ) WHERE "FullHash" != "Hash" AND "Length" != "Size"
17. Febr. 2021 12:06: ExecuteScalarInt64: SELECT COUNT(*) FROM "RemoteVolume" WHERE "State" = "Temporary" AND "Type" = "Blocks" took 0:00:00:00.000
17. Febr. 2021 12:06: Starting - ExecuteScalarInt64: SELECT COUNT(*) FROM "RemoteVolume" WHERE "State" = "Temporary" AND "Type" = "Blocks"
17. Febr. 2021 12:06: CommitRecreatedDb took 0:00:08:06.139
17. Febr. 2021 11:58: Starting - CommitRecreatedDb
17. Febr. 2021 11:58: ExecuteScalarInt64: SELECT "ID" FROM "Remotevolume" WHERE "Name" = "duplicati-iffec5e6c12d94fadbdf9ee51612bfd1e.dindex.zip" took 0:00:00:00.000
17. Febr. 2021 11:58: Starting - ExecuteScalarInt64: SELECT "ID" FROM "Remotevolume" WHERE "Name" = "duplicati-iffec5e6c12d94fadbdf9ee51612bfd1e.dindex.zip"
17. Febr. 2021 11:58: ExecuteScalarInt64: SELECT "VolumeID" FROM "Block" WHERE "Hash" = "ydISA1qPDVJqZ7kQ9KK3hfbuM++JxO5DMyzKu7ZW/To=" AND "Size" = 102400 took 0:00:00:00.000
17. Febr. 2021 11:58: Starting - ExecuteScalarInt64: SELECT "VolumeID" FROM "Block" WHERE "Hash" = "ydISA1qPDVJqZ7kQ9KK3hfbuM++JxO5DMyzKu7ZW/To=" AND "Size" = 102400
17. Febr. 2021 11:58: ExecuteScalarInt64: SELECT "VolumeID" FROM "Block" WHERE "Hash" = "OMvX0KURLr4Td/jS2IAxQxkBENaC0JhfmQX0iL9XZvk=" AND "Size" = 102400 took 0:00:00:00.000
17. Febr. 2021 11:58: Starting - ExecuteScalarInt64: SELECT "VolumeID" FROM "Block" WHERE "Hash" = "OMvX0KURLr4Td/jS2IAxQxkBENaC0JhfmQX0iL9XZvk=" AND "Size" = 102400
17. Febr. 2021 11:58: ExecuteScalarInt64: SELECT "VolumeID" FROM "Block" WHERE "Hash" = "F8zA8OSwf4CXz3XU9MtAfixoQ3tqngl9EA0w+is4tZg=" AND "Size" = 102400 took 0:00:00:00.000

Hours later:

Was this an existing backup configuration that worked in a prior version of Duplicati?

Unfortunately, I have no idea why this is happening. I believe that storj_uplink.dll is deployed in both x86 and x64 versions.

After a few hours, the database rebuild was then successfully completed.

I then used --purge-broken-files to repair the backup, deleted the old versions (–version=x-x), rebuilt the database again and everything seems to be working fine.

However, I have seen the error pop up repeatedly on two machines that have been using these jobs successfully for some time. When recreating the database and with --purge-broken-files.

Common factor: backup destination OneDrive and SharePoint.

But no matter, it all works in the end.

(My original mistake was to make the entire Advanced options window blank when deleting. But you are only allowed to remove the exceptions there).

Thank you for your help! :slight_smile:

was seen earlier under a different name. The current theory is that the file giving the problem is an extraneous file and can be removed (but don’t remove the ones in the win-x64 or win-x86 folders).

If you like, you can copy it elsewhere in case it’s needed back, but that’s unlikely especially without
actually using Tardigrade, which I guess you don’t. Somebody else would have to test that it works.