I noticed that httpd will exit if it attempts to serve a file from
a cd9660 filesystem. This is due to libevent's use of kqueue by
default and kqueue's lack of support for cd9660 filesystems. I'm
not sure if this is the most appropriate fix but the patch below
restricts the server processes from using libevent/kqueue. I
haven't encountered any issues with libevent/poll running with this
for about a week on a low volume web server.
Index: proc.c
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/proc.c,v
retrieving revision 1.8
diff -u -p -r1.8 proc.c
--- proc.c 21 Jan 2015 22:21:05 -0000 1.8
+++ proc.c 30 May 2015 18:10:41 -0000
@@ -395,6 +395,8 @@ proc_run(struct privsep *ps, struct priv
ps->ps_instance + 1, ps->ps_instances[p->p_id], getpid());
#endif
+ if (strcmp(p->p_title, "server") == 0)
+ setenv("EVENT_NOKQUEUE", "yes", 0);
event_init();
signal_set(&ps->ps_evsigint, SIGINT, proc_sig_handler, p);