[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#681885: marked as done (unblock: ivykis/0.30.1-2)



Your message dated Thu, 23 Aug 2012 18:24:13 +0200
with message-id <20120823162413.GK7361@mraw.org>
and subject line Re: Bug#681885: unblock: ivykis/0.30.1-2
has caused the Debian Bug report #681885,
regarding unblock: ivykis/0.30.1-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
681885: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=681885
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: freeze-exception

Please unblock package ivykis

While a new upstream version, it's a bug-fix release, containing
important upstream fixes (none reported to Debian, so no bug numbers
at present), and a minor packaging fix.

The most important of these are explained in the changelog aswell, but
for convenience, I'll repeat them here, with a bit more information
added to make it easier to decide whether to unblock the package.

The fixes are:

 - 0.30 (currently in testing) introduced a regression, that could
   easily result in a deadlock when under moderate load. The situation
   and the fix is - I believe - well explained in the comment in
   iv_work.c (see the attached debdiff)
 - The kqueue polling method had an uninitialized variable, which lead
   to strange situations - including possible assertions - on
   kFreeBSD. (fix in iv_method_kqueue.c)
 - Various minor/possible memory leak fixes, best explained by
   upstream commit messages:
    https://github.com/buytenh/ivykis/commit/3124a2c6b082054ee6418a195327c6e7b20529f3
    https://github.com/buytenh/ivykis/commit/d785caf58b25d2304d1aba9439fe20a5a76d76ee
 - A workaround for an event registration problem, triggered by
   syslog-ng. Without this workaround, it's fairly inconvenient to
   register fds with ivykis, and the application would need to go to
   great lengths to ensure everything is proper. A needless dance,
   since ivykis - with this fix - can do the same thing more
   efficiently.
 - And last but not least, ivykis Breaks/Replaces libsyslog-ng-dev,
   because former versions (including 3.3.5 currently in testing &
   unstable) included a patched ivykis, and installed its headers
   too. Starting with 3.3.6, syslog-ng will stop doing that, and use the
   ivykis package instead.

   However, after ivykis 0.30.1-2 was uploaded to unstable, syslog-ng
   3.3.5.90 (a 3.3.6 RC) was released, and 3rd party Debian packages
   were made for that release too.

   To make the life of users of those packages, and my own, I lowered
   the Breaks/Replaces to << 3.3.5.90~ (from the former << 3.3.6~).

   It's a trivial fix that does not affect Debian at all, but it'd be
   nice to have nevertheless.

There are currently no packages in Debian that either depend or
build-depend on ivykis, therefore I'd consider the above changes
no-risk and very safe. We've also went to great lengths with upstream
to make sure that 0.30.1 is suitable for Debian Stable, and that every
fix in it is well justified.

(The debdiff also has a bit of noise, as 0.30-1 had two patches
cherry-picked from upstream, which have been integrated in the new
version.)

unblock ivykis/0.30.1-2

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

-- 
|8]

diff -Nru ivykis-0.30/configure.ac ivykis-0.30.1/configure.ac
--- ivykis-0.30/configure.ac	2012-06-22 18:23:52.000000000 +0200
+++ ivykis-0.30.1/configure.ac	2012-07-02 21:14:58.000000000 +0200
@@ -1,5 +1,5 @@
 AC_PREREQ(2.59)
-AC_INIT([ivykis], [0.30], [libivykis-discuss@lists.sourceforge.net])
+AC_INIT([ivykis], [0.30.1], [libivykis-discuss@lists.sourceforge.net])
 AC_CONFIG_SRCDIR([lib/iv_main.c])
 AC_CONFIG_HEADER(config.h)
 AM_INIT_AUTOMAKE([foreign])
diff -Nru ivykis-0.30/debian/changelog ivykis-0.30.1/debian/changelog
--- ivykis-0.30/debian/changelog	2012-06-23 09:06:12.000000000 +0200
+++ ivykis-0.30.1/debian/changelog	2012-07-05 12:50:27.000000000 +0200
@@ -1,3 +1,19 @@
+ivykis (0.30.1-2) unstable; urgency=low
+
+  * Ligthen the Breaks/Replaces on libsyslog-ng-dev, and B/R on versions
+    prior to 3.3.5.90 instead of 3.3.6.
+
+ -- Gergely Nagy <algernon@madhouse-project.org>  Thu, 05 Jul 2012 12:49:32 +0200
+
+ivykis (0.30.1-1) unstable; urgency=low
+
+  * New upstream bugfix release:
+    + Fix a possible deadlock situation, introduced in 0.30.
+    + Work around iv_fd_register_try() being called without handlers
+      (triggered by syslog-ng)
+
+ -- Gergely Nagy <algernon@madhouse-project.org>  Tue, 03 Jul 2012 20:13:39 +0200
+
 ivykis (0.30-1) unstable; urgency=low
 
   * New upstream release.
diff -Nru ivykis-0.30/debian/control ivykis-0.30.1/debian/control
--- ivykis-0.30/debian/control	2012-06-23 09:06:12.000000000 +0200
+++ ivykis-0.30.1/debian/control	2012-07-05 12:50:27.000000000 +0200
@@ -29,8 +29,8 @@
 Section: libdevel
 Architecture: any
 Depends: libivykis0 (= ${binary:Version}), ${misc:Depends}
-Breaks: libsyslog-ng-dev (<< 3.3.6~)
-Replaces: libsyslog-ng-dev (<< 3.3.6~)
+Breaks: libsyslog-ng-dev (<< 3.3.5.90~)
+Replaces: libsyslog-ng-dev (<< 3.3.5.90~)
 Description: Development libraries, header files and docs for libivykis
  Contains the header files, documentation, examples and static
  libraries for use in developing applications that use the libivykis
diff -Nru ivykis-0.30/debian/patches/0001-iv_fatal-Don-t-pass-in-error-message-as-a-format-str.patch ivykis-0.30.1/debian/patches/0001-iv_fatal-Don-t-pass-in-error-message-as-a-format-str.patch
--- ivykis-0.30/debian/patches/0001-iv_fatal-Don-t-pass-in-error-message-as-a-format-str.patch	2012-06-23 09:08:11.000000000 +0200
+++ ivykis-0.30.1/debian/patches/0001-iv_fatal-Don-t-pass-in-error-message-as-a-format-str.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
-From b58b132817fbd27677eff7802fc8595da7d02ae5 Mon Sep 17 00:00:00 2001
-From: Gergely Nagy <algernon@balabit.hu>
-Date: Fri, 22 Jun 2012 22:53:56 +0200
-Subject: [PATCH] iv_fatal: Don't pass in error message as a format string to
- syslog(3).
-
-Instead of calling syslog(3) as:
-
-	syslog(LOG_CRIT, msg);
-
-we should call it as:
-
-	syslog(LOG_CRIT, "%s", msg);
-
-as the former variant treats the error message as a format string,
-which is potentially unsafe.
-
-Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
----
- lib/iv_main.c |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/iv_main.c b/lib/iv_main.c
-index 74cec15..5aad9ba 100644
---- a/lib/iv_main.c
-+++ b/lib/iv_main.c
-@@ -301,7 +301,7 @@ void iv_fatal(const char *fmt, ...)
- 	if (fatal_msg_handler != NULL)
- 		fatal_msg_handler(msg);
- 	else
--		syslog(LOG_CRIT, msg);
-+		syslog(LOG_CRIT, "%s", msg);
- 
- 	abort();
- }
--- 
-1.7.10
-
diff -Nru ivykis-0.30/debian/patches/0002-Makefile.am-Apply-forgotten-current-age-shared-libra.patch ivykis-0.30.1/debian/patches/0002-Makefile.am-Apply-forgotten-current-age-shared-libra.patch
--- ivykis-0.30/debian/patches/0002-Makefile.am-Apply-forgotten-current-age-shared-libra.patch	2012-06-23 09:08:11.000000000 +0200
+++ ivykis-0.30.1/debian/patches/0002-Makefile.am-Apply-forgotten-current-age-shared-libra.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,29 +0,0 @@
-From d0f9314ccdbe89de70bb94cd7a080b71d861c1ed Mon Sep 17 00:00:00 2001
-From: Gergely Nagy <algernon@balabit.hu>
-Date: Fri, 22 Jun 2012 23:10:11 +0200
-Subject: [PATCH] Makefile.am: Apply forgotten current+age shared library
- version bump.
-
-Corresponding to the addition of iv_fatal()/iv_set_fatal_msg_handler().
-
-Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
----
- Makefile.am |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 2f49510..9bb785f 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -6,7 +6,7 @@ lib_LTLIBRARIES = libivykis.la
- 
- libivykis_la_SOURCES =
- libivykis_la_LIBADD = lib/libivykis.la modules/libivykis-modules.la
--libivykis_la_LDFLAGS = -version-info 0:0:0
-+libivykis_la_LDFLAGS = -version-info 1:0:1
- 
- if HAVE_VERSIONING
- libivykis_la_LDFLAGS += -Wl,--version-script,${srcdir}/libivykis.ver
--- 
-1.7.10
-
diff -Nru ivykis-0.30/debian/patches/series ivykis-0.30.1/debian/patches/series
--- ivykis-0.30/debian/patches/series	2012-06-23 09:08:11.000000000 +0200
+++ ivykis-0.30.1/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-# debian/source/git-patches exported from git by quilt-patches-deb-export-hook
-0001-iv_fatal-Don-t-pass-in-error-message-as-a-format-str.patch
-0002-Makefile.am-Apply-forgotten-current-age-shared-libra.patch
diff -Nru ivykis-0.30/debian/source/git-patches ivykis-0.30.1/debian/source/git-patches
--- ivykis-0.30/debian/source/git-patches	2012-06-23 09:06:12.000000000 +0200
+++ ivykis-0.30.1/debian/source/git-patches	1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-v$UPSTREAM_REF-trunk..debian/patched/$DEB_REF
diff -Nru ivykis-0.30/lib/iv_fd.c ivykis-0.30.1/lib/iv_fd.c
--- ivykis-0.30/lib/iv_fd.c	2012-06-22 18:23:52.000000000 +0200
+++ ivykis-0.30.1/lib/iv_fd.c	2012-07-02 21:14:58.000000000 +0200
@@ -162,18 +162,28 @@
 {
 	struct iv_state *st = iv_get_state();
 	struct iv_fd_ *fd = (struct iv_fd_ *)_fd;
+	int orig_wanted_bands;
 	int ret;
 
 	iv_fd_register_prologue(st, fd);
 
 	recompute_wanted_flags(fd);
 
+	orig_wanted_bands = fd->wanted_bands;
+	if (!fd->wanted_bands)
+		fd->wanted_bands = MASKIN | MASKOUT;
+
 	ret = method->notify_fd_sync(st, fd);
 	if (ret) {
 		fd->registered = 0;
 		return ret;
 	}
 
+	if (!orig_wanted_bands) {
+		fd->wanted_bands = 0;
+		method->notify_fd(st, fd);
+	}
+
 	iv_fd_register_epilogue(st, fd);
 
 	return 0;
diff -Nru ivykis-0.30/lib/iv_main.c ivykis-0.30.1/lib/iv_main.c
--- ivykis-0.30/lib/iv_main.c	2012-06-22 18:23:52.000000000 +0200
+++ ivykis-0.30.1/lib/iv_main.c	2012-07-02 21:14:58.000000000 +0200
@@ -301,7 +301,7 @@
 	if (fatal_msg_handler != NULL)
 		fatal_msg_handler(msg);
 	else
-		syslog(LOG_CRIT, msg);
+		syslog(LOG_CRIT, "%s", msg);
 
 	abort();
 }
diff -Nru ivykis-0.30/lib/iv_method_kqueue.c ivykis-0.30.1/lib/iv_method_kqueue.c
--- ivykis-0.30/lib/iv_method_kqueue.c	2012-06-22 18:23:52.000000000 +0200
+++ ivykis-0.30.1/lib/iv_method_kqueue.c	2012-07-02 21:14:58.000000000 +0200
@@ -206,7 +206,7 @@
 static int iv_kqueue_notify_fd_sync(struct iv_state *st, struct iv_fd_ *fd)
 {
 	struct kevent kev[2];
-	int num;
+	int num = 0;
 	int ret;
 
 	iv_kqueue_queue_one(kev, &num, fd);
diff -Nru ivykis-0.30/Makefile.am ivykis-0.30.1/Makefile.am
--- ivykis-0.30/Makefile.am	2012-06-22 18:23:52.000000000 +0200
+++ ivykis-0.30.1/Makefile.am	2012-07-02 21:14:58.000000000 +0200
@@ -6,7 +6,7 @@
 
 libivykis_la_SOURCES =
 libivykis_la_LIBADD = lib/libivykis.la modules/libivykis-modules.la
-libivykis_la_LDFLAGS = -version-info 0:0:0
+libivykis_la_LDFLAGS = -version-info 1:1:1
 
 if HAVE_VERSIONING
 libivykis_la_LDFLAGS += -Wl,--version-script,${srcdir}/libivykis.ver
diff -Nru ivykis-0.30/modules/iv_thread.c ivykis-0.30.1/modules/iv_thread.c
--- ivykis-0.30/modules/iv_thread.c	2012-06-22 18:23:52.000000000 +0200
+++ ivykis-0.30.1/modules/iv_thread.c	2012-07-02 21:14:58.000000000 +0200
@@ -184,6 +184,7 @@
 
 out:
 	iv_event_unregister(&thr->dead);
+	free(thr->name);
 	free(thr);
 
 	if (iv_thread_debug)
diff -Nru ivykis-0.30/modules/iv_wait.c ivykis-0.30.1/modules/iv_wait.c
--- ivykis-0.30/modules/iv_wait.c	2012-06-22 18:23:52.000000000 +0200
+++ ivykis-0.30.1/modules/iv_wait.c	2012-07-02 21:14:58.000000000 +0200
@@ -219,9 +219,6 @@
 		}
 
 		free(we);
-
-		if (tinfo->handled_wait_interest == NULL)
-			break;
 	}
 
 	tinfo->handled_wait_interest = NULL;
diff -Nru ivykis-0.30/modules/iv_work.c ivykis-0.30.1/modules/iv_work.c
--- ivykis-0.30/modules/iv_work.c	2012-06-22 18:23:52.000000000 +0200
+++ ivykis-0.30.1/modules/iv_work.c	2012-07-02 21:14:58.000000000 +0200
@@ -119,6 +119,17 @@
 		} else {
 			__iv_work_thread_die(thr);
 		}
+	} else {
+		/*
+		 * If we're already at the maximum number of pool
+		 * threads, and none of those threads were idle when
+		 * more work arrived, then there may have been no
+		 * kick sent for the new work item(s) (and no new
+		 * pool thread started either), so if we're leaving
+		 * with work items still pending, kick ourselves by
+		 * hand, to make sure we don't deadlock.
+		 */
+		iv_event_post(&thr->kick);
 	}
 
 	pthread_mutex_unlock(&pool->lock);

--- End Message ---
--- Begin Message ---
Gergely Nagy <algernon@balabit.hu> (17/08/2012):
> Sorry about that, I was in a bit of a rush at the time. I could upload
> a -3 and retroactively correct the changelog (by adding a "All patches
> dropped, they were merged upstream" line or something similar to
> 0.30-1), if that'd help.
> 
> Or, I can send a filtered debdiff with that patch noise filtered out.

The latter would be appreciated if the situation arises again. I went
for two apt-get source, then rm -r on .pc and debian/patches.

Unblocked.

Mraw,
KiBi.

Attachment: signature.asc
Description: Digital signature


--- End Message ---

Reply to: