[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