lwip-users
[Top][All Lists]
Advanced

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

[lwip-users] endless loop in netconn_write


From: E.F.Spijksma
Subject: [lwip-users] endless loop in netconn_write
Date: Thu, 13 Jul 2006 15:04:47 +0200
User-agent: Mozilla Thunderbird 1.0.7 (Windows/20050923)

Hello,

We are using lwIP 1.1.1 on an AT91SAM7X256 processor using the Rowley Crossworks 1.6 Build 2 compiler. The project is based on the lwIP demo project which came with the FreeRTOS sources. We've made some major changes to the lwip config file and webserver sources.

Since the webserver is serving a site which exists of rather much files (the main page is using about 8 other files, which is about 50KB in total) we are experiencing an endless loop in netconn_write. This happens after the main site, including all data, is requested about 25 times. But the endless loop occurs at random points, we have also experienced this many times after 10 or even 50 times sending the main site. The while loop in netconn_write (api_lib.c) is never exitted because tcp_sndbuf(conn->pcb.tcp) always returns 0 at some point, which indicates we have no space left in our send buffer. The space in the send buffer should be freed by an ACK from the client side, this ack is sent, but someway the stack doesnt see it. This is tested in both IE and Opera, letting the page refresh every 5-10 seconds.

A more simple site (less files) or a site which exists of less data will keep the webserver running longer, but not forever. Refreshing at a lower rate doesnt make it live longer either. When the browser will only make a total of 1 connection, the webserver will actually survive more requests. We already increased the PBUF_POOL_SIZE to 8, this to be able to handle all requests. We also tried to increase a few other buffers but they didnt change anything to the stability of the webserver.

Can someone shed some light on how to solve this issue?


Below is a typical ethereal log for such an event (only the last request), 10.14.104.1 is the lwIP webserver, 10.14.16.11 is the client. After the last packet nothing was sent anymore and the stack was hanging in the while loop waiting for data to be freed, which never happens.

4256 113.170355 10.14.16.11 10.14.104.1 TCP 3874 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4257 113.171699 10.14.104.1 10.14.16.11 TCP http > 3874 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4258 113.171933 10.14.16.11 10.14.104.1 TCP 3874 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4259 113.213152  10.14.16.11           10.14.104.1           HTTP     GET /
main.htm HTTP/1.1
4260 113.215241 10.14.104.1 10.14.16.11 TCP http > 3874 [ACK] Seq=1 Ack=448 Win=1500 Len=0
  4261 113.216675  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
4262 113.225318 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4263 113.225550 10.14.16.11 10.14.104.1 TCP 3874 > http [ACK] Seq=448 Ack=913 Win=64623 [TCP CHECKSUM INCORRECT] Len=0 4264 113.225570 10.14.104.1 10.14.16.11 TCP http > 3874 [FIN, ACK] Seq=913 Ack=448 Win=1500 Len=0 4265 113.225623 10.14.16.11 10.14.104.1 TCP 3874 > http [ACK] Seq=448 Ack=914 Win=64623 [TCP CHECKSUM INCORRECT] Len=0 4266 113.236497 10.14.16.11 10.14.104.1 TCP 3875 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4267 113.237759 10.14.104.1 10.14.16.11 TCP http > 3875 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4268 113.237961 10.14.16.11 10.14.104.1 TCP 3875 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4269 113.265314  10.14.16.11           10.14.104.1           HTTP     GET /
css/layout.css HTTP/1.1
4270 113.266968 10.14.16.11 10.14.104.1 TCP 3876 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4271 113.267915 10.14.104.1 10.14.16.11 TCP http > 3875 [ACK] Seq=1 Ack=492 Win=1500 Len=0 4272 113.268884 10.14.104.1 10.14.16.11 TCP http > 3876 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4273 113.269136 10.14.16.11 10.14.104.1 TCP 3876 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4274 113.271143 10.14.16.11 10.14.104.1 TCP 3877 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460
  4275 113.272213  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
4276 113.273072 10.14.104.1 10.14.16.11 TCP http > 3877 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4277 113.273251 10.14.16.11 10.14.104.1 TCP 3877 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4278 113.278337  10.14.16.11           10.14.104.1           HTTP     GET /
test.htm HTTP/1.1
  4279 113.282932  10.14.16.11           10.14.104.1           HTTP     GET /
graph.htm HTTP/1.1
4280 113.291552 10.14.104.1 10.14.16.11 TCP http > 3876 [ACK] Seq=1 Ack=486 Win=1500 Len=0
  4281 113.291708  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
4282 113.321263 10.14.104.1 10.14.16.11 TCP http > 3877 [ACK] Seq=1 Ack=487 Win=1500 Len=0
  4283 113.322676  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
4284 113.327389 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4285 113.327576 10.14.16.11 10.14.104.1 TCP 3877 > http [ACK] Seq=487 Ack=151 Win=65385 [TCP CHECKSUM INCORRECT] Len=0 4286 113.328131 10.14.104.1 10.14.16.11 TCP http > 3877 [FIN, ACK] Seq=151 Ack=487 Win=1500 Len=0 4287 113.328242 10.14.16.11 10.14.104.1 TCP 3877 > http [ACK] Seq=487 Ack=152 Win=65385 [TCP CHECKSUM INCORRECT] Len=0 4288 113.340190 10.14.16.11 10.14.104.1 TCP 3874 > http [FIN, ACK] Seq=448 Ack=914 Win=64623 [TCP CHECKSUM INCORRECT] Len=0 4289 113.341317 10.14.104.1 10.14.16.11 TCP http > 3874 [ACK] Seq=914 Ack=449 Win=1499 Len=0 4290 113.433731 10.14.16.11 10.14.104.1 TCP 3875 > http [ACK] Seq=492 Ack=44 Win=65492 [TCP CHECKSUM INCORRECT] Len=0 4291 113.433782 10.14.16.11 10.14.104.1 TCP 3876 > http [ACK] Seq=486 Ack=45 Win=65491 [TCP CHECKSUM INCORRECT] Len=0 4292 113.434273 10.14.16.11 10.14.104.1 TCP 3877 > http [FIN, ACK] Seq=487 Ack=152 Win=65385 [TCP CHECKSUM INCORRECT] Len=0 4293 113.437552 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4294 113.438144 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4295 113.438206 10.14.16.11 10.14.104.1 TCP 3875 > http [ACK] Seq=492 Ack=1850 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4296 113.438859 10.14.104.1 10.14.16.11 TCP http > 3875 [FIN, ACK] Seq=1850 Ack=492 Win=1500 Len=0 4297 113.438929 10.14.16.11 10.14.104.1 TCP 3875 > http [ACK] Seq=492 Ack=1851 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4298 113.442117 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4299 113.443718 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4300 113.443772 10.14.16.11 10.14.104.1 TCP 3876 > http [ACK] Seq=486 Ack=2557 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4301 113.444334 10.14.104.1 10.14.16.11 TCP http > 3876 [FIN, ACK] Seq=2557 Ack=486 Win=1500 Len=0 4302 113.444444 10.14.16.11 10.14.104.1 TCP 3876 > http [ACK] Seq=486 Ack=2558 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4303 113.445493 10.14.104.1 10.14.16.11 TCP http > 3877 [ACK] Seq=152 Ack=488 Win=1499 Len=0 4304 113.461071 10.14.16.11 10.14.104.1 TCP 3878 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4305 113.464890 10.14.104.1 10.14.16.11 TCP http > 3878 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4306 113.465191 10.14.16.11 10.14.104.1 TCP 3878 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4307 113.470294  10.14.16.11           10.14.104.1           HTTP     GET /
java/slider.js HTTP/1.1
4308 113.472445 10.14.104.1 10.14.16.11 TCP http > 3878 [ACK] Seq=1 Ack=492 Win=1500 Len=0
  4309 113.476517  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
4310 113.527873 10.14.16.11 10.14.104.1 TCP 3876 > http [FIN, ACK] Seq=486 Ack=2558 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4311 113.528194 10.14.16.11 10.14.104.1 TCP 3875 > http [FIN, ACK] Seq=492 Ack=1851 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4312 113.528417 10.14.16.11 10.14.104.1 TCP 3878 > http [FIN, ACK] Seq=492 Ack=60 Win=65476 [TCP CHECKSUM INCORRECT] Len=0 4313 113.529595 10.14.104.1 10.14.16.11 TCP http > 3876 [ACK] Seq=2558 Ack=487 Win=1499 Len=0 4314 113.530384 10.14.104.1 10.14.16.11 TCP http > 3875 [ACK] Seq=1851 Ack=493 Win=1499 Len=0 4315 113.533429 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4316 113.533624 10.14.16.11 10.14.104.1 TCP 3878 > http [RST, ACK] Seq=493 Ack=1520 Win=0 Len=0 4317 113.533678 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4318 113.533739 10.14.16.11 10.14.104.1 TCP 3878 > http [RST] Seq=493 Ack=4257145974 Win=0 Len=0 4319 113.545961 10.14.16.11 10.14.104.1 TCP 3879 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4320 113.547178 10.14.104.1 10.14.16.11 TCP http > 3879 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4321 113.547339 10.14.16.11 10.14.104.1 TCP 3879 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4322 113.552032  10.14.16.11           10.14.104.1           HTTP     GET /
main.htm HTTP/1.1
4323 113.554234 10.14.104.1 10.14.16.11 TCP http > 3879 [ACK] Seq=1 Ack=529 Win=1500 Len=0
  4324 113.555687  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
4325 113.564302 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4326 113.564584 10.14.16.11 10.14.104.1 TCP 3879 > http [ACK] Seq=529 Ack=913 Win=64623 [TCP CHECKSUM INCORRECT] Len=0 4327 113.564610 10.14.104.1 10.14.16.11 TCP http > 3879 [FIN, ACK] Seq=913 Ack=529 Win=1500 Len=0 4328 113.564677 10.14.16.11 10.14.104.1 TCP 3879 > http [ACK] Seq=529 Ack=914 Win=64623 [TCP CHECKSUM INCORRECT] Len=0 4329 113.580244 10.14.16.11 10.14.104.1 TCP 3880 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4330 113.581504 10.14.104.1 10.14.16.11 TCP http > 3880 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4331 113.581707 10.14.16.11 10.14.104.1 TCP 3880 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4332 113.609703  10.14.16.11           10.14.104.1           HTTP     GET /
css/layout.css HTTP/1.1
4333 113.611311 10.14.16.11 10.14.104.1 TCP 3881 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4334 113.612287 10.14.104.1 10.14.16.11 TCP http > 3880 [ACK] Seq=1 Ack=492 Win=1500 Len=0 4335 113.613244 10.14.104.1 10.14.16.11 TCP http > 3881 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4336 113.613448 10.14.16.11 10.14.104.1 TCP 3881 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4337 113.616140  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
  4338 113.631783  10.14.16.11           10.14.104.1           HTTP     GET /
test.htm HTTP/1.1
4339 113.633927 10.14.104.1 10.14.16.11 TCP http > 3881 [ACK] Seq=1 Ack=486 Win=1500 Len=0
  4340 113.635379  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
4341 113.668423 10.14.16.11 10.14.104.1 TCP 3879 > http [FIN, ACK] Seq=529 Ack=914 Win=64623 [TCP CHECKSUM INCORRECT] Len=0 4342 113.669558 10.14.104.1 10.14.16.11 TCP http > 3879 [ACK] Seq=914 Ack=530 Win=1499 Len=0 4343 113.871171 10.14.16.11 10.14.104.1 TCP 3880 > http [ACK] Seq=492 Ack=44 Win=65492 [TCP CHECKSUM INCORRECT] Len=0 4344 113.871225 10.14.16.11 10.14.104.1 TCP 3881 > http [ACK] Seq=486 Ack=45 Win=65491 [TCP CHECKSUM INCORRECT] Len=0 4345 113.874750 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4346 113.875346 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4347 113.875406 10.14.16.11 10.14.104.1 TCP 3880 > http [ACK] Seq=492 Ack=1850 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4348 113.876070 10.14.104.1 10.14.16.11 TCP http > 3880 [FIN, ACK] Seq=1850 Ack=492 Win=1500 Len=0 4349 113.876155 10.14.16.11 10.14.104.1 TCP 3880 > http [ACK] Seq=492 Ack=1851 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4350 113.879314 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4351 113.880912 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4352 113.880967 10.14.16.11 10.14.104.1 TCP 3881 > http [ACK] Seq=486 Ack=2557 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4353 113.881528 10.14.104.1 10.14.16.11 TCP http > 3881 [FIN, ACK] Seq=2557 Ack=486 Win=1500 Len=0 4354 113.881647 10.14.16.11 10.14.104.1 TCP 3881 > http [ACK] Seq=486 Ack=2558 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4355 113.891748 10.14.16.11 10.14.104.1 TCP 3882 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4356 113.893000 10.14.104.1 10.14.16.11 TCP http > 3882 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4357 113.893147 10.14.16.11 10.14.104.1 TCP 3882 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4358 113.897681  10.14.16.11           10.14.104.1           HTTP     GET /
java/slider.js HTTP/1.1
4359 113.899830 10.14.104.1 10.14.16.11 TCP http > 3882 [ACK] Seq=1 Ack=492 Win=1500 Len=0
  4360 113.903865  10.14.104.1           10.14.16.11           HTTP     HTTP/
1.0 200 OK
4361 113.981090 10.14.16.11 10.14.104.1 TCP 3880 > http [FIN, ACK] Seq=492 Ack=1851 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4362 113.982213 10.14.104.1 10.14.16.11 TCP http > 3880 [ACK] Seq=1851 Ack=493 Win=1499 Len=0 4363 113.984926 10.14.16.11 10.14.104.1 TCP 3883 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4364 113.986181 10.14.104.1 10.14.16.11 TCP http > 3883 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4365 113.986455 10.14.16.11 10.14.104.1 TCP 3883 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4366 113.986915 10.14.16.11 10.14.104.1 TCP 3884 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4367 113.988404 10.14.16.11 10.14.104.1 TCP 3885 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4368 113.989347 10.14.104.1 10.14.16.11 TCP http > 3884 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4369 113.989542 10.14.16.11 10.14.104.1 TCP 3884 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4370 113.990517 10.14.16.11 10.14.104.1 TCP 3886 > http [SYN] Seq=0 Ack=0 Win=65535 Len=0 MSS=1460 4371 113.990602 10.14.104.1 10.14.16.11 TCP http > 3885 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4372 113.990716 10.14.16.11 10.14.104.1 TCP 3885 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4373 113.995639 10.14.104.1 10.14.16.11 TCP http > 3886 [SYN, ACK] Seq=0 Ack=1 Win=1500 Len=0 MSS=1460 4374 113.995794 10.14.16.11 10.14.104.1 TCP 3886 > http [ACK] Seq=1 Ack=1 Win=65535 [TCP CHECKSUM INCORRECT] Len=0
  4375 113.995840  10.14.16.11           10.14.104.1           HTTP     GET /
img/header.png HTTP/1.1
  4376 114.001144  10.14.16.11           10.14.104.1           HTTP     GET /
img/tree.png HTTP/1.1
  4377 114.005631  10.14.16.11           10.14.104.1           HTTP     GET /
img/bar.png HTTP/1.1
  4378 114.010107  10.14.16.11           10.14.104.1           HTTP     GET /
img/footer.png HTTP/1.1
4379 114.010453 10.14.16.11 10.14.104.1 TCP 3881 > http [FIN, ACK] Seq=486 Ack=2558 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4380 114.012622 10.14.104.1 10.14.16.11 TCP http > 3881 [ACK] Seq=2558 Ack=487 Win=1499 Len=0 4381 114.089956 10.14.16.11 10.14.104.1 TCP 3882 > http [ACK] Seq=492 Ack=60 Win=65476 [TCP CHECKSUM INCORRECT] Len=0 4382 114.093255 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4383 114.093384 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4384 114.093443 10.14.16.11 10.14.104.1 TCP 3882 > http [ACK] Seq=492 Ack=1560 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4385 114.094745 10.14.104.1 10.14.16.11 TCP http > 3886 [ACK] Seq=1 Ack=492 Win=1009 Len=0 4386 114.095257 10.14.104.1 10.14.16.11 TCP http > 3885 [ACK] Seq=1 Ack=489 Win=1012 Len=0 4387 114.095767 10.14.104.1 10.14.16.11 TCP http > 3884 [ACK] Seq=1 Ack=490 Win=1011 Len=0 4388 114.096288 10.14.104.1 10.14.16.11 TCP http > 3883 [ACK] Seq=1 Ack=492 Win=1009 Len=0 4389 114.099038 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4390 114.100805 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4391 114.100867 10.14.16.11 10.14.104.1 TCP 3882 > http [ACK] Seq=492 Ack=4193 Win=65535 [TCP CHECKSUM INCORRECT] Len=0 4392 114.103154 10.14.104.1 10.14.16.11 HTTP Continuation or non-HTTP traffic 4393 114.418060 10.14.16.11 10.14.104.1 TCP 3882 > http [ACK] Seq=492 Ack=4560 Win=65168 [TCP CHECKSUM INCORRECT] Len=0

Kind regards,
Edwin






reply via email to

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