[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-users] lwip_close() doesn't work when lwip_write() hangs
From: |
alhadpalkar |
Subject: |
[lwip-users] lwip_close() doesn't work when lwip_write() hangs |
Date: |
Fri, 9 Oct 2015 16:36:21 -0700 (MST) |
I am using branch 1.4.1 of lwip. I have a thread that connects to a remote
server and writes data to it using lwip_write(). Sometimes this hangs
indefinitely. Looks like its waiting on the op->completed semaphore which
never gets signaled.
I tried using the SO_SNDTIMEO socket option, but that just causes panics in
my system. So I tried another approach where I use a watchdog that detects
this hang and calls lwip_close(). But it looks like LWIP doesn't like it. I
hit this assert
netconn_free(struct netconn *conn)
{
LWIP_ASSERT("PCB must be deallocated outside this function", conn->pcb.tcp
== NULL);
...
}
On debugging further it looks like we end up getting the ERR_INPROGRESS in
do_delconn().
do_delconn(struct api_msg_msg *msg)
{
/* @todo TCP: abort running write/connect? */
if ((msg->conn->state != NETCONN_NONE) &&
(msg->conn->state != NETCONN_LISTEN) &&
(msg->conn->state != NETCONN_CONNECT)) {
/* this only happens for TCP netconns */
LWIP_ASSERT("msg->conn->type == NETCONN_TCP", msg->conn->type ==
NETCONN_TCP);
km_printf("err in progress\n");
msg->err = ERR_INPROGRESS;
...
}
so we never end up cleanup up the pcbs which leads to this assert.
Is there a way around this?
--
View this message in context:
http://lwip.100.n7.nabble.com/lwip-close-doesn-t-work-when-lwip-write-hangs-tp25191.html
Sent from the lwip-users mailing list archive at Nabble.com.
- [lwip-users] lwip_close() doesn't work when lwip_write() hangs,
alhadpalkar <=
- Re: [lwip-users] lwip_close() doesn't work when lwip_write() hangs, Joel Cunningham, 2015/10/12
- Re: [lwip-users] lwip_close() doesn't work when lwip_write() hangs, Alhad Palkar, 2015/10/15
- Re: [lwip-users] lwip_close() doesn't work when lwip_write() hangs, Joel Cunningham, 2015/10/12
- Re: [lwip-users] lwip_close() doesn't work when lwip_write() hangs, Sylvain Rochet, 2015/10/12
- Re: [lwip-users] lwip_close() doesn't work when lwip_write() hangs, Joel Cunningham, 2015/10/12
- Re: [lwip-users] lwip_close() doesn't work when lwip_write() hangs, Alhad Palkar, 2015/10/12
- Re: [lwip-users] lwip_close() doesn't work when lwip_write() hangs, Alhad Palkar, 2015/10/12
- Re: [lwip-users] lwip_close() doesn't work when lwip_write() hangs, Alhad Palkar, 2015/10/12