Bug#38393: dpkg: dpkg assertion failure: process_queue: Assertion `dependtry <= 4' failed. (+ possible patch)
Package: dpkg
Version: 1.4.1.1
As mentioned in the subject, dpkg dies with an assertion failure. I
spent some time trying to track this down, and I believe I know what's
happening.
The relevant information is here:
Package: cmucl
Status: install ok unpacked
Depends: libc6 (>= 2.1), lisp-core
Package: cmucl-small
Status: install ok unpacked
Provides: lisp-core
Depends: cmucl
As you can see, there is a dependency cycle (cmucl -> lisp-core ->
cmucl-small -> cmucl) that goes through a virtual package. As far as
I can tell, depcon.c:findbreakcycle() -- the function which is
supposed to break dependency cycles and allow dpkg to proceed -- does
not correctly handle this case. When it's tracking down the
dependencies of cmucl to find cycles, it notices the lisp-core
dependency, but ignores it because of the following code:
/* We can't have any cycles involving packages we're not trying
* to do anything with.
*/
if (possi->ed->clientdata->istobe == itb_normal) continue;
The lisp-core virtual package does have
clientdata->istobe == itb_normal, so the code farther down in this
function which checks for virtual package providers is never run.
So my patch is just to comment out that code:
--- ORIG-depcon.c Wed May 26 22:21:34 1999
+++ depcon.c Wed May 26 22:21:38 1999
@@ -104,10 +104,12 @@
for (dep= pkg->installed.depends; dep; dep= dep->next) {
if (dep->type != dep_depends && dep->type != dep_predepends) continue;
for (possi= dep->list; possi; possi= possi->next) {
+#if 0
/* We can't have any cycles involving packages we're not trying
* to do anything with.
*/
if (possi->ed->clientdata->istobe == itb_normal) continue;
+#endif
/* Don't find the same cycles again. */
if (possi->cyclebreak) continue;
thislink.possi= possi;
This patch does fix the assertion failure and allow configuration to
proceed in my case.
Carl Witty
-- System Information
Debian Release: potato
Kernel Version: Linux nebula 2.0.35 #1 Thu Nov 19 00:04:16 PST 1998 i686 unknown
Versions of the packages dpkg depends on:
ii libc6 2.1.1-7 GNU C Library: Shared libraries and timezone
ii libncurses4 4.2-3.2 Shared libraries for terminal handling
ii libstdc++2.9 2.91.61-1 The GNU stdc++ library (egcs version)
Reply to: