It appears that the results from select are bogus as to the FD state:
socket(PF_PACKET, SOCK_RAW, 768) = 3 ... OUTPUT CUT ... select(4, [0 3], NULL, NULL, {0, 50000}) = 1 (in [3], left {0, 49997}) recvfrom(3, <unfinished ...>