[En-Nut-Discussion] Problem with Timers

Waschk,Kolja enut at ixo.de
Mon Feb 16 20:33:27 CET 2004


Hi

I'm currently hunting for anything that is causing "almost deterministic"
lockups of my target. In that state it won't even answer ICMP echo reqs.
When interrupted (with avr-gdb / JTAG), gdb most of the time says the
interruption occured during NutTimerInsert or some other code in my app
that internally is going to use a timer (NutEventWait or similar). So I'm
peeking aroung the timer data and code.

What I'm wondering is the nutTimerList gdb presents me. Is it okay if it
contains self-referencing items, i.e. where tnp == tnp->tn_next? After I
put in a real dirty hack to cancel exactly this situation, it came up with
referencing loops like shown here:

Program received signal SIGINT, Interrupt.
0x0000aa56 in NutTimerInsert (tn=0x80317c) at timer.c:169
169             if (tn->tn_ticks_left < tnp->tn_ticks_left) {
(gdb) print tnp
$1 = (NUTTIMERINFO *) 0x801825
(gdb) print tnp->tn_next
$2 = (NUTTIMERINFO *) 0x80317c
(gdb) print tnp->tn_next->tn_next
$3 = (NUTTIMERINFO *) 0x801825   (note: same as $1)
(gdb) print tnp->tn_next->tn_next->tn_next
$4 = (NUTTIMERINFO *) 0x80317c   (naturally, same as $2)


BTW, saying "almost deterministic" just means that it almost always occurs
at about the same time after starting a certain test procedure that causes
quite a lot of activity. That's about 5 minutes however. Only a few times
it occured a lot earlier.

Kolja

-- 
mr. kolja waschk - haubach-39 - 22765 hh - ger
phone +49 40 889130-34 - fax -35 - e-mail s.a.




More information about the En-Nut-Discussion mailing list