Re: [PATCH] pipe: don't block after data has been written

From: Zan Lynx
Date: Thu Nov 05 2009 - 12:32:18 EST


On 11/5/09 9:37 AM, Eric Dumazet wrote:
Max Kellermann a écrit :
On 2009/11/05 17:27, Eric Dumazet<eric.dumazet@xxxxxxxxx> wrote:
Your patch breaks many programs, that dont use poll()/select()

char result[1000000];
main()
{
computethings();
write(1, buffer, 1000000);
}

Your code does not check the return value of write(). This is a bug.


Welcome to real world.

Yes in the real world there are bugs. The decision is to choose which bug you are going to expose. If it was my decision I would make the code work as documented, as Max wants to do.

I remember many years ago needing to fix some inetd-called server code that got unexpected partial writes on blocking sockets. It was either Solaris or HP/UX. So this is nothing new.

In fact I think that Linux will already do short writes if a signal is received without restart set for the handler. I found several bugs last year in glibc and libstdc++ fwrite and iostreams regarding that.
--
Zan Lynx
zlynx@xxxxxxx

"Knowledge is Power. Power Corrupts. Study Hard. Be Evil."
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/