segfault doing 'bzr log' on a stacked branch

Bug #419241 reported by John A Meinel
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Bazaar
Fix Released
Critical
John A Meinel

Bug Description

time bzr log lp:~jameinel/bzr/2.0b1-stable-groupcompress-order -n0 -r -20..-1

has a segfault.

I believe it is a couple compounding factors:

1) the new "VF.get_known_graph_ancestry()" doesn't handle stacking boundaries, and thus returns only part of the history for the branch.

2) The new KnownGraph.merge_sort() algorithm has a bug when trying to merge_sort one of these graphs. (Note that if I disable the compiled code, I get a KeyError exception from:

  File "C:\Users\jameinel\dev\bzr\bzr.dev\bzrlib\tsort.py", line 464, in push_node
    parent_info = revnos[parents[0]]

Which is strange, because the code *does* handle ghosts. So I don't know how we got a parent that wasn't numbered before its child, that wasn't a ghost.

I'm currently investigating, but this is a fairly serious regression for the 2.0-rc1 release.

Related branches

Revision history for this message
John A Meinel (jameinel) wrote :

So I tracked the segfault down into code that is passing a node with parents=None to _push_node which isn't supposed to be possible. (The code in _push_node assumes that it can check the parents list as a tuple, etc.)

I've got a quick way to reproduce this, so that part of this bug should be fixed soon.

I don't have a great idea (yet) as to how to handle the issues with stacking and find_ancestry. I think the interface gives back missing keys, so it might not be too bad.

(How to handle it with bzr+ssh repos that don't have stacking set up... I really don't know)

Revision history for this message
Robert Collins (lifeless) wrote :

bzr+ssh repos w/out stacking setup will still get the parent notes returned; it shouldn't be any different to our current non-C code though.

John A Meinel (jameinel)
Changed in bzr:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.