Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

panic in packet_write_wait when sftp connection terminated #629

Closed
mappu opened this issue Sep 21, 2016 · 2 comments
Closed

panic in packet_write_wait when sftp connection terminated #629

mappu opened this issue Sep 21, 2016 · 2 comments

Comments

@mappu
Copy link
Contributor

mappu commented Sep 21, 2016

Output of restic version

restic 0.1.0
compiled at 2016-07-24 13:01:02 with go1.7rc1

Expected behavior

No panic

Actual behavior

panic

Steps to reproduce the behavior

perform sftp backup over unreliable network connection

packet_write_wait: Connection to 172.x.y.z port 2222: Broken pipe
error loading tree: EOF
error loading tree: EOF
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
error loading tree: write |1: broken pipe
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x697faa]

goroutine 36762 [running]:
panic(0x7fe480, 0xc420010060)
    /redacted/Go/src/runtime/panic.go:500 +0x1a1
github.com/pkg/sftp.(*File).Write(0x0, 0xc427f3a000, 0x42d3d3, 0x42d3d3, 0xc425299828, 0x3, 0x3)
    /redacted/tmp/restic-build-812429403/src/github.com/pkg/sftp/client.go:971 +0x3a
restic/backend/sftp.(*SFTP).Save(0xc4200e3700, 0x86c13c, 0x4, 0xc42553a780, 0x40, 0xc427f3a000, 0x42d3d3, 0x42d3d3, 0x0, 0x447980)
    /redacted/tmp/restic-build-812429403/src/restic/backend/sftp/sftp.go:326 +0x2c0
restic/repository.(*Repository).savePacker(0xc4200587e0, 0xc42704e680, 0x8ea008febd9f6bb9, 0x78adbbbdb3639f96)
    /redacted/tmp/restic-build-812429403/src/restic/repository/packer_manager.go:115 +0x32b
restic/repository.(*Repository).SaveAndEncrypt(0xc4200587e0, 0xb9572c840415a100, 0xc42d8c4000, 0x484d9, 0x80000, 0xc425299e90, 0x0, 0x0, 0x0, 0x0, ...)
    /redacted/tmp/restic-build-812429403/src/restic/repository/repository.go:211 +0x432
restic.(*Archiver).Save(0xc4210f0820, 0x48400, 0xc42d8c4000, 0x484d9, 0x80000, 0xb9572c840415a1f5, 0x968ea008febd9f6b, 0xc778adbbbdb3639f, 0x5bf6d6d3e288476f, 0x0, ...)
    /redacted/tmp/restic-build-812429403/src/restic/archiver.go:102 +0x217
restic.(*Archiver).saveChunk(0xc4210f0820, 0x0, 0x484d9, 0x1, 0xc42d8c4000, 0x484d9, 0x80000, 0x0, 0xa3cee0, 0xc423561830, ...)
    /redacted/tmp/restic-build-812429403/src/restic/archiver.go:162 +0x118
created by restic.(*Archiver).SaveFile
    /redacted/tmp/restic-build-812429403/src/restic/archiver.go:237 +0x2fb
@fd0
Copy link
Member

fd0 commented Sep 21, 2016

Thanks for the report, this is a duplicate of #550.

@fd0 fd0 closed this as completed Sep 21, 2016
@fd0
Copy link
Member

fd0 commented Sep 21, 2016

It is also connected to #415 and #560, we need to implement a backend-agnostic retry-method.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants