Server programs often use a "separate program for each connection" method, where after successful accept
, the parent fork
s a child to handle current connection, and goes back to accept
ing more connections.
I don't know for sure, but if proftpd
used that model, it would explain exactly the symptoms you've described.
You can ask GDB to debug the child instead of the parent, by using (gdb) set follow-fork-mode child
.