Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Jul 2014 21:19:57 +0200
From:      Michael Gmelin <grembo@freebsd.org>
To:        freebsd-ports@freebsd.org, Baptiste Daroussin <bapt@freebsd.org>, Vsevolod Stakhov <vsevolod@FreeBSD.org>
Subject:   pkg: pkg create deadlocks and hangs ZFS host
Message-ID:  <20140728211957.1e069918@bsd64.grem.de>

next in thread | raw e-mail | index | archive | help
--MP_/ZEWpQWRjxDiJEVHe0ZKYSOJ
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

I had pkg crash[1] our build host a couple of times today. I could
reproduce the issue on a local machine and opened a detailed bug
report on github[2] which links to a gist containing the patch that's
also attached to this email.

- Michael

[1] Crash like in "power cycle required".
[2] https://github.com/freebsd/pkg/issues/897

-- 
Michael Gmelin

--MP_/ZEWpQWRjxDiJEVHe0ZKYSOJ
Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename=0001-Disabled-implicitly-activated-pass-mode-which-is-uni.patch

>From d21a99520dc573a566910b37c6b1549cc1b9305f Mon Sep 17 00:00:00 2001
From: Michael Gmelin <freebsd@grem.de>
Date: Mon, 28 Jul 2014 21:02:06 +0200
Subject: [PATCH] Disabled implicitly activated "pass mode", which is
 unintuitive and causes deadlocks. (I frankly have no idea what its intended
 use is)

---
 libpkg/packing.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libpkg/packing.c b/libpkg/packing.c
index 40e806d..461444f 100644
--- a/libpkg/packing.c
+++ b/libpkg/packing.c
@@ -69,7 +69,9 @@ packing_init(struct packing **pack, const char *path, pkg_formats format)
 	archive_read_disk_set_standard_lookup((*pack)->aread);
 	archive_read_disk_set_symlink_physical((*pack)->aread);
 
+#if 0 // disabled, pass mode hangs
 	if (!is_dir(path)) {
+#endif
 		(*pack)->pass = false;
 		(*pack)->awrite = archive_write_new();
 		archive_write_set_format_pax_restricted((*pack)->awrite);
@@ -97,6 +99,7 @@ packing_init(struct packing **pack, const char *path, pkg_formats format)
 			*pack = NULL;
 			return EPKG_FATAL;
 		}
+#if 0 // disabled, pass mode hangs
 	} else { /* pass mode directly write to the disk */
 		pkg_debug(1, "Packing to directory '%s' (pass mode)", path);
 		(*pack)->pass = true;
@@ -104,6 +107,7 @@ packing_init(struct packing **pack, const char *path, pkg_formats format)
 		archive_write_disk_set_options((*pack)->awrite,
 		    EXTRACT_ARCHIVE_FLAGS);
 	}
+#endif
 
 	(*pack)->resolver = archive_entry_linkresolver_new();
 	archive_entry_linkresolver_set_strategy((*pack)->resolver,
-- 
2.0.0


--MP_/ZEWpQWRjxDiJEVHe0ZKYSOJ--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140728211957.1e069918>