Please describe what you are doing to trigger the bug:
Backing up to two to storage types with the CLI version 2.3 - first via SFTP to a Mac Pro on the local network, secondly to a Wasabi account.
Please describe what you expect to happen (but doesn’t):
Backing up to the local SFTP storage should happen quite quickly (it always has until recently with v2.2 and v2.3).
Please describe what actually happens (the wrong behaviour):
Backup to the Mac Pro with SFTP is showing (with -stats enabled) 20-30 KB (kilobytes) per second. Backing up to Wasabi over my 1.5 mbps outbound runs faster, at the moment, than the local network-based SFTP storage. I transferred a large file to the Mac Pro via rsync and that transferred at a rate of 100+ MB/sec over my local wired gigabit network.
The output from the profile is included below:
Blockquote
goroutine 81 [running]:
runtime/pprof.writeGoroutineStacks(0xfdefa0, 0xc00035a000, 0x0, 0x0)
/usr/local/go/src/runtime/pprof/pprof.go:679 +0x9d
runtime/pprof.writeGoroutine(0xfdefa0, 0xc00035a000, 0x2, 0x40bc49, 0xc0159e4160)
/usr/local/go/src/runtime/pprof/pprof.go:668 +0x44
runtime/pprof.(*Profile).WriteTo(0x16b7e20, 0xfdefa0, 0xc00035a000, 0x2, 0xc00035a000, 0xc000152360)
/usr/local/go/src/runtime/pprof/pprof.go:329 +0x390
net/http/pprof.handler.ServeHTTP(0xc00c048071, 0x9, 0xff0840, 0xc00035a000, 0xc000140300)
/usr/local/go/src/net/http/pprof/pprof.go:245 +0x356
net/http/pprof.Index(0xff0840, 0xc00035a000, 0xc000140300)
/usr/local/go/src/net/http/pprof/pprof.go:268 +0x6f7
net/http.HandlerFunc.ServeHTTP(0xe888c0, 0xff0840, 0xc00035a000, 0xc000140300)
/usr/local/go/src/net/http/server.go:1995 +0x44
net/http.(*ServeMux).ServeHTTP(0x16ca1a0, 0xff0840, 0xc00035a000, 0xc000140300)
/usr/local/go/src/net/http/server.go:2375 +0x1d6
net/http.serverHandler.ServeHTTP(0xc000265860, 0xff0840, 0xc00035a000, 0xc000140300)
/usr/local/go/src/net/http/server.go:2774 +0xa8
net/http.(*conn).serve(0xc0000e41e0, 0xff4b00, 0xc017b00040)
/usr/local/go/src/net/http/server.go:1878 +0x851
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2884 +0x2f4
goroutine 1 [chan send, 5 minutes]:
github.com/gilbertchen/duplicacy/src.(*ChunkUploader).StartChunk(…)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_chunkuploader.go:72
github.com/gilbertchen/duplicacy/src.(*BackupManager).Backup.func3(0xc0013fc300, 0xc02b4df700)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_backupmanager.go:534 +0x4cf
github.com/gilbertchen/duplicacy/src.(*ChunkMaker).ForEachChunk(0xc0000f6900, 0xfdf0a0, 0xc00000e0d8, 0xc0002fd2f8, 0xc0002fd118)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_chunkmaker.go:286 +0x90c
github.com/gilbertchen/duplicacy/src.(*BackupManager).Backup(0xc0002ae900, 0xc000034180, 0x8, 0x1, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, …)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_backupmanager.go:510 +0x3820
main.backupRepository(0xc0002bc120)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:745 +0x66f
github.com/gilbertchen/duplicacy/vendor/github.com/gilbertchen/cli.Command.Run(0xe4b6c7, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe73f2c, 0x30, 0x0, …)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/gilbertchen/cli/command.go:160 +0x74d
github.com/gilbertchen/duplicacy/vendor/github.com/gilbertchen/cli.(*App).Run(0xc000185c20, 0xc0000e2000, 0x5, 0x5, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/gilbertchen/cli/app.go:179 +0x64f
main.main()
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:2074 +0x5b58
goroutine 18 [syscall, 16 minutes]:
os/signal.signal_recv(0x0)
/usr/local/go/src/runtime/sigqueue.go:139 +0x9c
os/signal.loop()
/usr/local/go/src/os/signal/signal_unix.go:23 +0x22
created by os/signal.init.0
/usr/local/go/src/os/signal/signal_unix.go:29 +0x41
goroutine 4 [chan receive, 16 minutes]:
main.main.func1(0xc000151f80)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:2068 +0x60
created by main.main
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:2067 +0x5b26
goroutine 5 [IO wait]:
internal/poll.runtime_pollWait(0x7f4e08e3ef08, 0x72, 0x0)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc00015e498, 0x72, 0x0, 0x0, 0xe4c886)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(…)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Accept(0xc00015e480, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:384 +0x1ba
net.(*netFD).accept(0xc00015e480, 0xc000060f70, 0xc000060f00, 0x40bc49)
/usr/local/go/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc0001580d8, 0xc0000cce08, 0xda3bc0, 0xde61671cb2832b01)
/usr/local/go/src/net/tcpsock_posix.go:139 +0x32
net.(*TCPListener).AcceptTCP(0xc0001580d8, 0xc0000cce30, 0x4c5416, 0x5de68007)
/usr/local/go/src/net/tcpsock.go:247 +0x48
net/http.tcpKeepAliveListener.Accept(0xc0001580d8, 0xc0000cce80, 0x18, 0xc000001080, 0x6e50f4)
/usr/local/go/src/net/http/server.go:3264 +0x2f
net/http.(*Server).Serve(0xc000265860, 0xff0f00, 0xc0001580d8, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:2859 +0x22d
net/http.(*Server).ListenAndServe(0xc000265860, 0xc000265860, 0x0)
/usr/local/go/src/net/http/server.go:2797 +0xe4
net/http.ListenAndServe(…)
/usr/local/go/src/net/http/server.go:3037
main.setGlobalOptions.func1(0x7fff432688ad, 0xe)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:158 +0x73
created by main.setGlobalOptions
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:157 +0x1b5
goroutine 6 [IO wait, 2 minutes]:
internal/poll.runtime_pollWait(0x7f4e08e3ee38, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc0002c0198, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(…)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0002c0180, 0xc0002f7000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x19b
net.(*netFD).Read(0xc0002c0180, 0xc0002f7000, 0x1000, 0x1000, 0xc0000cdcb0, 0x4172bf, 0x7f4e086aba90)
/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc00000e078, 0xc0002f7000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:177 +0x69
bufio.(*Reader).Read(0xc00009e360, 0xc000142221, 0x5, 0x5, 0xc0000cdda8, 0x40bc49, 0xc00dec2000)
/usr/local/go/src/bufio/bufio.go:223 +0x23e
io.ReadAtLeast(0xfddc20, 0xc00009e360, 0xc000142221, 0x5, 0x5, 0x5, 0x7f4e0b28fd98, 0x0, 0x0)
/usr/local/go/src/io/io.go:310 +0x88
io.ReadFull(…)
/usr/local/go/src/io/io.go:329
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*streamPacketCipher).readPacket(0xc000142200, 0xc0000004cb, 0xfddc20, 0xc00009e360, 0xc0002ce000, 0x25, 0xc2f, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/cipher.go:150 +0x84
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*connectionState).readPacket(0xc0002bc5a0, 0xc00009e360, 0x4, 0xc0000cdfb0, 0xc000146a80, 0xc0000cdf30, 0x4054cc)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/transport.go:129 +0x68
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*transport).readPacket(0xc0002bc5a0, 0xc0000cdf20, 0x3, 0x0, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/transport.go:113 +0x3b
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*handshakeTransport).readOnePacket(0xc000304000, 0xc0000cdf00, 0xc00dec2000, 0x25, 0x25, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/handshake.go:374 +0x53
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*handshakeTransport).readLoop(0xc000304000)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/handshake.go:197 +0x4d
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.newClientTransport
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/handshake.go:134 +0x181
goroutine 7 [select, 16 minutes]:
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*handshakeTransport).kexLoop(0xc000304000)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/handshake.go:268 +0xfa
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.newClientTransport
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/handshake.go:135 +0x1a3
goroutine 34 [chan receive, 2 minutes]:
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*handshakeTransport).readPacket(0xc000304000, 0xc00dec2000, 0x25, 0x25, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/handshake.go:187 +0x4e
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*mux).onePacket(0xc00026f0a0, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/mux.go:215 +0x48
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*mux).loop(0xc00026f0a0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/mux.go:190 +0x35
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.newMux
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/mux.go:128 +0x155
goroutine 35 [chan receive, 16 minutes]:
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*Client).handleGlobalRequests(0xc000163b40, 0xc0002ae1e0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/client.go:138 +0x6d
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.NewClient
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/client.go:57 +0x97
goroutine 36 [chan receive, 16 minutes]:
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*Client).handleChannelOpens(0xc000163b40, 0xc0002ae120)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/client.go:147 +0x52
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.NewClient
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/client.go:58 +0xc3
goroutine 37 [sync.Cond.Wait, 16 minutes]:
runtime.goparkunlock(…)
/usr/local/go/src/runtime/proc.go:307
sync.runtime_notifyListWait(0xc000163b10, 0x0)
/usr/local/go/src/runtime/sema.go:510 +0xf9
sync.(*Cond).Wait(0xc000163b00)
/usr/local/go/src/sync/cond.go:56 +0x9e
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*mux).Wait(0xc00026f0a0, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/mux.go:110 +0x82
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.NewClient.func1(0xc000163b40)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/client.go:60 +0x33
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.NewClient
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/client.go:59 +0xe5
goroutine 38 [chan receive, 16 minutes]:
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*forwardList).handleChannels(0xc000163b50, 0xc0002ae240)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/tcpip.go:186 +0x58
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.NewClient
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/client.go:63 +0x133
goroutine 39 [chan receive, 16 minutes]:
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*forwardList).handleChannels(0xc000163b50, 0xc0002ae2a0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/tcpip.go:186 +0x58
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.NewClient
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/client.go:64 +0x178
goroutine 40 [chan receive, 16 minutes]:
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*Session).wait(0xc00029a1b0, 0xc0002ae300, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/session.go:423 +0x7a
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.newSession.func1(0xc00029a1b0, 0xc0002ae300)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/session.go:593 +0x35
created by github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.newSession
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/session.go:592 +0xb4
goroutine 41 [sync.Cond.Wait, 2 minutes]:
runtime.goparkunlock(…)
/usr/local/go/src/runtime/proc.go:307
sync.runtime_notifyListWait(0xc000163bd0, 0xf8)
/usr/local/go/src/runtime/sema.go:510 +0xf9
sync.(*Cond).Wait(0xc000163bc0)
/usr/local/go/src/sync/cond.go:56 +0x9e
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*buffer).Read(0xc0001f79e0, 0xc00db6a038, 0x4, 0x4, 0x0, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/buffer.go:94 +0x1ca
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*channel).ReadExtended(0xc0001780c0, 0xc00db6a038, 0x4, 0x4, 0x0, 0x18, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/channel.go:351 +0x23f
github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh.(*channel).Read(0xc0001780c0, 0xc00db6a038, 0x4, 0x4, 0xc0013d0c00, 0x4, 0xc0013ce380)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/golang.org/x/crypto/ssh/channel.go:528 +0x5b
io.ReadAtLeast(0xfde3a0, 0xc000142300, 0xc00db6a038, 0x4, 0x4, 0x4, 0xc000150600, 0xc0000ceee0, 0x404fa5)
/usr/local/go/src/io/io.go:310 +0x88
io.ReadFull(…)
/usr/local/go/src/io/io.go:329
github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp.recvPacket(0xfde3a0, 0xc000142300, 0xc000000391, 0xc0001ed9e8, 0x1, 0x17, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp/packet.go:142 +0x82
github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp.(*conn).recvPacket(…)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp/conn.go:22
github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp.(*clientConn).recv(0xc000142300, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp/conn.go:75 +0xf2
github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp.(*clientConn).loop(0xc000142300)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp/conn.go:60 +0x5b
created by github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp.NewClientPipe
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp/client.go:143 +0x253
goroutine 65 [select, 16 minutes]:
github.com/gilbertchen/duplicacy/src.CreateChunkDownloader.func1(0xc0000e4820, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_chunkdownloader.go:80 +0x162
created by github.com/gilbertchen/duplicacy/src.CreateChunkDownloader
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_chunkdownloader.go:77 +0x1d4
goroutine 12 [chan receive, 2 minutes]:
github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp.(*clientConn).sendPacket(0xc000142300, 0xfea780, 0xc00023fbf0, 0xc00023fbf0, 0xe88e20, 0xc00d0e19e0, 0x42c2ef, 0xc000000008, 0xe88e20)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp/conn.go:109 +0xac
github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp.(*Client).Rename(0xc000142300, 0xc018892000, 0x74, 0xc020e42150, 0x67, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/pkg/sftp/client.go:610 +0xd8
github.com/gilbertchen/duplicacy/src.(*SFTPStorage).UploadFile.func3(0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_sftpstorage.go:330 +0x32d
github.com/gilbertchen/duplicacy/src.(*SFTPStorage).retry(0xc00031a240, 0xc00d0e1d10, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_sftpstorage.go:125 +0x70
github.com/gilbertchen/duplicacy/src.(*SFTPStorage).UploadFile(0xc00031a240, 0x0, 0xc01c1000f0, 0x48, 0xc02e000000, 0x806d6c, 0x1000000, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_sftpstorage.go:307 +0x3b1
github.com/gilbertchen/duplicacy/src.(*ChunkUploader).Upload(0xc0000301e0, 0x0, 0xc0013fc180, 0x92, 0xc0000dc201)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_chunkuploader.go:138 +0x246
github.com/gilbertchen/duplicacy/src.(*ChunkUploader).Start.func1(0xc0000301e0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_chunkuploader.go:60 +0x83
created by github.com/gilbertchen/duplicacy/src.(*ChunkUploader).Start
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_chunkuploader.go:55 +0x48
goroutine 13 [IO wait]:
internal/poll.runtime_pollWait(0x7f4e08e3ed68, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc020e36518, 0x72, 0x0, 0x1, 0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(…)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc020e36500, 0xc00023ff61, 0x1, 0x1, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x19b
net.(*netFD).Read(0xc020e36500, 0xc00023ff61, 0x1, 0x1, 0xc003e6f780, 0xc003e6f800, 0xc003e6f880)
/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc00000e008, 0xc00023ff61, 0x1, 0x1, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:177 +0x69
net/http.(*connReader).backgroundRead(0xc00023ff50)
/usr/local/go/src/net/http/server.go:677 +0x58
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:673 +0xca