There are websites that cause a segmentation fault, originating in DocumentNode::getParentNode, which is called in MoeNavigatorEngine::DetermineVisualAttributes.
A full backtrace for such a segmentation fault is given in MoeNavigator ticket 7.
The problem starts one step before: MoeNavigatorEngine::determineVisualAttributes calls itself in a for-loop iterating over all children of a node (currently line 507 in MoeNavigatorEngine.cpp). The call is made with an invalid shared_ptr that points to inaccessible memory.
Possible reason why the pointer is invalid: A child node is deleted, but not removed from the parent's list of children.
TODO: Check DocumentNode destructor and the methods removeChild and replaceChild.
The invalid shared_ptr comes from a "use-after-free" that originates in DocumentNode::insertBefore, when the insert method is called on the children vector (
std::vector<std::shared_ptr<DocumentNode>>). On insertion, the memory the shared_ptr holds, is freed.
Deleting a branch is permanent. It CANNOT be undone. Continue?