An old commit (dd1b2b4d) addressed a crash-on-exit (not well understood) by reverting to the old-style signal/slot connection syntax.
In practice, this prevented simply because the slot was never called, something I got wind when after installed the current tip of the master branch I started seeing this:
QObject::connect: No such signal Konsole::TabbedViewContainer::destroyed(TabbedViewContainer*)
Moving back to the new style syntax (after changing the signature of ViewSplitter::containerDestroyed to avoid having to use a complicated cast in the connect() call) the crash was indeed there anew because containerDestroyed was being called again.
Analysing the backtrace showed that the containerDestroyed slot was called under the QSplitter::~QSplitter dtor, while deleting the splitter's child widgets.
In other words, the crash (inside QList::removeAll) seemed due to removing an item from a stale QList object. Vieplitter::containerDestroyed only serves to unregister a TabbedViewContainer that is about to be deleted; indeed, unregistering all registered containers in the new ViewSplitter::~ViewSplitter dtor fixes the crash.
My patch reverts both connections in ViewSplitter::registerContainer() to the new-style connection syntax.