[Aptitude-devel] Bug#802648: Bug#802648: aptitude: definite loop when searching "youk" in "youtube-dl" package info page

Manuel A. Fernandez Montecelo manuel.montezelo at gmail.com
Sun Jun 12 11:25:23 UTC 2016


Control: reassign -1 src:cwidget


Hi,

2015-10-26 10:33 Manuel A. Fernandez Montecelo:
>Control: found -1 aptitude/0.6.11
>
>
>Hi all,
>
>2015-10-22 12:23 Axel Beckert:
>>Control: tag -1 + confimred - unreproducible
>>
>>Hi,
>>
>>Axel Beckert wrote:
>>>> > 5. press "/", and enter "you", everything is OK for now
>>>> > 6. enter "k", the definite loop occures
>>>>
>>>> JFTR: I can't reproduce this with 0.7.2-1 from Debian Testing (in the
>>>> big terminal). Will test Sid later.
>>>
>>>Tried it on Debian Sid amd64 with a 157x21 terminal. But nothing
>>>crashed, continues to work fine.
>>
>>Sorry, I think I misunderstood the description initially. I
>>interpreted 'enter "you"' as typing the letters "y", "o", "u", and
>>then pressing the enter key and the pressing "k" to get one line up.
>>
>>But if you enter "youk" aptitude no more reacts except on Ctrl-C. At
>>least once in the 157x21 terminal. But I wasn't able to reproduce it
>>even in the 157x21 terminal after I tried it in the same process while
>>the terminal was bigger.
>>
>>So it may depend on what has already been done (and hence maybe cached
>>internally) before.
>>
>>I was not able to reproduce it in 0.7.2-1 from testing at all, even
>>if I followed the instructions inside a freshly started aptitude in a
>>157x21 terminal.
>
>I can reproduce it all the time, also in 0.6.11 from stable (Jessie).
>
>I think that it's partly due to the incremental search feature
>(according to the backtrace), feature about which there are more
>complaints in the BTS (but I haven't checked if they are related or
>not).

I've been investigating this again and I believe that it's actually a
problem with the cwidget library, that has happened since forever.

This happens also for example with devscripts and rhythmbox-plugins,
which have a long description which makes the main/first subtree (the
one with the package name, the second subtree is "Depends") to also
"fill" my terminal (expand more than a screenful vertically), like
youtube-dl.  It doesn't happen with libwiretap5 even if the description
is quite long, for example.

I think that it has to do with how the cwidget implementation moves the
view to jump to where the term being searched appears, and that gets
confused when the contents are off the screen or something similar.  The
backtrace points to line 854 in ./src/cwidget/widgets/tree.cc with the
line:

      while(curr!=start && !matches(*curr))

and with aptitude's menu_tree.cc, line 82. 


Searching for "yo" in "youtube-dl" screen doesn't produce the desired
effect (I presume), of searching e.g. inside the Description field.

When the screen starts at line "zero" [1], with incsearch enabled, "y"
jumps to the line below [2], after "yo" jumps to the last line (below
[3]), after "you" the same (and at this point it didn't hang yet, one
can delete with backspace etc).  With "youk" enters the infinite loop.

If one presses "yok", or "you<BACKSPACE>k", it also triggers the
infinite loop.

It will need quite some debugging, and probably a new cwidget release to
get this fixed.


[1] That is, printing:
    i    --\ youtube-dl                2016.02.22-1   2016.02.22-1

[2]
    --\ Depends (3)
      --\ python-pkg-resources

[3]
    --- Packages which depend on youtube-dl (5)
       --\ Versions of youtube-dl (1)
    
-- 
Manuel A. Fernandez Montecelo <manuel.montezelo at gmail.com>



More information about the Aptitude-devel mailing list