From 31088c0ec7007ec9d57041e148ff916ab125affe Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Tue, 7 Oct 2025 12:30:01 +0200 Subject: [PATCH] Add guarding tying to mitigate reported segmentation fault 2025-10-06 12:48:32.779] [rotating_logger] [error] Stack trace: [0] manageSegFailure(int) at :0 [1] at :0 [2] __dynamic_cast at :0 [3] RimSummaryMultiPlot::updateReadOutLines(double, double) at :0 [4] CoordinatePicker::trackerText(QPoint const&) const at :0 [5] QwtPicker::trackerRect(QFont const&) const at :0 [6] QwtPicker::updateDisplay() at :0 [7] QwtPicker::begin() at :0 [8] QwtPicker::transition(QEvent const*) at :0 [9] QwtPicker::eventFilter(QObject*, QEvent*) at :0 [10] QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) at :0 [11] QApplicationPrivate::notify_helper(QObject*, QEvent*) at :0 [12] RiaGuiApplication::notify(QObject*, QEvent*) at :0 [13] QCoreApplication::notifyInternal2(QObject*, QEvent*) at :0 [14] at :0 [15] QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool, bool) at :0 [16] at :0 [17] at :0 [18] QApplicationPrivate::notify_helper(QObject*, QEvent*) at :0 [19] RiaGuiApplication::notify(QObject*, QEvent*) at :0 [20] QCoreApplication::notifyInternal2(QObject*, QEvent*) at :0 [21] QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) at :0 [22] QWindowSystemInterface::sendWindowSystemEvents(QFlags) at :0 [23] at :0 [24] g_main_context_dispatch at :0 [25] g_main_context_iterate.isra.20 at :0 [26] g_main_context_iteration at :0 [27] QEventDispatcherGlib::processEvents(QFlags) at :0 [28] QEventLoop::exec(QFlags) at :0 [29] QCoreApplication::exec() at :0 --- .../ProjectDataModel/Summary/RimSummaryMultiPlot.cpp | 2 ++ ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp index 8dc61dd718..b7a325beb9 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp @@ -1774,6 +1774,8 @@ void RimSummaryMultiPlot::updateReadOutLines( double qwtTimeValue, double yValue for ( auto plot : summaryPlots() ) { + if ( !plot ) continue; + if ( m_readOutSettings->enableVerticalLine() && plot->timeAxisProperties() ) { plot->timeAxisProperties()->removeAllAnnotations(); diff --git a/ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp b/ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp index d13e85c779..5ecf0e4bb2 100644 --- a/ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp @@ -95,6 +95,9 @@ public: //-------------------------------------------------------------------------------------------------- QwtText trackerText( const QPoint& screenPixelCoordinates ) const override { + // Avoid updates if we do not have a valid plot. The invTransform call below use the plot without checking for nullptr. + if ( !plot() ) return {}; + if ( m_summaryMultiPlot ) { auto domainCoordinates = invTransform( screenPixelCoordinates );