On Thu, 28 Oct 2021 13:57:55 +0200 Karsten Graul wrote: > So how to deal with all of this? Is it an accepted programming error > when a user space program gets itself into this kind of situation? > Since this problem depends on internal send/recv buffer sizes such a > program might work on one system but not on other systems. It's a gray area so unless someone else has a strong opinion we can leave it as is. > At the end the question might be if either such kind of a 'deadlock' > is acceptable, or if it is okay to have send() return lesser bytes > than requested. Yeah.. the thing is we have better APIs for applications to ask not to block than we do for applications to block. If someone really wants to wait for all data to come out for performance reasons they will struggle to get that behavior. We also have the small yet pernicious case where the buffer is completely full at sendmsg() time, IOW we didn't send a single byte. We won't be able to return "partial" results and deadlock. IDK if your application can hit this, but it should really use non-blocking send if it doesn't want blocking behavior..