[Click] Queue element BUG ?!?!

Eddie Kohler kohler at cs.ucla.edu
Sat Dec 16 11:36:19 EST 2006


This is to highlight one change in Click's behavior that you need to be aware 
of.  Consider the configuration

"InfiniteSource(..., LIMIT 1, STOP true) -> Queue -> ToDevice"

In former releases, the InfiniteSource would "stop" the driver after sending 
one packet, *but the driver would not immediately stop*.  Instead, ToDevice 
would run at least once.

In the current release, when InfiniteSource "stops" the driver, *the driver 
stops sooner*, and ToDevice will *not* run.  This is why 1.4.3 works for you 
and 1.5.0 has not worked, I'm willing to bet.  The version without the Queue 
works fine because without the Queue, the entire packet is processed in one 
scheduling.

If you want a Click config to send one packet, make sure you delay the config 
from exiting just a bit.  I do that with a DriverManager element:

DriverManager(pause, wait 0.01s);

Note that until I fixed the InfiniteSource bug I just sent mail about earlier, 
even this did not work!!  Ack.

I had not realized people were relying on the old behavior.  Sorry for the 
headaches.
Eddie



Eddie Kohler wrote:
> Hi David,
> 
> I did find one bug in InfiniteSource.  The LIMIT option would stop the driver 
> too often.  This fix is checked in, and this code:
> 
> InfiniteSource(DATA \<
> .."'a ping packet'"...>, LIMIT 1, STOP true)->Print(a)-> Queue -> 
> Print(b)->ToDevice(eth1);
> DriverManager(pause,wait 0.1s)
> 
> has this output:
> 
> a:    2 | aace
> b:    2 | aace
> 
> Did your test configs involve LIMIT ?
> 
> Eddie
> 
> 
> 
> dfuste at ac.upc.edu wrote:
>> Eddie,
>>
>> I have tried with the current CVS version of Click and the problem persists :(
>> And sorry but when I wrote "click crashes", I meant that Click does not work
>> fine (packets enter but never leave the Queue), but there isn't any
>> Segmentation fault or something like that. So, I think in this case the
>> debugger can not help me. Right?
>>
>> Do you have new suggestions?
>> david
>>
>> Quoting Eddie Kohler <kohler at cs.ucla.edu>:
>>
>>> David,
>>>
>>> Can you try with the current CVS version of Click, and see whether that 
>>> works??  If it does not work, then maybe run user-level Click in a debugger
>>> so 
>>> you can see where the crash happens.
>>>
>>> Eddie
>>>
>>>
>>> David Fuste wrote:
>>>> Thanks Thomas!
>>>>
>>>> OK,
>>>> so, the only thing I can conclude is that my PC is bewitched :)
>>>>
>>>> No, I'm being serious now. I compiled the linux-2.4.28 and 
>>>> linux-2.6.16.13 kernels in a Debian "etch" with the click patch without 
>>>> errors, I compiled the click-1.5.0 without errors (enabling all elements 
>>>> in the configure), I compiled the madwifi-ng without errors...and with 
>>>> all configurations which not imply the Queue element, click works 
>>>> perfectly (in both user level and kernel mode). Only when I use the 
>>>> Queue element (or SimpleQueue,...) click crashes (regardless if I use 
>>>> the ethernet device (SiS) or the wireless device (Atheros)).
>>>>
>>>> Could it be a PC hardware (not network device) problem? I doubt but...
>>>> Am I the only one which have this problem with the Queue element? If it 
>>>> is true, the only thing I can try is to change of PC :(
>>>>
>>>> Thank you very much again,
>>>> david
>>>>
>>>>> -----Original Message-----
>>>>> From: click-bounces at pdos.csail.mit.edu
>>> [mailto:click-bounces at pdos.csail.mit.edu] On Behalf Of dfuste at ac.upc.edu
>>>>> Sent: Wednesday, December 13, 2006 10:34 AM
>>>>> To: click at pdos.csail.mit.edu
>>>>> Subject: [Click] Queue element BUG ?!?!
>>>>>
>>>>> OK,
>>>>> this is my new situation (see my previous mails). I have installed
>>> click-1.5.0 in a linux-2.6.16.13 kernel.
>>>>> Why does the config
>>>>> "InfiniteSource(...)->Print(ok)->ToDevice(eth0);"
>>>>> work fine and the config
>>>>>
>>> "InfiniteSource(...)->Print(before)->Queue->Print(after)->ToDevice(eth0);"
>>>>> only prints "before : ..."?
>>>>> The packet never leaves the queue and so, it is never sent!
>>>>>
>>>>> There is no more things I can try...I need your help :) Thanks!
>>>>> _______________________________________________
>>>>> click mailing list
>>>>> click at amsterdam.lcs.mit.edu
>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>>   
>>>> _______________________________________________
>>>> click mailing list
>>>> click at amsterdam.lcs.mit.edu
>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click


More information about the click mailing list