[Click] Problem with Timer and Task

Paolo Mailing paolo.mailing at gmail.com
Thu Oct 19 14:10:21 EDT 2006


Hi to all,
I've written an element to do load balancing. I've modified the unqueue
element.
My new element has one input and to output and it choose the best output
every some second.
To do this in this element there are the run_task() ( from unqueue element )
and the run_timer() to choose periodically the best output.
The element crashes and those are the error :

general protection fault: 0003
CPU:    0
EIP:    0010:[<c0105251>]    Tainted: P
EFLAGS: 00010246
eax: 00000000   ebx: c010522e   ecx: 00000032   edx: 00000019
esi: 00099800   edi: c0105000   ebp: 0008e000   esp: c0219fe8
ds: 0018   es: 0018   ss: 0018
Process swapper (pid: 0, stackpage=c0219000)
Stack: c01052a9 00000000 c0105027 c021a5e2 c0229560 c0100191
Call Trace:    [<c01052a9>] [<c0105027>]

Code: c3 fb c3 fb 83 c8 ff ba 00 e0 ff ff 21 e2 87 42 14 85 c0 75
 <0>Kernel panic: Attempted to kill the idle task!
In idle task - not syncing
 <0>Rebooting in 3600 seconds..



bounds: 0000
CPU:    0
EIP:    0010:[<c89c9354>]    Tainted: P
EFLAGS: 00000282
eax: c6e1507f   ebx: c6ed26c0   ecx: c6ed2000   edx: c6be80b2
esi: 9c5b0403   edi: c6c5ca90   ebp: c6e19d9c   esp: c6e19d00
ds: 0018   es: 0018   ss: 0018
Process kclick (pid: 436, stackpage=c6e19000)
Stack: c6be80b2 c6ed2680 00000006 00000008 c6be80b2 00000003 ffffff00
00000003
       ffffff00 c6ed26e0 00000007 c6ed26a0 c8a4046d ffffffff 0000ffff
c6ed26a0
       0000001d 4f6b0b00 0000507f c6ed26c0 c6c8f5a0 c6ed2680 0000000d
c6ed26c0
Call Trace:    [<c8a4046d>] [<c89e3a8e>] [<c8a225c8>] [<c8a4f125>]
[<c899ea61>]
  [<c894ae41>] [<c894ae41>] [<c894ae41>] [<c894ae41>] [<c894ae41>]
[<c894ae41>]
  [<c899ea61>] [<c894ae41>] [<c894ae41>] [<c89af804>] [<c8994c71>]
[<c895e48c>]
  [<c895e5ab>] [<c8a268ca>] [<c01054c9>] [<c8a2684c>]

Code: 66 8b 41 02 66 39 45 9a 0f 85 10 ff ff ff 66 8b 41 04 66 39

I'would like to create an element that periodically checks the failure of
the output link after the two queue at his two output,
checks periodically which link is better.
Then i've a queue in input and to queues in output. (FullNoteQueue)
If the queue in input is empty the element will wait for a signal to
reschedule the task Notifier::upstream_empty_signal(this, 0, &_task); and
also if  both the queues in output are full will wait for a singal ti
reschedule the task Notifier::downstream_nonfull_signal(this, 0, &_task);
Notifier::downstream_nonfull_signal(this, 1, &_task);
Then if the check of the link fail or if the input queue is empty or if both
output queue are full this element unschedule the task.
And each timer cicle check if the check link is successfull and the task is
not scheduled it must reschedules it.

Thanks for time and help.
Paolo

p.s. sorry... my english is horrible..


More information about the click mailing list