repository/shelve crashes with qt debug build
Created originally on Bitbucket by Märt Bakhoff
Using tortoisehg-4.4.2 + qt 5.10 debug build (asserts enabled) + PyQt5-5.9.2. Opening the shelve dialog from the repository menu always crashes the application:
$ thg
ASSERT: "last >= first" in file itemmodels/qabstractitemmodel.cpp, line 2689
Aborted (core dumped)
gdb backtrace (full log attached):
Thread 1 "python2.7" hit Breakpoint 3, QAbstractItemModel::beginInsertRows (this=0x555557745790, parent=..., first=0, last=-1) at itemmodels/qabstractitemmodel.cpp:2689
2689 Q_ASSERT(last >= first);
(gdb) bt
#0 QAbstractItemModel::beginInsertRows (this=0x555557745790, parent=..., first=0, last=-1) at itemmodels/qabstractitemmodel.cpp:2689
#1 0x00007ffff3d74655 in meth_QAbstractItemModel_beginInsertRows (sipSelf=<ManifestModel(_rootentry=<_Entry at remote 0x7fffce5221a0>, _changedfilesonly=False, _statusfilter='MAR', _fileiconprovider=<QFileIconProvider at remote 0x7fffcf067668>, _iconcache={}, _populate=<function at remote 0x7fffcfd47500>, _rootpopulated=False, _namefilter=u'', _nodeop=<type at remote 0x555556591950>, _repoagent=<RepoAgent(_cmdagent=<CmdAgent(_ui=<ui(_terminfoparams={}, verbose=False, _bufferstates=[], _trustgroups=set([]), pageractive=False, insecureconnections=False, ferr=<file at remote 0x7ffff7f9b1e0>, fout=<file at remote 0x7ffff5cb1b70>, _knownconfig={'logtoprocess': <itemregister(_generics=set([])) at remote 0x7fffe97b2990>, 'mq': <itemregister(_generics=set([])) at remote 0x7fffe7fca2a0>, 'color': <itemregister(_generics=set([<...>])) at remote 0x7fffe97a22a0>, 'hooks': <itemregister(_generics=set([<...>])) at remote 0x7fffe97b23c8>, 'http_proxy': <itemregister(_generics=set([])) at remote 0x7fffe97b2868>, 'censor': <itemregister(_generics=set([])) at remote 0x7ffff46b3e30>, 'annotate': <ite...(truncated), sipArgs=(<QModelIndex at remote 0x7fffcff4f2a8>, 0, -1)) at sipQtCoreQAbstractItemModel.cpp:1985
The beginInsertRows method is called from hgqt/manifestmodel.py:377
371 def fetchMore(self, parent):
372 if parent.isValid() or self._rootpopulated:
373 return
374 assert len(self._rootentry) == 0
375 newroote = self._rootentry.copyskel()
376 self._populateNodes(newroote)
377 self.beginInsertRows(parent, 0, len(newroote) - 1)
378 self._rootentry = newroote
379 self._rootpopulated = True
380 self.endInsertRows()
381 self.revLoaded.emit(self.rev())
Attachments: gdb-backtrace.log