[issue1947] Busy hang producing diff for merge changeset involving renames

Jesse Glick bugs at mercurial.selenic.com
Thu Dec 10 17:50:12 UTC 2009


New submission from Jesse Glick <jesse.glick at sun.com>:

Try something like:

$ hg clone -U http://hg.netbeans.org/prototypes/
$ hg -R r log -r d774ee5a31bd -p

Hg 1.2 takes 5.1 sec, 1.3/1.3.1 6.5 sec. Hg 1.4/1.4.1 consumes 100% CPU and
never finishes (at least so long as I have waited). --profile says

  C-c C-c   CallCount    Recursive    Total(ms)   Inline(ms)
module:lineno(function)
           9            0     32.4758      8.6247  
mercurial.ancestor:10(ancestor)
    +1341171            0     20.1788      6.8549  
+mercurial.revlog:1121(parents)
     +714921            0      1.3028      1.3028   +<min>
     +714970            0      1.2548      1.2548   +<method 'pop' of 'list'
objects>
     +716754            0      1.1117      1.1117   +<method 'append' of
'list' objects>
         +17            0      0.0031      0.0001  
+mercurial.context:476(parents)
     1341171            0     20.1788      6.8549  
mercurial.revlog:1121(parents)
    +1341171            0     13.3239      5.6847  
+mercurial.revlog:518(parentrevs)
     1341207            0     13.3243      5.6849  
mercurial.revlog:518(parentrevs)
    +1341206            0      7.6394      4.8956  
+mercurial.revlog:269(__getitem__)
     1347945            0      7.7005      4.9204  
mercurial.revlog:269(__getitem__)
    +1347945            0      2.7576      2.7576   +<_struct.unpack>
         +14            0      0.0225      0.0001   +mercurial.revlog:264(load)
     1503703            0      3.0610      3.0610   <_struct.unpack>
      714989            0      1.3029      1.3029   <min>
      715203            0      1.2553      1.2553   <method 'pop' of 'list'
objects>
      718848            0      1.1153      1.1153   <method 'append' of
'list' objects>
      155683            0      1.6612      0.8665  
mercurial.revlog:293(__iter__)
     +155681            0      0.3032      0.3032   +<_struct.unpack>
     +155681            0      0.2455      0.2455   +<isinstance>
        +141            0      0.2460      0.0009  
+mercurial.revlog:234(loadindex)
      192418            0      0.9481      0.6447   mercurial.manifest:18(flags)
     +192418            0      0.3033      0.3033   +<method 'get' of 'dict'
objects>

The changeset is a pbranch merge; the branch involved moving a few dozen
files, but is otherwise a modest patch:

 15 files changed, 281 insertions(+), 321 deletions(-)

157f6b44cef8 (the non-merge changeset which did the rename) produces this
problem as well, though it did not do so before the merge. Other changesets
in the branch do not pose a problem, so I'm guessing the renames are the
trigger.

----------
messages: 11202
nosy: jglick, mzlamal
priority: bug
status: unread
title: Busy hang producing diff for merge changeset involving renames
topic: 1.4, diff, performance, regression

____________________________________________________
Mercurial issue tracker <bugs at mercurial.selenic.com>
<http://mercurial.selenic.com/bts/issue1947>
____________________________________________________


More information about the Mercurial-devel mailing list