Bug 450267 - crash when importing c++ code
Summary: crash when importing c++ code
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2022-02-15 00:36 UTC by Ludovic Jozeau
Modified: 2022-02-15 22:59 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 2.33.80 (KDE releases 22.03.80)


Attachments
header that crashes umbrello (7.60 KB, text/x-c++hdr)
2022-02-15 12:20 UTC, Ludovic Jozeau
Details
bug250467-FtpHppImport-savedByUmbrelloMaster-uml2.xmi (30.49 KB, text/x-xmi)
2022-02-15 12:46 UTC, Oliver Kellogg
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ludovic Jozeau 2022-02-15 00:36:15 UTC
Application: umbrello5 (2.32.2)

Qt Version: 5.15.2
Frameworks Version: 5.90.0
Operating System: Linux 5.15.22-1-lts x86_64
Windowing System: X11
Distribution: "Arch Linux"
DrKonqi: 5.24.0 [KCrashBackend]

-- Information about the crash:
The end of the logs:
kf.i18n: "0 instead of 1 arguments to message {Could not find inclu...} supplied before conversion."
kf.i18n: "0 instead of 2 arguments to message {'%1' expected found ...} supplied before conversion."
/usr/include/c++/11.1.0/bits/unique_ptr.h:407: typename std::add_lvalue_reference<_Tp>::type std::unique_ptr<_Tp, _Dp>::operator*() const [with _Tp = InitDeclaratorAST; _Dp = std::default_delete<InitDeclaratorAST>; typename std::add_lvalue_reference<_Tp>::type = InitDeclaratorAST&]: Assertion 'get() != pointer()' failed.

The crash can be reproduced every time.

-- Backtrace:
Application: Umbrello UML Modeller (umbrello5), signal: Aborted

[KCrash Handler]
#4  0x00007f2a49a9ad22 in raise () at /usr/lib/libc.so.6
#5  0x00007f2a49a84862 in abort () at /usr/lib/libc.so.6
#6  0x0000555b53840a2a in std::__replacement_assert(char const*, int, char const*, char const*) (__file=<optimized out>, __line=<optimized out>, __function=<optimized out>, __condition=<optimized out>) at /usr/include/c++/11.1.0/x86_64-pc-linux-gnu/bits/c++config.h:504
#7  0x0000555b53af8586 in std::unique_ptr<InitDeclaratorAST, std::default_delete<InitDeclaratorAST> >::operator*() const (this=<optimized out>) at /usr/include/c++/11.1.0/bits/unique_ptr.h:405
#8  std::unique_ptr<InitDeclaratorAST, std::default_delete<InitDeclaratorAST> >::operator*() const (this=<optimized out>) at /usr/include/c++/11.1.0/bits/unique_ptr.h:405
#9  Parser::parseDeclarationInternal(std::unique_ptr<DeclarationAST, std::default_delete<DeclarationAST> >&) (this=0x7ffdd86f7260, node=Python Exception <class 'gdb.error'>: Request for member '_M_head_impl' is ambiguous in type 'std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> >'. Candidates are:
  'std::default_delete<DeclarationAST> std::_Head_base<1, std::default_delete<DeclarationAST>, true>::_M_head_impl' (std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<0, DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<1, std::default_delete<DeclarationAST> > -> std::_Head_base<1, std::default_delete<DeclarationAST>, true>)
  '<unnamed type> std::_Head_base<0, DeclarationAST*, false>::_M_head_impl' (std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<0, DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Head_base<0, DeclarationAST*, false>)
...) at /usr/src/debug/umbrello-21.12.2/lib/cppparser/parser.cpp:3158
#10 0x0000555b53aea7c6 in Parser::parseMemberSpecification(std::unique_ptr<DeclarationAST, std::default_delete<DeclarationAST> >&) (node=Python Exception <class 'gdb.error'>: Request for member '_M_head_impl' is ambiguous in type 'std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> >'. Candidates are:
  'std::default_delete<DeclarationAST> std::_Head_base<1, std::default_delete<DeclarationAST>, true>::_M_head_impl' (std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<0, DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<1, std::default_delete<DeclarationAST> > -> std::_Head_base<1, std::default_delete<DeclarationAST>, true>)
  '<unnamed type> std::_Head_base<0, DeclarationAST*, false>::_M_head_impl' (std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<0, DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Head_base<0, DeclarationAST*, false>)
..., this=0x7ffdd86f7260) at /usr/src/debug/umbrello-21.12.2/lib/cppparser/parser.cpp:2142
#11 Parser::parseClassSpecifier(std::unique_ptr<TypeSpecifierAST, std::default_delete<TypeSpecifierAST> >&) (this=0x7ffdd86f7260, node=Python Exception <class 'gdb.error'>: Request for member '_M_head_impl' is ambiguous in type 'std::tuple<TypeSpecifierAST*, std::default_delete<TypeSpecifierAST> >'. Candidates are:
  'std::default_delete<TypeSpecifierAST> std::_Head_base<1, std::default_delete<TypeSpecifierAST>, true>::_M_head_impl' (std::tuple<TypeSpecifierAST*, std::default_delete<TypeSpecifierAST> > -> std::_Tuple_impl<0, TypeSpecifierAST*, std::default_delete<TypeSpecifierAST> > -> std::_Tuple_impl<1, std::default_delete<TypeSpecifierAST> > -> std::_Head_base<1, std::default_delete<TypeSpecifierAST>, true>)
  '<unnamed type> std::_Head_base<0, TypeSpecifierAST*, false>::_M_head_impl' (std::tuple<TypeSpecifierAST*, std::default_delete<TypeSpecifierAST> > -> std::_Tuple_impl<0, TypeSpecifierAST*, std::default_delete<TypeSpecifierAST> > -> std::_Head_base<0, TypeSpecifierAST*, false>)
...) at /usr/src/debug/umbrello-21.12.2/lib/cppparser/parser.cpp:2023
#12 0x0000555b53adfdbd in Parser::parseDeclaration(std::unique_ptr<DeclarationAST, std::default_delete<DeclarationAST> >&) (this=0x7ffdd86f7260, node=Python Exception <class 'gdb.error'>: Request for member '_M_head_impl' is ambiguous in type 'std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> >'. Candidates are:
  'std::default_delete<DeclarationAST> std::_Head_base<1, std::default_delete<DeclarationAST>, true>::_M_head_impl' (std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<0, DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<1, std::default_delete<DeclarationAST> > -> std::_Head_base<1, std::default_delete<DeclarationAST>, true>)
  '<unnamed type> std::_Head_base<0, DeclarationAST*, false>::_M_head_impl' (std::tuple<DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Tuple_impl<0, DeclarationAST*, std::default_delete<DeclarationAST> > -> std::_Head_base<0, DeclarationAST*, false>)
...) at /usr/src/debug/umbrello-21.12.2/lib/cppparser/parser.cpp:530
#13 0x0000555b53ac4052 in Parser::parseTranslationUnit(QExplicitlySharedDataPointer<TranslationUnitAST>&) (node=<synthetic pointer>..., this=0x7ffdd86f7260) at /usr/src/debug/umbrello-21.12.2/lib/cppparser/parser.cpp:466
#14 Driver::ParseHelper::parse() (this=this@entry=0x7ffdd86f7360) at /usr/src/debug/umbrello-21.12.2/lib/cppparser/driver.cpp:344
#15 0x0000555b53ac9ea8 in Driver::parseFile(QString const&, bool, bool, bool) (this=0x555b55503600, fileName=..., onlyPreProcess=<optimized out>, force=<optimized out>, macrosGlobal=<optimized out>) at /usr/src/debug/umbrello-21.12.2/lib/cppparser/driver.cpp:559
#16 0x0000555b53a89fe6 in CppImport::parseFile(QString const&) (fileName=..., this=0x555b57912f40) at /usr/src/debug/umbrello-21.12.2/umbrello/codeimport/cppimport.cpp:140
#17 CppImport::parseFile(QString const&) (this=0x555b57912f40, fileName=...) at /usr/src/debug/umbrello-21.12.2/umbrello/codeimport/cppimport.cpp:136
#18 0x0000555b538b15dd in ClassImport::importFile(QString const&) (fileName=..., this=0x555b57912f40) at /usr/src/debug/umbrello-21.12.2/umbrello/codeimport/classimport.cpp:115
#19 CodeImpThread::run() (this=0x555b57bc3ca0) at /usr/src/debug/umbrello-21.12.2/umbrello/codeimpwizard/codeimpthread.cpp:48
#20 0x0000555b538ae6d1 in CodeImpStatusPage::importCodeFile(bool) (this=0x555b578d80f0, noError=<optimized out>) at /usr/src/debug/umbrello-21.12.2/umbrello/codeimpwizard/codeimpstatuspage.cpp:178
#21 0x00007f2a4a242ddf in doActivate<false>(QObject*, int, void**) (sender=0x555b57bc3c60, signal_index=3, argv=0x7ffdd86f76f0) at kernel/qobject.cpp:3898
#22 0x00007f2a4a2454f4 in QSingleShotTimer::timeout() (this=0x555b57bc3c60) at .moc/qtimer.moc:130
#23 QSingleShotTimer::timerEvent(QTimerEvent*) (this=0x555b57bc3c60) at kernel/qtimer.cpp:323
#24 0x00007f2a4a235e06 in QObject::event(QEvent*) (this=0x555b57bc3c60, e=0x7ffdd86f78d0) at kernel/qobject.cpp:1291
#25 0x00007f2a4ad261a6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x555b57bc3c60, e=0x7ffdd86f78d0) at kernel/qapplication.cpp:3632
#26 0x00007f2a4a21216a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x555b57bc3c60, event=0x7ffdd86f78d0) at kernel/qcoreapplication.cpp:1064
#27 0x00007f2a4a25cca5 in QTimerInfoList::activateTimers() (this=0x555b555cf110) at kernel/qtimerinfo_unix.cpp:643
#28 0x00007f2a4a25d28a in timerSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183
#29 0x00007f2a4511bf13 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#30 0x00007f2a451720d9 in  () at /usr/lib/libglib-2.0.so.0
#31 0x00007f2a45119485 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#32 0x00007f2a4a25d44a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x555b555cdcd0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#33 0x00007f2a4a20a44b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffdd86f7b70, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#34 0x00007f2a4af20106 in QDialog::exec() (this=0x7f2a240094b0) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#35 0x0000555b538649dc in UMLApp::slotImportingWizard() (this=<optimized out>) at /usr/src/debug/umbrello-21.12.2/umbrello/uml.cpp:2787
#36 UMLApp::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _id=<optimized out>, _a=<optimized out>, _c=<optimized out>) at /usr/src/debug/build/umbrello/libumbrello_autogen/EWIEGA46WW/moc_uml.cpp:483
#37 0x00007f2a4a242ddf in doActivate<false>(QObject*, int, void**) (sender=0x555b572f8120, signal_index=4, argv=0x7ffdd86f7df0) at kernel/qobject.cpp:3898
#38 0x00007f2a4ad19417 in QAction::triggered(bool) (this=this@entry=0x555b572f8120, _t1=<optimized out>) at .moc/moc_qaction.cpp:376
#39 0x00007f2a4ad1eeb0 in QAction::activate(QAction::ActionEvent) (this=0x555b572f8120, event=<optimized out>) at kernel/qaction.cpp:1161
#40 0x00007f2a4aea0ee3 in QMenuPrivate::activateCausedStack(QVector<QPointer<QWidget> > const&, QAction*, QAction::ActionEvent, bool) (this=this@entry=0x555b573b7760, causedStack=..., action=action@entry=0x555b572f8120, action_e=action_e@entry=QAction::Trigger, self=self@entry=true) at widgets/qmenu.cpp:1384
#41 0x00007f2a4aea0fc1 in QMenuPrivate::activateAction(QAction*, QAction::ActionEvent, bool) (this=0x555b573b7760, action=0x555b572f8120, action_e=QAction::Trigger, self=<optimized out>) at widgets/qmenu.cpp:1461
#42 0x00007f2a4ad5c616 in QWidget::event(QEvent*) (this=0x555b573bc790, event=0x7ffdd86f8400) at kernel/qwidget.cpp:8646
#43 0x00007f2a4ad261a6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x555b554ff700, receiver=receiver@entry=0x555b573bc790, e=e@entry=0x7ffdd86f8400) at kernel/qapplication.cpp:3632
#44 0x00007f2a4ad2afd7 in QApplication::notify(QObject*, QEvent*) (this=0x7ffdd86f8090, receiver=0x555b573bc790, e=0x7ffdd86f8400) at kernel/qapplication.cpp:3076
#45 0x00007f2a4a21216a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x555b573bc790, event=0x7ffdd86f8400) at kernel/qcoreapplication.cpp:1064
#46 0x00007f2a4ad2999f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) (receiver=0x555b573bc790, event=0x7ffdd86f8400, alienWidget=0x0, nativeWidget=0x555b573bc790, buttonDown=<optimized out>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2614
#47 0x00007f2a4ad7b2f3 in QWidgetWindow::handleMouseEvent(QMouseEvent*) (this=0x555b5774df90, event=0x7ffdd86f8770) at kernel/qwidgetwindow.cpp:580
#48 0x00007f2a4ad7c37c in QWidgetWindow::event(QEvent*) (this=0x555b5774df90, event=0x7ffdd86f8770) at kernel/qwidgetwindow.cpp:300
#49 0x00007f2a4ad261a6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x555b5774df90, e=0x7ffdd86f8770) at kernel/qapplication.cpp:3632
#50 0x00007f2a4a21216a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x555b5774df90, event=0x7ffdd86f8770) at kernel/qcoreapplication.cpp:1064
#51 0x00007f2a4a682f60 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (e=0x555b57595420) at kernel/qguiapplication.cpp:2282
#52 0x00007f2a4a66e5e5 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169
#53 0x00007f2a2acecd90 in xcbSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at /usr/src/debug/qtbase/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:105
#54 0x00007f2a4511bf13 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#55 0x00007f2a451720d9 in  () at /usr/lib/libglib-2.0.so.0
#56 0x00007f2a45119485 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#57 0x00007f2a4a25d44a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x555b555cdcd0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#58 0x00007f2a4a20a44b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffdd86f8b00, flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#59 0x00007f2a4a215b97 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#60 0x00007f2a4a67e162 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1867
#61 0x00007f2a4ad2452a in QApplication::exec() () at kernel/qapplication.cpp:2824
#62 0x0000555b53831e11 in main(int, char**) (argc=<optimized out>, argv=0x7ffdd86f8bb8) at /usr/src/debug/umbrello-21.12.2/umbrello/main.cpp:235
[Inferior 1 (process 146452) detached]

Reported using DrKonqi
This report was filed against 'kde' because the product 'umbrello5' could not be located in Bugzilla. Add it to drkonqi's mappings file!
Comment 1 Oliver Kellogg 2022-02-15 05:31:20 UTC
What locale are you using?

Can you attach a C++ file for which the error happens?

In LANG=en_US.UTF-8, I tried importing following file using git master:

// file: inc.h
#include "no_such_file.h"
class C {
  int x;
};
// end of file

This did not crash.
In fact, it did not even give the error message "Could not find include file ..."
It only gave a debug message,
[D] CppImport::feedTheModel(/home/c++/inc.h): /home/tools/umbrello/build/no_such_file.h => no_such_file.h
Comment 2 Ludovic Jozeau 2022-02-15 12:20:26 UTC
Created attachment 146765 [details]
header that crashes umbrello

here is my localectl:

```
localectl
   System Locale: LANG=en_US.UTF-8
                  LC_TIME=en_GB.UTF-8
                  LC_COLLATE=fr_FR.UTF-8
                  LC_MONETARY=fr_FR.UTF-8
                  LC_ADDRESS=fr_FR.UTF-8
                  LC_MEASUREMENT=fr_FR.UTF-8
       VC Keymap: fr
      X11 Layout: fr
       X11 Model: pc105
     X11 Options: terminate:ctrl_alt_bksp
```

> Can you attach a C++ file for which the error happens?
sure
Comment 3 Oliver Kellogg 2022-02-15 12:46:44 UTC
Created attachment 146766 [details]
bug250467-FtpHppImport-savedByUmbrelloMaster-uml2.xmi

The bug is fixed in current git master with which the attached XMI file was created.
Comment 4 Ludovic Jozeau 2022-02-15 22:59:29 UTC
(In reply to Oliver Kellogg from comment #3)
> Created attachment 146766 [details]
> bug250467-FtpHppImport-savedByUmbrelloMaster-uml2.xmi
> 
> The bug is fixed in current git master with which the attached XMI file was
> created.

Oh, ok, cool, thanks, sorry for the noise then.