Bug 504939

Summary: Modify Diagram > Open (Discard) > Print Preview crashes with a segfault
Product: [Applications] umbrello Reporter: Dillon <dillonotto112>
Component: generalAssignee: Umbrello Development Group <umbrello-devel>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version First Reported In: Git   
Target Milestone: ---   
Platform: Other   
OS: Other   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Dillon 2025-05-29 00:24:25 UTC
SUMMARY
Deterministic sequence of UI interactions leads to a segfault


STEPS TO REPRODUCE
1. Modify the diagram in some way (e.g. double click and hit ok)
2. Click open, then choose discard
3. Click print preview

OBSERVED RESULT

Umbrello crashes with a segfault

VIDEO
https://youtu.be/zM2Ldl6ZiSs

BACKTRACE
Thread 1 "umbrello5" received signal SIGSEGV, Segmentation fault.
0x00007ffff6cf8074 in QGraphicsView::scene() const ()
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
(gdb) bt
#0  0x00007ffff6cf8074 in QGraphicsView::scene() const ()
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#1  0x00005555564871e9 in UMLView::umlScene (this=<optimized out>)
    at /home/guifuzz/GUIFuzzBenchmarks/fuzzing/umbrello/umbrello/umlview.cpp:53
#2  0x0000555555831ecf in DiagramPrintPage::DiagramPrintPage (
    this=this@entry=0x7fffe8006530, parent=parent@entry=0x0, 
    doc=<optimized out>)
    at /home/guifuzz/GUIFuzzBenchmarks/fuzzing/umbrello/umbrello/dialogs/pages/diagramprintpage.cpp:79
#3  0x000055555632f2fe in UMLApp::slotPrintSettings (
    this=this@entry=0x555556c4c360)
    at /home/guifuzz/GUIFuzzBenchmarks/fuzzing/umbrello/umbrello/uml.cpp:1446
#4  0x0000555556334aa4 in UMLApp::slotPrintPreview (this=0x555556c4c360)
    at /home/guifuzz/GUIFuzzBenchmarks/fuzzing/umbrello/umbrello/uml.cpp:1474
#5  0x00007ffff5d24862 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff6964954 in QAction::triggered(bool) ()
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007ffff696788c in QAction::activate(QAction::ActionEvent) ()
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff6a6c60a in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff6a6c77b in QAbstractButton::mouseReleaseEvent(QMouseEvent*) ()
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff6b732e6 in QToolButton::mouseReleaseEvent(QMouseEvent*) ()
--Type <RET> for more, q to quit, c to continue without paging--c
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff69b1258 in QWidget::event(QEvent*) ()
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff696bef5 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff69746af in QApplication::notify(QObject*, QEvent*) ()
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff5ce8c98 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff697252d in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) ()
   from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff69cbcb7 in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff69cf3cf in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff696bef5 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff5ce8c98 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#20 0x00007ffff614ab87 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5
#21 0x00007ffff611afac in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5
#22 0x00007ffff10103f6 in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#23 0x00007ffff41b7397 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007ffff4217dc7 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#25 0x00007ffff41b68b3 in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007ffff5d47afd in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#27 0x00007ffff5ce75ab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#28 0x00007ffff5cf0286 in QCoreApplication::exec() ()
   from /lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x0000555555668071 in main (argc=<optimized out>, argv=<optimized out>)
    at /home/guifuzz/GUIFuzzBenchmarks/fuzzing/umbrello/umbrello/main.cpp:258


SOFTWARE/OS VERSIONS
Ubuntu 24.10
Umbrello 25.07.70
Comment 1 Ralf Habacker 2025-08-15 11:29:44 UTC
Git commit 87f9e4a253a225a46fdd1dcb71ed0f22314c711a by Ralf Habacker.
Committed on 15/08/2025 at 11:28.
Pushed by habacker into branch 'master'.

Prevent a crash when opening a new file with a modified document is canceled

When closing a document, the print preview is now disabled to avoid
accessing a view that no longer exist.
FIXEd-IN:25.08.1

M  +2    -0    umbrello/umldoc.cpp

https://invent.kde.org/sdk/umbrello/-/commit/87f9e4a253a225a46fdd1dcb71ed0f22314c711a
Comment 2 Ralf Habacker 2025-08-15 11:31:15 UTC
Git commit bde405ef925bf83ba90adff85f91ae4c73b4de1d by Ralf Habacker.
Committed on 15/08/2025 at 11:30.
Pushed by habacker into branch 'release/25.08'.

Prevent a crash when opening a new file with a modified document is canceled

When closing a document, the print preview is now disabled to avoid
accessing a view that no longer exist.
FIXEd-IN:25.08.1

(cherry picked from commit 87f9e4a253a225a46fdd1dcb71ed0f22314c711a)

M  +2    -0    umbrello/umldoc.cpp

https://invent.kde.org/sdk/umbrello/-/commit/bde405ef925bf83ba90adff85f91ae4c73b4de1d