Open pkarashchenko opened 2 years ago
I am hitting the exact same issue with a custom server, on high load.
TCP deadlocks during send when it tries to allocate an iob.
Does this issue still exist on the latest nuttx? recently I fixed a similar issue, I don’t know if there is any improvement for ftpd
Recently I've been testing FTPD operation on custom SAME70 based board with FileZilla FTP client. I had
CONFIG_NET_TCP_WRITE_BUFFERS=y
.I have a folder with 2 files that I try to upload from laptop to device. Upload of a folder fails.
FileZilla starts 2 FTP sessions in parallel one for each file upload so 2 instances of
ftpd_worker
are started. The situation happens in 80% of my tests. The FTP client send"STOR"
command for both files and by adding extra logs I see that both threads reachftpd.c:1908
coderet = ftpd_response(session->cmd.sd, session->txtimeout, g_respfmt1, 150, ' ', "Opening data connection");
at the same time sosend
is called concurrently.The logs before
ftpd_response
call are printed, but there are no logs afterftpd_response
call. NSH "ps" shows that both threads are "waiting for semaphore", but most probably loop somewhere inside thepsock_tcp_send
trying to allocateiob
.Setting
CONFIG_NET_TCP_WRITE_BUFFERS=n
solves the issue and FTP server operates as expected.