This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ASSERT: cyg_callout_reset() We didn't pick the smallest delta!


Gary Thomas <gthomas@ecoscentric.com> writes:

> On Wed, 2002-11-27 at 17:23, Kevin Hilman wrote:
> > Gary Thomas <gthomas@ecoscentric.com> writes:
> > 
> > > On Wed, 2002-11-27 at 16:37, Kevin Hilman wrote:
> > > > Gary Thomas <gthomas@ecoscentric.com> writes:
> > > > 
> > > > > > Nope, my last update was Nov 6.  However, now I've merged the latest
> > > > > > CVS, and this assert goes away.  Now I'm consistently hitting the
> > > > > > assert below, the "delta is right now" one.
> > > > > > 
> > > > > 
> > > > > Harrumph!  I've never seen that one.  Maybe you could detect this case
> > > > > and print some data so we can analyze the failure (asserts are nice, but
> > > > > sometimes one needs more).  Something like this:
> > > > >   if (delta <= 0) {
> > > > >      diag_printf("Bad delta: %d, callout: %p, fun: %p(%x)\n", delta, c, f, p);
> > > > 
> > > > This run shows a failure with your suggested diag_printf().  I've also
> > > > included some relevant parts of 'nm'
> > > > 
> > > 
> > > I'm still not sure why this fails.  Two more things to try:
> > >   * Change the 'assert' to be CYG_ASSERT(0 <= delta, ...)
> > >   * Print one more piece (using the previos setup/test)
> > >     diag_printf("Called from %p\n", __builtin_return_address(0));
> > 
> > OK, changing the assert to <= makes it run happily for quite a while
> > longer but eventually runs into problems running out of mbufs and then
> > packets out of sequence and then some different timeout error (see
> > output below).  The caller is the same every time and is
> > cyg_tcp_input().
> > 
> 
> Actually, the "errors" you are seeing are quite normal, especially if
> one end of your test is faster than the other.  This part of the test
> is trying to do major amounts of UDP traffic which has no flow control
> and is guaranteed to drop packets.  The test should eventually recover
> (it may take a little while - a few tens of seconds I would think) and
> then carry or.

OK, should I consider this a "passed" test then?

I'd assumed it failed somehow because the host program (on x86 linux)
ends up looping,  unable to contact the target again:

Packets out of sequence - recvd: 2023, expected: 2047
UDP echo - 4096 bufs of 1024 bytes in 4.54 seconds - 902.20 KB/S - 7.3908 Mbit/S (M = 10^6), 733 out of sequence
   ... invalid results - keys: c0deadc0/0, seq: 2024/13
No response to command
Slave denied TCP echo [2048,1024] test

====================== Various master loads ===================
Testing IDLE for 10 seconds
No response to command
Slave failed on IDLE
No response to command
No response to command
Slave denied UDP echo [2048,1024] test
No response to command
Slave failed on IDLE
No response to command
No response to command
Slave denied TCP echo [2048,1024] test
No response to command
Slave failed on IDLE
No response to command
No response to command

[ repeats the idle, UDP echo, TCP echo several times and then... ]

Slave failed on IDLE
No response to command
.. Done

I could still ping the target, but it wasn't responding.  The last
thing I see from the target is:

warning: eth_recv out of MBUFs
Packets out of sequence - recvd: 1400, expected: 1354
Packets out of sequence - recvd: 1464, expected: 1424
recvfrom timeout, expecting seq #2048
recvfrom timeout, expecting seq #2049
recvfrom timeout, expecting seq #2050
recvfrom timeout, expecting seq #2051
recvfrom timeout, expecting seq #2052
recvfrom timeout, expecting seq #2053
.. giving up
TCP echo - 2048 buffers, 1024 bytes

> Always nice to see the breadth of the use of eCos :-)

Glad to be a part of spreading it around a bit. :)

Kev



-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]