lwip-users
[Top][All Lists]
Advanced

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

Re: [lwip-users] LWIP - TCP receive assert failed


From: Jackie
Subject: Re: [lwip-users] LWIP - TCP receive assert failed
Date: Thu, 22 Jan 2015 23:20:38 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.4.0

Hi Sylvian,

The detailed implementation of PPP function is actually provided by our supplier, I am not saying you did it buggy. Sorry for this misunderstanding. Actually I am referring to our supplier, they ported the LWIP, I am using it but I found something not quite right in it.

Best,
Jackie


On 01/22/15 22:48, Sylvain Rochet wrote:
Hello Jackie,


On Thu, Jan 22, 2015 at 10:36:17PM +0800, Jackie wrote:
Hi Simon & Sylvain,

After re-examining the code, finally I got more understanding of what
can cause this problem. Instead of more than one threads are calling
tcp_output(), there is only one thread tcpip_thread(), but in which
tcp_output() is called recursively.

The case happens when the lower-layer protocol (PPP) uses
sys_sem_wait(). In this function, it is not only waiting a semaphore,
but it also gives the timer chances to run. As long as it times out, the
tcp timer will be called, and in the timer, tcp_output() will be called
again, like,

tcpip_thread()
{
    ...
    tcp_input()
    {
        ...
        tcp_output()
        {
            ...
            pppifOutput()
            {
                ...
                sys_sem_wait();  // Here the tcp_slowtmr() has a chance
to run again and tcp_output() may be called again in it.
Which PPP function is actually calling sys_sem_wait() ?


@Sylvain,
You are right, this PPP protocol implementation is from a third party,
Well, the "third party" for master is actually me.


so that I am not allowed to modify it so much.
Of course you are, not fixing a bug because the software is third party 
does not make sense, not at all.


But I think this design is quite buggy, and the worst case is 
tcp_output() can be called recursively several times.
Yes, it looks buggy :)


Sylvain


_______________________________________________
lwip-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/lwip-users


reply via email to

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