phusion passenger 5.0.6 ships a modified libeio 4.15. Fedora builds it
against system libeio, so this fails due to missing symbols. The full diff is:
diff -ru ../libev/libev-4.15/ev.c passenger-5.0.6/ext/libev/ev.c
--- ../libev/libev-4.15/ev.c 2013-03-01 04:10:48.000000000 -0700
+++ passenger-5.0.6/ext/libev/ev.c 2013-10-26 16:00:00.000000000 -0600
@@ -967,7 +967,7 @@
#define ecb_unreachable() __builtin_unreachable ()
#else
/* this seems to work fine, but gcc always emits a warning for it :/ */
- ecb_inline void ecb_unreachable (void) ecb_noreturn;
+ ecb_inline ecb_noreturn void ecb_unreachable (void);
ecb_inline void ecb_unreachable (void) { }
#endif
@@ -2477,6 +2477,18 @@
return backend;
}
+int
+ev_backend_fd (EV_P) EV_THROW
+{
+ return backend_fd;
+}
+
+int
+ev_loop_get_pipe (EV_P_ unsigned int index) EV_THROW
+{
+ return evpipe[index];
+}
+
#if EV_FEATURE_API
unsigned int
ev_iteration (EV_P) EV_THROW
diff -ru ../libev/libev-4.15/ev.h passenger-5.0.6/ext/libev/ev.h
--- ../libev/libev-4.15/ev.h 2013-03-01 04:05:29.000000000 -0700
+++ passenger-5.0.6/ext/libev/ev.h 2013-10-26 16:00:00.000000000 -0600
@@ -605,6 +605,9 @@
EV_API_DECL unsigned int ev_backend (EV_P) EV_THROW; /* backend in use by loop
*/
+EV_API_DECL int ev_backend_fd (EV_P) EV_THROW;
+EV_API_DECL int ev_loop_get_pipe (EV_P_ unsigned int index) EV_THROW;
+
EV_API_DECL void ev_now_update (EV_P) EV_THROW; /* update event loop time */
#if EV_WALK_ENABLE
Changes appear to be part of this commit:
https://github.com/phusion/passenger/commit/a84b6ae1a64d2ae552d3e03c69d295a166200cd0#diff-8644f07c5dc22ffd1d2cae715cbbae56
throw RuntimeException("Cannot create an event loop");
}
+ P_LOG_FILE_DESCRIPTOR_OPEN2(ev_backend_fd(loop), "libev event loop:
backend
FD");
+
async = (ev_async *) malloc(sizeof(ev_async));
async->data = this;
ev_async_init(async, signalBackgroundEventLoopExit);
ev_async_start(loop, async);
+ P_LOG_FILE_DESCRIPTOR_OPEN2(ev_loop_get_pipe(loop, 0), "libev event
loop:
async pipe 0");
+ P_LOG_FILE_DESCRIPTOR_OPEN2(ev_loop_get_pipe(loop, 1), "libev event
loop:
async pipe 1");
safe = boost::make_shared<SafeLibev>(loop);
priv = new BackgroundEventLoopPrivate();
priv->thr = NULL;
~SafeLibev() {
destroy();
+ P_LOG_FILE_DESCRIPTOR_CLOSE(ev_loop_get_pipe(loop, 0));
+ P_LOG_FILE_DESCRIPTOR_CLOSE(ev_loop_get_pipe(loop, 1));
+ P_LOG_FILE_DESCRIPTOR_CLOSE(ev_backend_fd(loop));
ev_loop_destroy(loop);
}
Which allows for some additional logging of fd opening/closing. I know
nothing about the motivation for this change, but I'm wondering if this would
be accepted by libev?
Thanks for your time.
--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA, Boulder/CoRA Office FAX: 303-415-9702
3380 Mitchell Lane [email protected]
Boulder, CO 80301 http://www.nwra.com
_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev