Package: duplicity
Version: 0.4.3-2
Severity: grave
Justification: renders package unusable

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

This is quite odd. I've been using the current version of duplicity to
produce incremental backups since last week. Today is monday so we start
a fresh backup, which fails. It seems that invoking duplicity to create
any kind of full backup also fails with the following output:

$ duplicity --full /home/sam/bin file:///tmp/foob
Traceback (most recent call last):
  File "/usr/bin/duplicity", line 388, in ?
    if __name__ == "__main__": main()
  File "/usr/bin/duplicity", line 377, in main
    if action == "full": full_backup(col_stats)
  File "/usr/bin/duplicity", line 146, in full_backup
    bytes_written = write_multivol("full", tarblock_iter, globals.backend)
  File "/usr/bin/duplicity", line 82, in write_multivol
    globals.gpg_profile,globals.volsize)
  File "/usr/lib/python2.4/site-packages/duplicity/gpg.py", line 198, in 
GPGWriteFile
    try: data = block_iter.next(bytes_to_go).data
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 407, in 
next
    result = self.process(self.input_iter.next(), size)
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 284, in 
get_delta_iter_w_sig
    sigTarFile.close()
  File "/usr/lib/python2.4/site-packages/duplicity/tarfile.py", line 508, in 
close
    self.fileobj.write("\0" * (RECORDSIZE - remainder))
  File "/usr/lib/python2.4/site-packages/duplicity/dup_temp.py", line 120, in 
write
    return self.fileobj.write(buf)
  File "/usr/lib/python2.4/site-packages/duplicity/gpg.py", line 117, in write
    def write(self, buf): return self.gpg_input.write(buf)
IOError: [Errno 32] Broken pipe
close failed: [Errno 32] Broken pipe

And on my desktop system:

$ duplicity  --full bin file:///tmp/foo
Traceback (most recent call last):
  File "/usr/bin/duplicity", line 388, in ?
    if __name__ == "__main__": main()
  File "/usr/bin/duplicity", line 377, in main
    if action == "full": full_backup(col_stats)
  File "/usr/bin/duplicity", line 146, in full_backup
    bytes_written = write_multivol("full", tarblock_iter, globals.backend)
  File "/usr/bin/duplicity", line 82, in write_multivol
    globals.gpg_profile,globals.volsize)
  File "/usr/lib/python2.4/site-packages/duplicity/gpg.py", line 198, in 
GPGWriteFile
    try: data = block_iter.next(bytes_to_go).data
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 407, in 
next
    result = self.process(self.input_iter.next(), size)
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 487, in 
process
    data, last_block = self.get_data_block(fp, size - 512)
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 509, in 
get_data_block
    if fp.close(): raise DiffDirException("Error closing file")
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 347, in 
close
    self.callback(self.sig_gen.getsig(), *self.extra_args)
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 298, in 
callback
    sigTarFile.addfile(ti, cStringIO.StringIO(sig_string))
  File "/usr/lib/python2.4/site-packages/duplicity/tarfile.py", line 768, in 
addfile
    copyfileobj(fileobj, self.fileobj, tarinfo.size)
  File "/usr/lib/python2.4/site-packages/duplicity/tarfile.py", line 198, in 
copyfileobj
    dst.write(buf)
  File "/usr/lib/python2.4/site-packages/duplicity/dup_temp.py", line 120, in 
write
    return self.fileobj.write(buf)
  File "/usr/lib/python2.4/site-packages/duplicity/gpg.py", line 117, in write
    def write(self, buf): return self.gpg_input.write(buf)
IOError: [Errno 32] Broken pipe
close failed: [Errno 32] Broken pipe
close failed: [Errno 32] Broken pipe

strace reveals some more information. On the first system:

execve("duplicity", ["duplicity", "--full", "bin", "file:///tmp/foob"], []) = 
-1 ENOENT (No such file or directory)
execve("/bin/duplicity", ["duplicity", "--full", "bin", "file:///tmp/foob"], 
[]) = -1 ENOENT (No such file or directory)
execve("/usr/bin/duplicity", ["duplicity", "--full", "bin", 
"file:///tmp/foob"], []) = 0
clone(Process 13213 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0xb7dbb928) = 13213
[pid 13212] clone(Process 13214 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0xb7dbb928) = 13214
[pid 13212] waitpid(13214, Process 13212 suspended
 <unfinished ...>
[pid 13213] execve("gpg", ["gpg", "--logger-fd", "3", "--passphrase-fd", "7", 
"--batch", "--no-tty", "--no-secmem-warning", "--force-mdc", "--symmetric"], 
[]) = -1 ENOENT (No such file or directory)
[pid 13213] execve("/bin/gpg", ["gpg", "--logger-fd", "3", "--passphrase-fd", 
"7", "--batch", "--no-tty", "--no-secmem-warning", "--force-mdc", 
"--symmetric"], []) = -1 ENOENT (No such file or directory)
[pid 13213] execve("/usr/bin/gpg", ["gpg", "--logger-fd", "3", 
"--passphrase-fd", "7", "--batch", "--no-tty", "--no-secmem-warning", 
"--force-mdc", "--symmetric"], []) = 0
[pid 13213] exit_group(2)               = ?
Process 13213 detached
[pid 13214] execve("gpg", ["gpg", "--logger-fd", "4", "--passphrase-fd", "9", 
"--batch", "--no-tty", "--no-secmem-warning", "--force-mdc", "--symmetric"], 
[]) = -1 ENOENT (No such file or directory)
[pid 13214] execve("/bin/gpg", ["gpg", "--logger-fd", "4", "--passphrase-fd", 
"9", "--batch", "--no-tty", "--no-secmem-warning", "--force-mdc", 
"--symmetric"], []) = -1 ENOENT (No such file or directory)
[pid 13214] execve("/usr/bin/gpg", ["gpg", "--logger-fd", "4", 
"--passphrase-fd", "9", "--batch", "--no-tty", "--no-secmem-warning", 
"--force-mdc", "--symmetric"], []) = 0
[pid 13214] exit_group(2)               = ?
Process 13212 resumed
Process 13214 detached
<... waitpid resumed> 0xbfc22d58, 0)    = ? ERESTARTSYS (To be restarted)
- --- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(13214, [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], 0) = 13214
- --- SIGCHLD (Child exited) @ 0 (0) ---
Traceback (most recent call last):
  File "/usr/bin/duplicity", line 388, in ?
    if __name__ == "__main__": main()
  File "/usr/bin/duplicity", line 377, in main
    if action == "full": full_backup(col_stats)
  File "/usr/bin/duplicity", line 146, in full_backup
    bytes_written = write_multivol("full", tarblock_iter, globals.backend)
  File "/usr/bin/duplicity", line 82, in write_multivol
    globals.gpg_profile,globals.volsize)
  File "/usr/lib/python2.4/site-packages/duplicity/gpg.py", line 208, in 
GPGWriteFile
    file.close()
  File "/usr/lib/python2.4/site-packages/duplicity/gpg.py", line 123, in close
    self.gpg_process.wait()
  File "/var/lib/python-support/python2.4/GnuPGInterface.py", line 639, in wait
    raise IOError, "GnuPG exited non-zero, with code %d" % (e << 8)
IOError: GnuPG exited non-zero, with code 131072
- --- SIGPIPE (Broken pipe) @ 0 (0) ---
close failed: [Errno 32] Broken pipe
exit_group(1)                           = ?
Process 13212 detached

And again, on my desktop:

execve("/usr/bin/duplicity", ["duplicity", "--full", "bin", "file:///tmp/foo"], 
[]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0xb7e236f8) = 9245
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0xb7e236f8) = 9246
- --- SIGCHLD (Child exited) @ 0 (0) ---
- --- SIGPIPE (Broken pipe) @ 0 (0) ---
Traceback (most recent call last):
  File "/usr/bin/duplicity", line 388, in ?
    if __name__ == "__main__": main()
  File "/usr/bin/duplicity", line 377, in main
    if action == "full": full_backup(col_stats)
  File "/usr/bin/duplicity", line 146, in full_backup
    bytes_written = write_multivol("full", tarblock_iter, globals.backend)
  File "/usr/bin/duplicity", line 82, in write_multivol
    globals.gpg_profile,globals.volsize)
  File "/usr/lib/python2.4/site-packages/duplicity/gpg.py", line 198, in 
GPGWriteFile
    try: data = block_iter.next(bytes_to_go).data
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 407, in 
next
    result = self.process(self.input_iter.next(), size)
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 487, in 
process
    data, last_block = self.get_data_block(fp, size - 512)
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 509, in 
get_data_block
    if fp.close(): raise DiffDirException("Error closing file")
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 347, in 
close
    self.callback(self.sig_gen.getsig(), *self.extra_args)
  File "/usr/lib/python2.4/site-packages/duplicity/diffdir.py", line 298, in 
callback
    sigTarFile.addfile(ti, cStringIO.StringIO(sig_string))
  File "/usr/lib/python2.4/site-packages/duplicity/tarfile.py", line 768, in 
addfile
    copyfileobj(fileobj, self.fileobj, tarinfo.size)
  File "/usr/lib/python2.4/site-packages/duplicity/tarfile.py", line 198, in 
copyfileobj
    dst.write(buf)
  File "/usr/lib/python2.4/site-packages/duplicity/dup_temp.py", line 120, in 
write
    return self.fileobj.write(buf)
  File "/usr/lib/python2.4/site-packages/duplicity/gpg.py", line 117, in write
    def write(self, buf): return self.gpg_input.write(buf)
IOError: [Errno 32] Broken pipe
- --- SIGPIPE (Broken pipe) @ 0 (0) ---
close failed: [Errno 32] Broken pipe
exit_group(1)                           = ?
Process 9244 detached

I'm not sure why the stack trace is different on the two machines. The
desktop is running testing with a few packages pulled from unstable, the
server is running etch with duplicity backported from unstable. Both
systems have the same version of gnupg, python-gnupginterface and
python-pexpect.

Severity serious because I can't run duplicity at all now, on two
different machines.

- -- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (530, 'testing'), (520, 'unstable'), (510, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.22-fixdso (SMP w/1 CPU core)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages duplicity depends on:
ii  gnupg                         1.4.6-2    GNU privacy guard - a free PGP rep
ii  libc6                         2.6.1-1+b1 GNU C Library: Shared libraries
ii  librsync1                     0.9.7-1    Library which implements the rsync
ii  python                        2.4.4-6    An interactive high-level object-o
ii  python-central                0.5.15     register and build utility for Pyt
ii  python-gnupginterface         0.3.2-9    Python interface to GnuPG (GPG)
ii  python-pexpect                2.1-1      Python module for automating inter

duplicity recommends no packages.

- -- no debconf information

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD4DBQFG93OEshl/216gEHgRAjF8AKCvuyPRWqqmxHr1KAwndqcF6ltL1QCY3112
XzJzwhMh8fvGshFdaSve4A==
=ZFjA
-----END PGP SIGNATURE-----



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to