New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[networkd] Assertion '!(msg.msg_flags & MSG_TRUNC)' failed #2457
Comments
@teg, any idea? |
logging out len and buflen before that assert they are both 74. |
But! |
Strange... that would indicate a kernel bug... |
I tried both 4.4.1 and 4.1.17 (arch kernels) same behaviour. isn't it possible for data to arrive after FIONREAD is called? |
well, but it's a datagram interface... datagrams should not change their size just because more datagrams have been received... But maybe the local queuing drops datagrams for some reason (after all, they are allowed to do that, it's IP). and hence between FIONREAD and recvmsg() the packet we are about to process changes... |
a quick workaround would be to use a (edit) … or malloc enough bytes for an RA. |
Any ideas? I will send a pull request to just malloc a buffer of 2048, it seem the better option than the current. ps. there are no 74 byte icmp6 datagrams on the network, only 144 byte ones (checked with |
Thanks for the report. This seems really odd. I'll have a look. |
how reproducible is this for you? if you add logging to record every successful packet, does it get the wrong size every time, or just some of the time? |
fully reproducible |
systemd compiled from git (b304283) (Arch AUR package)
the system is a libvirt/kvm archlinux guest. It has a single ens5 interface set to use DHCP (just [Network] DHCP=yes).
networkd crashes with:
The text was updated successfully, but these errors were encountered: