Gergely Nagy <alger...@balabit.hu> writes:

> This is a known problem in the underlying ivykis library, and can be
> fixed by applying a patch to lib/ivykis, something along these lines:
>
>  
> https://github.com/buytenh/ivykis/commit/89f67f97477aeba24aebfc58ae1a17e5bea69724.patch
>
> It will need some minor changes, as the ivykis included with 3.3.5 is a
> bit different from upstream.

The attached patch should fix the eventfd2 errors, and make the code
properly fall back to whatever it normally falls back to.

>> I then can see syslog-ng master-process spawining childs, which segfault 
>> immidiatly:
>> http://paste.debian.net/239439/
>
> This sounds like another issue, also in ivykis, but a race condition:
>
>   
> https://github.com/buytenh/ivykis/commit/144b88cbe4a04d53acbf4525d06cc1860571d36f.patch
>
> This should apply reasonably cleanly to lib/ivykis aswell.

Turns out, this doesn't apply cleanly, or at all. It is not needed
either, as the code in syslog-ng's ivykis fork does not suffer from this
problem. The crash is likely due to something else, perhaps even related
to the eventfd fix.

I have not been able to reproduce the crash in the wheezy chroot on
gabrielli, unfortunately. I'm trying to figure something out using
valgrind on x86, perhaps that'll help.

Meanwhile, if I could get access to the core file that was generated,
that may help, or at least aid me in figuring out how to reproduce the
problem on my own.

-- 
|8]

--- iv_event_raw.c.orig	2013-03-03 17:11:37.548279231 +0100
+++ iv_event_raw.c	2013-03-03 17:11:00.664356074 +0100
@@ -91,7 +91,7 @@
 
 		ret = eventfd2(0, EFD_NONBLOCK | EFD_CLOEXEC);
 		if (ret < 0) {
-			if (errno != ENOSYS) {
+			if (errno != ENOSYS && errno != EINVAL) {
 				perror("eventfd2");
 				return -1;
 			}

Reply via email to