Opened 6 years ago
#18068 new defect
NAT process infinite loop call `poll` function
Reported by: | lu4nx | Owned by: | |
---|---|---|---|
Component: | network/NAT | Version: | VirtualBox 5.2.20 |
Keywords: | Cc: | ||
Guest type: | Linux | Host type: | Linux |
Description
Host machine: Fedora 28 Guest machine: Windows 10
My guest system is Windows 10 and using NAT network, and Windows 10 system suddenly unable to access the Internet at some point, but my host machine can access the network normally. I using Wireshark capturing some ARP data flow in Windows 10:
1 0.000000 PcsCompu_7a:1a:df → RealtekU_12:35:02 ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 2 0.207297 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 3 3.718693 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 4 4.500012 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 5 5.500048 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 6 6.719889 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 7 10.721331 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 8 11.499537 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 9 12.500007 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 10 15.499582 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 11 16.721794 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 12 17.500389 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 13 18.500008 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 14 21.499517 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 15 22.725696 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 16 23.499997 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 17 24.499501 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 18 27.499508 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 19 27.982749 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 20 28.500004 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 21 29.500001 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 22 34.985277 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 23 35.500502 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 24 36.500023 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 25 38.248133 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 26 42.249642 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 27 42.999528 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 28 43.999519 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 29 47.235338 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 30 48.000015 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15 31 49.000018 PcsCompu_7a:1a:df → Broadcast ARP 42 Who has 10.0.2.2? Tell 10.0.2.15
IP 10.0.2.2 is NAT's gateway address, as you see, my Windows system send some ARP broadcast packet to find 10.0.2.2's MAC address, but not recive any response packet.
At the same time, in my host machine, the NAT
process occupies a lot of CPU resources. I using strace
command tracing NAT
process:
poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) poll([{fd=46, events=POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=45, events=POLLIN}, {fd=98, events=POLLIN|POLLPRI}, {fd=76, events=POLLIN|POLLPRI}, {fd=229, events=POLLIN|POLLPRI}, {fd=93, events=POLLIN|POLLPRI}, {fd=91, events=POLLIN}, {fd=89, events=POLLIN}, {fd=81, events=POLLIN}, {fd=96, events=POLLIN}, {fd=102, events=POLLIN}, {fd=97, events=POLLIN}, {fd=88, events=POLLIN}, {fd=70, events=POLLIN}, {fd=68, events=POLLIN}], 15, 500) = 1 ([{fd=91, revents=POLLIN}]) .......
as you see, NAT process infinite loop call poll
function
Attachments (3)
Change History (3)
by , 6 years ago
Attachment: | 2018-10-22 15-09-17.png added |
---|
by , 6 years ago
Attachment: | 2018-10-22 15-09-37.png added |
---|
by , 6 years ago
Attachment: | 2018-10-22 15-09-48.png added |
---|