Package: libapt-pkg4.12
Version: 0.9.0~exp1
Severity: important
Tags: patch
Dear Maintainer,
After upgrading apt to 0.9.0~exp1 or later, in some locales such as
ja_JP.UTF-8 or zh_CN.UTF-8, aptitude stucks when downloading any data:
# env LANG=ja_JP.UTF-8 aptitude update
^C
# env LANG=ja_JP.UTF-8 aptitude changelog aptitude
^C
By bisecting changes in the bzr repository I found this problem is
caused by a commit revision 2129.55.33 "use a static FileFd::Write
overload to reduce duplication of write()-retry code".
More specifically, replacing the loop in function
pkgAcquire::Worker::OutFdReady with a call to FileFd::Write causes the
behavior. Previously, this function tries a single write() call against
file descriptor OutFd, trims OutQueue and returns true. The current
version calls FileFd::Write, which issues write() repeatedly until the
request finishes. This write() fails with errno EAGAIN after a
successful write of 65536 bytes, which suggests the size of the buffer
of a pipe OutFd points to.
An attached patch simply reverts pkgAcquire::Worker::OutFdReady to its
0.8.16~exp13 version.
Regards,
--
YOSHINO Yoshihito
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'),
(1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 3.3.0-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libapt-pkg4.12 depends on:
ii libbz2-1.0 1.0.6-1
ii libc6 2.13-32
ii libgcc11:4.7.0-7
ii libstdc++6 4.7.0-7
ii multiarch-support 2.13-32
ii zlib1g 1:1.2.7.dfsg-1
libapt-pkg4.12 recommends no packages.
libapt-pkg4.12 suggests no packages.
-- no debconf information
revert_use_of_static_write_in_OutFdReady.patch
Description: Binary data