lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] Assert "tcp_slowtmr" in tcp.c reached


From: Marco Jakobs
Subject: Re: [lwip-users] Assert "tcp_slowtmr" in tcp.c reached
Date: Tue, 02 Feb 2010 11:22:58 +0100
User-agent: Thunderbird 2.0.0.23 (Windows/20090812)

I found out some mor additional information which may help to solve my issue:

The problem is not always in the tcp.c, after some more testing i've seen that i also get i.e. this assert:

/src/core/tcp_in.c, line 208:
LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);

This is similar to the other assert, but in an other function.


Also i noticed that the problem only seems to occur after my existing PPP link was shut down a minimum of one times. After the PPP shutdown, i got a warning message out of LwIP:
Warning: lwIP task returned!!!

This is located in /lwip/port/sys_arch.c:

void
sys_thread_func( void *pvArg )
{
  xThreadCtx_t   *pxThreadCtx = pvArg;

  /* Call the lwIP thread function. */
  pxThreadCtx->pvThreadFunc( pxThreadCtx->pvArg );
  vDrvDebugPrint( "Warning: lwIP task returned!!!\r\n" );
  /* In case lwIP thread returns kill it. */
  SYS_THREAD_HDL_RESET( pxThreadCtx );
  /* Kill this task */
  vTaskDelete( xTaskGetCurrentTaskHandle(  ) );
}


Does anyone have any ideas about this behaviour?


Marco Jakobs schrieb:
Hi to all,

i have noticed that i'm sometimes facing complete (watchdog) restarts of my system. To track this down, i've connected the debug output and managed to get the error ... but then i have no idea how to solve this :-(

The systems runs on the assert in line 778 in /src/core/tcp.c:


  /* Steps through all of the TIME-WAIT PCBs. */
  prev = NULL;   
  pcb = tcp_tw_pcbs;
  while (pcb != NULL) {
    LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
    pcb_remove = 0;

    /* Check if this PCB has stayed long enough in TIME-WAIT */
    if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {
      ++pcb_remove;
    }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]