Sharing storage between CLI version 2.7.2 and 3.2.3

Hello everyone!
I have a storage on OneDrive since some years and I use it from two different hosts using, so far, the same 2.7.2 CLI version of Duplicacy.
Now, I would like to move to version 3.2.3 but my older host doesn’t support it (it is OS X El Capitan).
Will I encounter issues if I update the newer system to 3.2.3 and keep the older host to 2.7.2?

Thank you very much!
Best Regards,
Alessandro

Few questions:

  • why do you want to move to newer version if older works fine?
  • I’m surprised the new version does not work on older macOS. Does it refuse to start or what happens? Go programs are fully contained executables, they should work fine

Assuming you want to move to new version for the new features, I would avoid using old and new together; old one won’t understand chunk format of the new one and will likely be forced to create duplicate data in the best case, or fail on the worst.

First response: there isn’t any particular reason, just to be up to date :wink: (Periodically I update all my software to the last version available and these days is the turn of duplicacy).

Second response: it crashes because it lacks a function from a system library:

Mac-di-Ale:~ gpz500$ duplicacy_osx_x64_3.2.3
dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
  Referenced from: /Users/gpz500/bin/duplicacy_osx_x64_3.2.3
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _clock_gettime
  Referenced from: /Users/gpz500/bin/duplicacy_osx_x64_3.2.3
  Expected in: /usr/lib/libSystem.B.dylib

SIGTRAP: trace trap
PC=0x7fff6304b075 m=0 sigcode=1

goroutine 0 [idle]:
runtime.walltime()
        /usr/local/go/src/runtime/sys_darwin.go:304 +0x47 fp=0xc000195548 sp=0xc000195518 pc=0x10005c307
time.now()
        /usr/local/go/src/runtime/timestub.go:16 +0x19 fp=0xc000195578 sp=0xc000195548 pc=0x10006d9b9
time.Now()
        /usr/local/go/src/time/time.go:1090 +0x17 fp=0xc000195588 sp=0xc000195578 pc=0x1000d2bb7
google.golang.org/grpc/internal/grpcrand.init()
        /Users/gchen/zincbox/go/pkg/mod/google.golang.org/grpc@v1.28.1/internal/grpcrand/grpcrand.go:30 +0x1d fp=0xc000195600 sp=0xc000195588 pc=0x1005742bd
runtime.doInit(0x1017ef2a0)
        /usr/local/go/src/runtime/proc.go:6331 +0x126 fp=0xc000195730 sp=0xc000195600 pc=0x10004bc46
runtime.doInit(0x1017ef260)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195860 sp=0xc000195730 pc=0x10004bb91
runtime.doInit(0x1018013e0)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195990 sp=0xc000195860 pc=0x10004bb91
runtime.doInit(0x1017f3280)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195ac0 sp=0xc000195990 pc=0x10004bb91
runtime.doInit(0x1017fa5a0)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195bf0 sp=0xc000195ac0 pc=0x10004bb91
runtime.doInit(0x1017f6fe0)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195d20 sp=0xc000195bf0 pc=0x10004bb91
runtime.doInit(0x101805a00)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195e50 sp=0xc000195d20 pc=0x10004bb91
runtime.doInit(0x1017f7a80)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195f80 sp=0xc000195e50 pc=0x10004bb91
runtime.main()
        /usr/local/go/src/runtime/proc.go:233 +0x1d3 fp=0xc000195fe0 sp=0xc000195f80 pc=0x10003e8f3
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000195fe8 sp=0xc000195fe0 pc=0x100070c81

goroutine 1 [running, locked to thread]:
runtime.systemstack_switch()
        /usr/local/go/src/runtime/asm_amd64.s:459 fp=0xc0001954e8 sp=0xc0001954e0 pc=0x10006ea40
runtime.libcCall(0xc00008d980?, 0xc000195598?)
        /usr/local/go/src/runtime/sys_libc.go:49 +0x66 fp=0xc000195518 sp=0xc0001954e8 pc=0x10005ca26
runtime.walltime()
        /usr/local/go/src/runtime/sys_darwin.go:304 +0x47 fp=0xc000195548 sp=0xc000195518 pc=0x10005c307
time.now()
        /usr/local/go/src/runtime/timestub.go:16 +0x19 fp=0xc000195578 sp=0xc000195548 pc=0x10006d9b9
time.Now()
        /usr/local/go/src/time/time.go:1090 +0x17 fp=0xc000195588 sp=0xc000195578 pc=0x1000d2bb7
google.golang.org/grpc/internal/grpcrand.init()
        /Users/gchen/zincbox/go/pkg/mod/google.golang.org/grpc@v1.28.1/internal/grpcrand/grpcrand.go:30 +0x1d fp=0xc000195600 sp=0xc000195588 pc=0x1005742bd
runtime.doInit(0x1017ef2a0)
        /usr/local/go/src/runtime/proc.go:6331 +0x126 fp=0xc000195730 sp=0xc000195600 pc=0x10004bc46
runtime.doInit(0x1017ef260)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195860 sp=0xc000195730 pc=0x10004bb91
runtime.doInit(0x1018013e0)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195990 sp=0xc000195860 pc=0x10004bb91
runtime.doInit(0x1017f3280)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195ac0 sp=0xc000195990 pc=0x10004bb91
runtime.doInit(0x1017fa5a0)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195bf0 sp=0xc000195ac0 pc=0x10004bb91
runtime.doInit(0x1017f6fe0)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195d20 sp=0xc000195bf0 pc=0x10004bb91
runtime.doInit(0x101805a00)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195e50 sp=0xc000195d20 pc=0x10004bb91
runtime.doInit(0x1017f7a80)
        /usr/local/go/src/runtime/proc.go:6308 +0x71 fp=0xc000195f80 sp=0xc000195e50 pc=0x10004bb91
runtime.main()
        /usr/local/go/src/runtime/proc.go:233 +0x1d3 fp=0xc000195fe0 sp=0xc000195f80 pc=0x10003e8f3
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000195fe8 sp=0xc000195fe0 pc=0x100070c81

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000056fb0 sp=0xc000056f90 pc=0x10003ecf6
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:369
runtime.forcegchelper()
        /usr/local/go/src/runtime/proc.go:302 +0xad fp=0xc000056fe0 sp=0xc000056fb0 pc=0x10003eb8d
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000056fe8 sp=0xc000056fe0 pc=0x100070c81
created by runtime.init.6
        /usr/local/go/src/runtime/proc.go:290 +0x25

goroutine 3 [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000057790 sp=0xc000057770 pc=0x10003ecf6
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:369
runtime.bgsweep(0x0?)
        /usr/local/go/src/runtime/mgcsweep.go:278 +0x8e fp=0xc0000577c8 sp=0xc000057790 pc=0x100029eae
runtime.gcenable.func1()
        /usr/local/go/src/runtime/mgc.go:178 +0x26 fp=0xc0000577e0 sp=0xc0000577c8 pc=0x10001eb66
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0000577e8 sp=0xc0000577e0 pc=0x100070c81
created by runtime.gcenable
        /usr/local/go/src/runtime/mgc.go:178 +0x6b

goroutine 4 [GC scavenge wait]:
runtime.gopark(0xc00007e000?, 0x1010bd7e0?, 0x1?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000057f70 sp=0xc000057f50 pc=0x10003ecf6
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:369
runtime.(*scavengerState).park(0x10186f3e0)
        /usr/local/go/src/runtime/mgcscavenge.go:389 +0x53 fp=0xc000057fa0 sp=0xc000057f70 pc=0x100027f53
runtime.bgscavenge(0x0?)
        /usr/local/go/src/runtime/mgcscavenge.go:617 +0x45 fp=0xc000057fc8 sp=0xc000057fa0 pc=0x100028525
runtime.gcenable.func2()
        /usr/local/go/src/runtime/mgc.go:179 +0x26 fp=0xc000057fe0 sp=0xc000057fc8 pc=0x10001eb06
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000057fe8 sp=0xc000057fe0 pc=0x100070c81
created by runtime.gcenable
        /usr/local/go/src/runtime/mgc.go:179 +0xaa

goroutine 5 [finalizer wait]:
runtime.gopark(0x1018702c0?, 0xc0001061a0?, 0x0?, 0x0?, 0xc000056770?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000056628 sp=0xc000056608 pc=0x10003ecf6
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:369
runtime.runfinq()
        /usr/local/go/src/runtime/mfinal.go:180 +0x10f fp=0xc0000567e0 sp=0xc000056628 pc=0x10001dc6f
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0000567e8 sp=0xc0000567e0 pc=0x100070c81
created by runtime.createfing
        /usr/local/go/src/runtime/mfinal.go:157 +0x45

rax    0x7fff63084290
rbx    0x101c0ca50
rcx    0x0
rdx    0x0
rdi    0x7fff63084400
rsi    0x0
rbp    0x7fff5fbff990
rsp    0x7fff5fbff978
r8     0x7fff6306d04c
r9     0xffc00000
r10    0x7fff5fbff76f
r11    0x7fff63084400
r12    0xc000195550
r13    0x8
r14    0x7fff63084400
r15    0x129961bdc
rip    0x7fff6304b075
rflags 0x246
cs     0x2b
fs     0x0
gs     0x0
Mac-di-Ale:~ gpz500$

Anyway, I presume it’s better to stay on 2.7.2 as long as I share the storage between the two hosts.

Oh interesting :slight_smile:

I prefer to never update something that is working: not broken— don’t fix mentality :). So fully agree here.

And yet, if you feel adventurous, you may want to try to build the latest duplicacy from source on your old Mac instead of using the prebuilt binaries.

It shall be pretty straightforward, see this post for an example Tested 3.0.1 but it crashes - #7 by arnetietz

Go version was upgraded to 1.19 from 1.16 in CLI 3.2.1. Go 1.19 doesn’t support macOS 10.12 and lower. So the CLI does not work on OS X El Capitan any more.

You may be able to build a working CLI if you use go 1.16 to build your own binary. You may also need to revert back to older versions for some of the dependencies in go.mod.