[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#959518: apt-transport-http: Repeatable 'Undetermined Error' during package download from snapshot.debian.org



On Sun, May 03, 2020 at 09:49:42AM +0000, James Addison wrote:
> Package: apt
> Version: 1.8.2
> Severity: normal
> 
> Dear Maintainer,
> 
> During installation of packages under Debian Buster[1], I've encountered a
> repeatable (non-TLS) HTTP download error that occurs during download of
> openjdk-11-jdk-headless.
> 
> It's possible this may expose a rare edge case in apt's HTTP client, and/or
> it may be a transient network condition; either way it seems worth reporting.

There are known bugs in the pipelining code that cause issues in an insignifcant
amount of cases, reproducing them is next to impossible. There's some kind of
race somewhere between the server traffic and the client.

I had a reproducer once for such an issue, but sadly, it did not last.

If you can still reproduce this, could you give the current master branch a try?
I went looking around for what *seems* wrong and fixed that, but uh, it might not
help at all.

and/or try the attached patch to get the location where it failed.

-- 
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer                              i speak de, en
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
<head>
  <title>debian Pastezone</title>
  <link rel="stylesheet" type="text/css" href="/pastebin.css" />
</head>

<body>

	<center><a href="/"><img src="/images/debian.png" alt="" border="0" hspace="0" vspace="0" height="61" /></a></center><br />

<div id="titlebar">debian Pastezone</div>





<div id="content">





	
	

	
	
	
	
	
	




<h1>Posting 1158950 from None posted at 2020-08-04 09:51:39 expires: 

2020-08-11 09:51:39

</h1>

		
	
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="pygmentgh">diff --git a/methods/basehttp.cc b/methods/basehttp.cc</span>
<span class="pygmentgh">index e659da255..76bd69afc 100644</span>
<span class="pygmentgd">--- a/methods/basehttp.cc</span>
<span class="pygmentgi">+++ b/methods/basehttp.cc</span>
<span class="pygmentgu">@@ -35,6 +35,10 @@</span>
 									/*}}}*/
 using namespace std;
 
<span class="pygmentgi">+#define S1(x) #x</span>
<span class="pygmentgi">+#define S2(x) S1(x)</span>
<span class="pygmentgi">+#define LOCATION &quot;Failure in &quot; __FILE__ &quot; : &quot; S2(__LINE__)</span>
<span class="pygmentgi">+</span>
 string BaseHttpMethod::FailFile;
 int BaseHttpMethod::FailFd = -1;
 time_t BaseHttpMethod::FailTime = 0;
<span class="pygmentgu">@@ -609,11 +613,11 @@ int BaseHttpMethod::Loop()</span>
       switch (Server-&gt;Open())
       {
       case ResultState::FATAL_ERROR:
<span class="pygmentgd">-	 Fail(false);</span>
<span class="pygmentgi">+	 Fail(LOCATION, false);</span>
 	 Server = nullptr;
 	 continue;
       case ResultState::TRANSIENT_ERROR:
<span class="pygmentgd">-	 Fail(true);</span>
<span class="pygmentgi">+	 Fail(LOCATION, true);</span>
 	 Server = nullptr;
 	 continue;
       case ResultState::SUCCESSFUL:
<span class="pygmentgu">@@ -790,11 +794,11 @@ int BaseHttpMethod::Loop()</span>
 		  switch (Result)
 		  {
 		  case ResultState::TRANSIENT_ERROR:
<span class="pygmentgd">-		     Fail(true);</span>
<span class="pygmentgi">+		     Fail(LOCATION, true);</span>
 		     break;
 		  case ResultState::FATAL_ERROR:
 		  case ResultState::SUCCESSFUL:
<span class="pygmentgd">-		     Fail(false);</span>
<span class="pygmentgi">+		     Fail(LOCATION, false);</span>
 		     break;
 		  }
 	       }
<span class="pygmentgu">@@ -812,14 +816,14 @@ int BaseHttpMethod::Loop()</span>
 	 // Hard server error, not found or something
 	 case ERROR_UNRECOVERABLE:
 	 {
<span class="pygmentgd">-	    Fail();</span>
<span class="pygmentgi">+	    Fail(LOCATION);</span>
 	    break;
 	 }
 	  
 	 // Hard internal error, kill the connection and fail
 	 case ERROR_NOT_FROM_SERVER:
 	 {
<span class="pygmentgd">-	    Fail();</span>
<span class="pygmentgi">+	    Fail(LOCATION);</span>
 	    RotateDNS();
 	    Server-&gt;Close();
 	    break;
<span class="pygmentgu">@@ -839,9 +843,9 @@ int BaseHttpMethod::Loop()</span>
 	       599, // Network Connect Timeout Error
 	    };
 	    if (std::find(std::begin(TransientCodes), std::end(TransientCodes), Req.Result) != std::end(TransientCodes))
<span class="pygmentgd">-	       Fail(true);</span>
<span class="pygmentgi">+	       Fail(LOCATION, true);</span>
 	    else
<span class="pygmentgd">-	       Fail();</span>
<span class="pygmentgi">+	       Fail(LOCATION);</span>
 	    break;
 	 }
 
</pre></div>
</td></tr></table>	
	<br/>
	<a href='//paste.debian.net/plain/1158950'>Show as text</a> | 
	<a href='//paste.debian.net/download/1158950'>Download</a> |
	
	<a href='//paste.debian.net/?show=1158950;lines=0'>Without linenumbers</a> |
	
	<a href='//paste.debian.net/'>Paste new</a> |
	<a href='//paste.debian.net/?pnew=1158950'>Paste as new</a>
	<br/>
	








	
	





<div id="menu">

<h1>Recent Posts</h1>
<a href="//paste.debian.net">Make new paste</a>
<br />
<ul>

<li><a href='//paste.debian.net/1158953'>CntDracula</a><br />




 
	13 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158952'>student</a><br />




 
	15 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158951'>Wave</a><br />




 
	17 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158950'>None</a><br />




 
	22 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158949'>student</a><br />




 
	28 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158948'>student</a><br />




 
	35 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158947'>Buxy</a><br />




 
	40 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158946'>hwgasdf</a><br />




 
	41 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158945'>hwgasdf</a><br />




 
	45 minute(s) ago 

</li>

<li><a href='//paste.debian.net/1158944'>student</a><br />




 
	49 minute(s) ago 

</li>

</ul>

<h1>Links</h1>
<ul>
<li><a href='http://frm.li/add'>Add short URL</a><br /></li>
<li><a href='http://www.debian.org'>Debian</a><br /></li>
<li><a href='/paste.pl?show_template=about'>About</a><br /></li>
<li><a href='//paste.debian.net/rpc-interface.html'>XML-RPC Interface</a><br /></li>
<li><a href='//paste.debian.net/paste.pl?show_template=clients'>Clients</a><br /></li>
</ul>
<h1>Admin</h1>
<a href='mailto:formorer@debian.org'>Alexander Wirt</a>





<br />
<a href="//flattr.com/thing/63347/debian-net-pastebin" target="_blank">
<img src="//api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>
</div>





</div>
</body>
</html>








Reply to: