On Feb 12, 2010, at 11:02 AM, Marco De Angelis wrote:

> Guy Harris <guy <at> alum.mit.edu> writes:
> 
>> Can you cut your application down to the smallest code 
>> snippet that shows the problem, and send that to me? 
> 
> I managed to extrapolate the core. It's a little messy because
> of the many tests I made recently and the 80-chars line 
> limitation, but it show the original  problem. 
> If you uncomment the call to ioctl with
> BIOCIMMEDIATE setting, packets get delivered immediately.

...and if I "#if 0" out the code that puts the pcap into non-blocking mode, 
packets don't get delivered immediately, but they *do* arrive, so it appears to 
be an issue with non-blocking mode.

>From looking at both the FreeBSD and OS X BPF code path in the kernel, I 
>suspect the problem would also show up on FreeBSD 7.x and 8.x, at least, as 
>well as 9.0-CURRENT; there are probably older versions that have it as well.  
>However, if you use select() to wait for packets, it probably won't occur on 
>FreeBSD, but would still occur on OS X.  Top-of-tree NetBSD looks as if it 
>fixes this, and I don't know if OpenBSD ever had it (the top-of-tree code 
>looks as if the change that introduced this was never added).  DragonFly BSD 
>appears to be the same as FreeBSD here.

If you have an Apple Developer Connection account, go to

        http://developer.apple.com/bugreporter/

and log in to Apple Bug Reporter and file a bug; please send me the bug number 
when you do so.  If you don't have an ADC account, that page has a "Sign up to 
become a free ADC Member" link.

This problem was introduced in Snow Leopard as a result of picking up from 
FreeBSD a fix to another bug; the existence in FreeBSD of that fix is the 
reason why I suspect the same problem would show up there (and the existence in 
FreeBSD of a fix to the way BPF works with select() is the reason why I suspect 
using select() to wait for packets would prevent the bug from appearing there - 
that fix is *not* in OS X).

Anybody else seeing this problem should also file a bug and send me the bug 
number.  (The more bugs filed, the more likely I suspect it'll be to get fixed 
in a software update.)

If it shows up in FreeBSD, I'll look at submitting fixes for it and DragonFly 
BSD as well.  (If it doesn't, I need to think about this a little more.)-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.

Reply via email to