07.12.2020 9:44, Tom Crane пишет:
On Sun, 6 Dec 2020, Petr Pisar wrote:
V Sun, Dec 06, 2020 at 06:48:13PM +0000, Tom Crane napsal(a):
tmp$ strace -s999 -f -e trace=network wget -S -v
--no-check-certificate --waitretry=1 --tries=1 --timeout=1
--read-timeout=1 --wait=1 -O /tmp/280200433.tmp
https://www.tesco.com/groceries/en-GB/products/280200433
[...]
connect(4, {sa_family=AF_INET, sin_port=htons(443),
sin_addr=inet_addr("104.82.193.249")}, 16) = 0
connected.
HTTP request sent, awaiting response...
but the timeout never happens,
Do not restrict strace to network syscalls. We cannot see where it
blocks.
The timeout should occur in select() syscall.
-- Petr
Sure and thanks for the follow-up. Please see,
https://www.mklab.rhul.ac.uk/~tom/tempwget/wget-strace.log
After waiting several minutes I <ctrl>-C out of the strace/wget session.
Out of interest, can you reproduce the hang with that URL on your
system/wget version?
Tom.
timeout happens
......
---request begin---
GET /groceries/en-GB/products/280200433 HTTP/1.1
User-Agent: Wget/1.20.3.206-794b7
Accept: */*
Accept-Encoding: identity
Host: www.tesco.com
Connection: Keep-Alive
---request end---
) = 211
_newselect(5, NULL, [4], NULL, {tv_sec=1, tv_usec=0}) = 1 (out [4], left
{tv_sec=0, tv_usec=999994})
sendmsg(4, {msg_name=NULL, msg_namelen=0,
msg_iov=[{iov_base="\27\3\3\0\275\16\236S\263\307\7k\274\357\371\340\273\10x\264s\336\206\335WY!5\363w\207\255X\211\230\21\342\245\254\7\265\266\277t\335\2349\204o\243\5\373<e\374\25\315Xb\30\345\3]\34\260\t\373\346\322\6\221Z\30\3378\266\17\227\247\356\215\325K\332]\320\366\37\36\330\0\4\250\246C\222E\5\22\265^h\305\23W\4y[L/r\350*\364r<W\324Z\354\32*\17\340p\228zf\n\232e\343\325?[\212>eE\240\235\210\224\4<,g\256aE\327z\4\206\33\346\320\371\344\350\204\351N,z\203\264\4\\kN\205\363\324\251\366F\363s\332\272\345\355|]\274\202\35\32\210;Y\262",
iov_len=194}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 194
ioctl(0, TIOCGPGRP, [21671]) = 0
getpgrp() = 21671
write(2, "HTTP request sent, awaiting response... ", 40HTTP request
sent, awaiting response... ) = 40
fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
clock_gettime64(CLOCK_MONOTONIC, {tv_sec=3245, tv_nsec=533340227}) = 0
recv(4, "\27\3\3\1\n", 5, 0) = 5
recv(4, "\272\377,?\211\246-\245\253\376\247\263\317\247\343j
\244\nB\377\353\305\366/\354\341\204\377\243\226\354\205\272\203\316F\"\10\276N\10\22\37\312\273\335\347e\33)\276;\326\215|Ne5!\325m\326Nzf\233m\34\7O\254&6;\326\345-DE>\336\372g@\231\243\325\307\213S\321\235\351\25\376\374\10oq\37\265i\32\fS\6\2262]\34\315\201\20\353\t\3\36s\231&3>\1\211\302\276\347\255\223\211\351*z\2651Q\223\231~\247\311\22\16\332\f;h\212\277o\310\222U\7Y\274p\331lA\222\337\206\312\315K\34)\r\3734\256H\316bJ+\30o\5\370BH\252\315O\373(s\316\22xY\345\266w:\\\316$\250\37\213\214)D\33\244\251\336\0\374\207\336\261\241:\222\260\324\333%\346VlE\304\213\240\303=\2420\262\34\372\25\357\323J\272\245u\202\310-\277a]\n\256\376c;\17~@t\306|\262O\36\353X",
266, 0) = 266
clock_gettime64(CLOCK_REALTIME, {tv_sec=1607339907, tv_nsec=865035973}) = 0
_newselect(5, [4], NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
fcntl64(4, F_SETFL, O_RDWR) = 0
ioctl(0, TIOCGPGRP, [21671]) = 0
getpgrp() = 21671
write(2, "Read error (Connection timed out) in headers.\n", 46Read error
(Connection timed out) in headers.
) = 46
close(4) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1229, ...}) = 0
ioctl(0, TIOCGPGRP, [21671]) = 0
getpgrp() = 21671
write(2, "Giving up.\n\n", 12Giving up.
) = 12
close(3) = 0
exit_group(4) = ?
+++ exited with 4 +++
wget -S -dv --no-check-certificate --waitretry=1 --tries=1 --timeout=1
--read-timeout=1 --wait=1 -O ./280200433.tmp
https://www.tesco.com/groceries/en-GB/products/280200433
Setting --verbose (verbose) to 1
Setting --verbose (verbose) to 1
Setting --check-certificate (checkcertificate) to 0
Setting --check-certificate (checkcertificate) to 0
Setting --waitretry (waitretry) to 1
Setting --waitretry (waitretry) to 1
Setting --tries (tries) to 1
Setting --tries (tries) to 1
Setting --timeout (timeout) to 1
Setting --timeout (timeout) to 1
Setting --read-timeout (readtimeout) to 1
Setting --read-timeout (readtimeout) to 1
Setting --wait (wait) to 1
Setting --wait (wait) to 1
Setting --output-document (outputdocument) to ./280200433.tmp
Setting --output-document (outputdocument) to ./280200433.tmp
DEBUG output created by Wget 1.20.3 on linux-gnu.
Reading HSTS entries from /home/slv/.wget-hsts
URI encoding = ‘UTF-8’
--2020-12-07 17:16:33--
https://www.tesco.com/groceries/en-GB/products/280200433
Certificates loaded: 252
Resolving www.tesco.com (www.tesco.com)... 23.54.9.112
Caching www.tesco.com => 23.54.9.112
Connecting to www.tesco.com (www.tesco.com)|23.54.9.112|:443... connected.
Created socket 4.
Releasing 0x02050ba0 (new refcount 1).
---request begin---
GET /groceries/en-GB/products/280200433 HTTP/1.1
User-Agent: Wget/1.20.3 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: www.tesco.com
Connection: Keep-Alive
---request end---
HTTP request sent, awaiting response... Read error (Success.) in headers.
Giving up.
./wget -S -dv --no-check-certificate --waitretry=1 --tries=1 --timeout=1
--read-timeout=1 --wait=1 -O ./280200433.tmp
https://www.tesco.com/groceries/en-GB/products/280200433
Setting --verbose (verbose) to 1
Setting --check-certificate (checkcertificate) to 0
Setting --waitretry (waitretry) to 1
Setting --tries (tries) to 1
Setting --timeout (timeout) to 1
Setting --read-timeout (readtimeout) to 1
Setting --wait (wait) to 1
Setting --output-document (outputdocument) to ./280200433.tmp
DEBUG output created by Wget 1.20.3.206-794b7 on linux-gnu.
Reading HSTS entries from /home/slv/.wget-hsts
URI encoding = 'ANSI_X3.4-1968'
converted 'https://www.tesco.com/groceries/en-GB/products/280200433'
(ANSI_X3.4-1968) -> 'https://www.tesco.com/groceries/en-GB/products/280200433'
(UTF-8)
--2020-12-07 17:15:17--
https://www.tesco.com/groceries/en-GB/products/280200433
Certificates loaded: 252
Resolving www.tesco.com (www.tesco.com)... 23.54.9.112
Caching www.tesco.com => 23.54.9.112
Connecting to www.tesco.com (www.tesco.com)|23.54.9.112|:443... connected.
Created socket 4.
Releasing 0x01bf1b10 (new refcount 1).
---request begin---
GET /groceries/en-GB/products/280200433 HTTP/1.1
User-Agent: Wget/1.20.3.206-794b7
Accept: */*
Accept-Encoding: identity
Host: www.tesco.com
Connection: Keep-Alive
---request end---
HTTP request sent, awaiting response... Read error (Connection timed out) in
headers.
Giving up.