In
         vector<struct DpkgState> &states = PackageOps[pkg];
pkg = 0, and is of type char *.  It is created by this code further
up; note the comments in the original:

------------------------------------
         /* dpkg sends strings like this:
            'status:   <pkg>:  <pkg  qstate>'
            errors look like this:
            'status: /var/cache/apt/archives/krecipes_0.8.1-0ubuntu1_i386.deb : 
error : trying to overwrite `/usr/share/doc/kde/HTML/en/krecipes/krectip.png', 
which is also in package krecipes-data 
            and conffile-prompt like this
            'status: conffile-prompt: conffile : 'current-conffile' 
'new-conffile' useredited distedited
            
         */
         char* list[5];
         if(!TokSplitString(':', line, list, sizeof(list)/sizeof(list[0])))
            // FIXME: dpkg sends multiline error messages sometimes (see
            //        #374195 for a example. we should support this by
            //        either patching dpkg to not send multiline over the
            //        statusfd or by rewriting the code here to deal with
            //        it. for now we just ignore it and not crash
            continue;
         char *pkg = list[1];
---------------------------------------------------

(gdb) p list
$2 = {0xafccf9c9 "reinstall it before attempting a removal.", 0x0, 
  0xafccf9e6 "g a removal.", 0xafccf9ee "val.", 0x0}
(gdb) ptype list
type = char *[5]
(gdb) p line
$3 = " reinstall it before attempting a removal.\000\000e is in a very bad 
inconsistent state - you should", '\0' <repeats 929 times>
(gdb) ptype line
type = char [1024]

So the second line has overwritten the buffer ("line"), which still
holds the tail of the first line's message.  It looks as if the
problem is that 1) the error is multiline and 2) it is not in the
multiline format that the work-around dealt with.

Is this sufficient information that I can attempt to fix up the system
producing this error, thereby making it non-trivial for me to
reproduce?

Also, as you anticipated, this probably should be reassigned to apt.

Thanks for your help.

Ross


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to