Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.os.linux.development.apps > #665
| Path | csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!feeder.erje.net!eu.feeder.erje.net!news-1.dfn.de!news.dfn.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail |
|---|---|
| From | Rainer Weikusat <rweikusat@mobileactivedefense.com> |
| Newsgroups | comp.os.linux.development.apps |
| Subject | Linux O_NONBLOCK bug/ quirk |
| Date | Thu, 27 Mar 2014 15:26:22 +0000 |
| Lines | 38 |
| Message-ID | <878urvu0gx.fsf@sable.mobileactivedefense.com> (permalink) |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=us-ascii |
| X-Trace | individual.net 7joNofU8LzNdfnPw5t7elwes6Y9jZtSGBNMqKy9yBfY8kA+Og= |
| Cancel-Lock | sha1:q0TrmgERHyoeQ3AqkMU0hRv2UoI= sha1:HziHYD+KmOKAswp8nApLcm30Gfg= |
| User-Agent | Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) |
| Xref | csiph.com comp.os.linux.development.apps:665 |
Show key headers only | View raw
As part of one of the usual 'pleasant exchanges' with the people whose
ability to make a living depends on controlling access to the Linux code
base, it came to light that a receive operation on a socket in
non-blocking mode can actually be blocked forever on Linux, example
code:
---------
#include <fcntl.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/un.h>
int main(void)
{
struct sockaddr_un sun;
int fd;
fd = socket(AF_UNIX, SOCK_DGRAM, 0);
sun.sun_family = AF_UNIX;
strncpy(sun.sun_path, "/tmp/bla", sizeof(sun.sun_path));
bind(fd, (struct sockaddr *)&sun, sizeof(sun));
if (fork() == 0) read(fd, &fd, sizeof(fd));
sleep(1);
fcntl(fd, F_SETFL, O_NONBLOCK);
read(fd, &fd, sizeof(fd));
return 0;
}
--------
Killing the forked process results in the other aborting the read call
with EAGAIN, as can be determined with strace.
I don't think this is of much practical relevance but it is something
worth knowing about.
Back to comp.os.linux.development.apps | Previous | Next — Next in thread | Find similar
Linux O_NONBLOCK bug/ quirk Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-03-27 15:26 +0000
Re: Linux O_NONBLOCK bug/ quirk crankypuss <crankypuss@nomail.invalid> - 2014-03-28 02:08 -0600
Re: Linux O_NONBLOCK bug/ quirk Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-03-28 12:45 +0000
Re: Linux O_NONBLOCK bug/ quirk crankypuss <crankypuss@nomail.invalid> - 2014-03-29 05:19 -0600
Re: Linux O_NONBLOCK bug/ quirk Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-03-28 20:12 +0000
Re: Linux O_NONBLOCK bug/ quirk unixb4coffee <unixb4coffee@gmail.com> - 2014-04-02 11:13 -0700
Re: Linux O_NONBLOCK bug/ quirk Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-04-03 16:36 +0100
Re: Linux O_NONBLOCK bug/ quirk unixb4coffee <unixb4coffee@gmail.com> - 2014-04-03 11:43 -0700
Re: Linux O_NONBLOCK bug/ quirk Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-04-03 21:31 +0100
Re: Linux O_NONBLOCK bug/ quirk Lusotec <nomail@nomail.not> - 2014-03-28 23:13 +0000
Re: Linux O_NONBLOCK bug/ quirk Richard Kettlewell <rjk@greenend.org.uk> - 2014-03-29 11:15 +0000
Re: Linux O_NONBLOCK bug/ quirk Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-03-30 19:42 +0100
Re: Linux O_NONBLOCK bug/ quirk Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-04-16 12:42 +0100
Re: Linux O_NONBLOCK bug/ quirk Rainer Weikusat <rweikusat@mobileactivedefense.com> - 2014-04-16 13:36 +0100
csiph-web