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>