[Bug 1921626] Re: apt install - File has unexpected size - http pipeline
Julian Andres Klode
1921626 at bugs.launchpad.net
Thu Apr 8 11:08:35 UTC 2021
I tracked it down further today, accidentally finding a reproducer. In
methods/http.cc we check for Req.DownloadSize > Req.MaximumSize and fail
with an error if that's the case; hence ensuring our download was within
the allowed range for the request.
The issue is that Req.MaximumSize is calculated by
BaseHttpMethod::FindMaximumObjectSizeInQueue as the maximum of all
maximum sizes in the queue; and requests with unknown sizes are encoded
as 0, so FindMaximumObjectSizeInQueue() will return any other size that
is not 0, despite the 0 meaning "unknown". The fix is to return 0 if any
maximum size is 0.
** Also affects: apt (Ubuntu Groovy)
Importance: Undecided
Status: New
** Also affects: apt (Ubuntu Hirsute)
Importance: Undecided
Status: Triaged
** Also affects: apt (Ubuntu Bionic)
Importance: Undecided
Status: New
** Also affects: apt (Ubuntu Focal)
Importance: Undecided
Status: New
** Summary changed:
- apt install - File has unexpected size - http pipeline
+ size mismatch error if request of unknown size is larger than others
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to apt in Ubuntu.
https://bugs.launchpad.net/bugs/1921626
Title:
size mismatch error if request of unknown size is larger than others
Status in apt package in Ubuntu:
Triaged
Status in apt source package in Bionic:
New
Status in apt source package in Focal:
New
Status in apt source package in Groovy:
New
Status in apt source package in Hirsute:
Triaged
Bug description:
1) Ubuntu 18.04.5 LTS
2) apt 1.6.12ubuntu0.2
3) What you expected to happen
I set a custom set of repositories in /etc/apt/sources.list and then I
run "apt install <list of packages>". I expect the command to download
and install the packages.
4) What happened instead
"apt install ..." fails during the download phase with "File has
unexpected size ...."
5) What I've established trying to debug the issue:
- Disabling http pipelining resolves the issue: "apt -oAcquire::http::Pipeline-Depth=0 install ..."
- All the packages, and repo metadata in the referenced repositories is correct
- The issue is easily reproducible in my setup with different repositories
- tcpdump shows that requests and responses are in the correct order, and contain the correct data
More details about the issue:
https://projects.theforeman.org/issues/32178
With all the above in mind, it appears that this must be a bug in apt's http pipeline handling.
It seem that apt is trying to match a request to do wrong response, and size doesn't match.
I've attached an example log, where the error pops up for multiple
packages, and they all appear to be compared to one size (86464
bytes). That size is correct for one of the package being downloaded,
but somehow apt is trying to match to multiple other packages.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1921626/+subscriptions
More information about the foundations-bugs
mailing list