Bug report #18530

Removing project item from Welcome screen crashes QGIS

Added by Richard Duivenvoorde over 6 years ago. Updated over 6 years ago.

Status:Closed
Priority:Normal
Assignee:-
Category:Project Loading/Saving
Affected QGIS version:3.1(master) Regression?:No
Operating System: Easy fix?:No
Pull Request or Patch supplied:No Resolution:fixed/implemented
Crashes QGIS or corrupts data:Yes Copied to github as #:26418

Description

Having a very recent master version of QGIS: 4c4e8ac18a

Only having one (valid) project in the Recent project welcome screen.

Removing that one project (immidiatly after opening QGIS) QGIS crashes.

Looks like #18118

But not sure if it is the same.

This is the stacktrace:

../src/app/qgisapp.cpp: 1322: (QgisApp) [0ms]  - qgisapp/startup/New project - 0.129
../src/core/qgsscalecalculator.cpp: 129: (calculateGeographicDistance) [1ms] Distance across map extent (m): 774097
../src/core/qgsscalecalculator.cpp: 86: (calculate) [0ms] scale = 2.98543e+7 conversionFactor = 39.3701
../src/core/geometry/qgsrectangle.cpp: 350: (toString) [0ms] Extents : -1.0000000000000000,-1.0000000000000000 : 1.0000000000000000,1.0000000000000000
../src/core/qgscoordinatetransform_p.cpp: 210: (initialize) [958ms] Source/Dest CRS not equal, shortcircuit is not set.
Fatal: ASSERT failure in QList<T>::at: "index out of range", file /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h, line 541
QGIS died on signal -1[New LWP 7192]
[New LWP 7193]
[New LWP 7201]
[New LWP 7202]
[New LWP 7255]
[New LWP 7432]
[New LWP 7461]
[New LWP 7618]
[New LWP 7746]
[New LWP 7747]
[New LWP 7749]
[New LWP 7750]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f9928166122 in __GI___waitpid (pid=7847, stat_loc=0x7ffc13143ee4, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:30
30    ../sysdeps/unix/sysv/linux/waitpid.c: No such file or directory.
[Current thread is 1 (Thread 0x7f9936a95380 (LWP 7174))]
#0  0x00007f9928166122 in __GI___waitpid (pid=7847, stat_loc=0x7ffc13143ee4, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:30
        resultvar = 18446744073709551104
        sc_cancel_oldtype = 0
#1  0x000055c515210885 in qgisCrash (signal=-1) at ../src/app/main.cpp:326
        status = 0
        pidstr = "--pid=7174\000\066\231\177\000\000\005\000\000\000\000\000\000\000\b\000\000\000\000\000\000" 
        gdbpid = 7847
        exename = "/home/richard/bin/qgis/master/debug/bin/qgis\000\177\000\000\360=\024\023\374\177\000\000\360>\024\023\374\177\000\000\001\000\000\000\000\000\000\000\312$\016)\231\177\000\000\006\000\000\000\000\000\000\000\000{yQ\242̠K\320d6\030\305U\000\000\340S\341\026\305U\000\000@>\024\023\374\177\000\000\000{yQ\242̠K0\267\343\026\305U\000\000Ѕ\001\027\305U\000\000\340\206\001\027\305U\000\000\000{yQ\242̠K\000\000\000\000\000\000\000\000\340>B\035\305U\000\000`@B\035\305U\000\000@lE(\231\177\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000"...
        len = 44
#2  0x000055c515210b2c in myMessageOutput (type=QtFatalMsg, msg=0x55c51d423f08 "ASSERT failure in QList<T>::at: \"index out of range\", file /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h, line 541") at ../src/app/main.cpp:390
No locals.
#3  0x00007f992906a5da in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#4  0x00007f992906c0ae in QMessageLogger::fatal(char const*, ...) const () from /lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#5  0x00007f99290675fa in qt_assert_x(char const*, char const*, char const*, int) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#6  0x00007f9935c23e55 in QList<QgsWelcomePageItemsModel::RecentProjectData>::at (this=0x55c517513820, i=0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:541
No locals.
#7  0x00007f9935de3a13 in QgsWelcomePageItemsModel::flags (this=0x55c517513810, index=...) at ../src/app/qgswelcomepageitemsmodel.cpp:206
        flags = {i = 161}
        projectData = @0x7ffc13144150: {path = {static null = {<No data fields>}, d = 0x0}, title = {static null = {<No data fields>}, d = 0x0}, previewImagePath = {static null = {<No data fields>}, d = 0x55c517513810}, crs = {static null = {<No data fields>}, d = 0x4ba0cca251797b00}, pin = false, checkedExists = 72, exists = 81}
#8  0x00007f992e514553 in QAbstractItemView::focusInEvent(QFocusEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#9  0x00007f992e3004ff in QWidget::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#10 0x00007f992e3a0b9e in QFrame::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#11 0x00007f992e3a9bc3 in QAbstractScrollArea::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#12 0x00007f992e513dcb in QAbstractItemView::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#13 0x00007f992e2c163c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#14 0x00007f992e2c8f04 in QApplication::notify(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#15 0x00007f9932b3f0d5 in QgsApplication::notify (this=0x7ffc13145010, receiver=0x55c517514800, event=0x7ffc13144640) at ../src/core/qgsapplication.cpp:333
        done = true
        __FUNCTION__ = "notify" 
#16 0x00007f992925f258 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#17 0x00007f992e2c6abe in QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#18 0x00007f992e2fa4ef in QWidget::setFocus(Qt::FocusReason) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#19 0x00007f992e2c6f4b in QApplication::setActiveWindow(QWidget*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#20 0x00007f992e2c7043 in QApplicationPrivate::notifyActiveWindowChange(QWindow*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
No symbol table info available.
#21 0x00007f9929b4daf5 in QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent*) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5
No symbol table info available.
#22 0x00007f9929b4dd4d in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5
No symbol table info available.
#23 0x00007f9929b25cab in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5
No symbol table info available.
#24 0x00007f990f3face0 in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
No symbol table info available.
#25 0x00007f99237b8287 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#26 0x00007f99237b84c0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#27 0x00007f99237b854c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#28 0x00007f99292b80ef in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#29 0x00007f992925d2aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#30 0x00007f9929266214 in QCoreApplication::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#31 0x000055c5152169f4 in main (argc=1, argv=0x7ffc13146038) at ../src/app/main.cpp:1436
        profile = 0x55c516e67690
        presetStyle = {static null = {<No data fields>}, d = 0x55c517039e00}
        globalSettings = 0x55c516f631b0
        rootProfileFolder = {static null = {<No data fields>}, d = 0x55c516f3a770}
        myLocaleOverrideFlag = false
        qgistor = <incomplete type>
        w = 600
        mySplashPath = {static null = {<No data fields>}, d = 0x7f993323db40 <QgsApplication::splashPath()::{lambda()#1}::operator()() const::qstring_literal>}
        h = 300
        mypSplash = 0x55c5172d32a0
        qgis = 0x55c517199b00
        retval = 1088
        manager = {<QObject> = {<No data fields>}, static staticMetaObject = {d = {superdata = 0x7f99296b0bc0 <QObject::staticMetaObject>, stringdata = 0x7f99333399c0 <qt_meta_stringdata_QgsUserProfileManager>, data = 0x7f9933339a40 <qt_meta_data_QgsUserProfileManager>, static_metacall = 0x7f99331d6c42 <QgsUserProfileManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, mWatchProfiles = false, mWatcher = std::unique_ptr<QFileSystemWatcher> = {get() = 0x0}, mRootProfilePath = {static null = {<No data fields>}, d = 0x55c516f3a770}, mUserProfile = std::unique_ptr<QgsUserProfile> = {get() = 0x0}, mSettings = std::unique_ptr<QSettings> = {get() = 0x55c516f631b0}}
        profileFolder = {static null = {<No data fields>}, d = 0x55c516ee3a70}
        settings = {<QObject> = {<No data fields>}, static staticMetaObject = {d = {superdata = 0x7f99296b0bc0 <QObject::staticMetaObject>, stringdata = 0x7f993332b7e0 <qt_meta_stringdata_QgsSettings>, data = 0x7f993332b820 <qt_meta_data_QgsSettings>, static_metacall = 0x7f99331c376a <QgsSettings::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static sGlobalSettingsPath = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}, mUserSettings = 0x55c516e67690, mGlobalSettings = 0x0, mUsingGlobalArray = false}
        mySettings = {<QObject> = {<No data fields>}, static staticMetaObject = {d = {superdata = 0x7f99296b0bc0 <QObject::staticMetaObject>, stringdata = 0x7f993332b7e0 <qt_meta_stringdata_QgsSettings>, data = 0x7f993332b820 <qt_meta_data_QgsSettings>, static_metacall = 0x7f99331c376a <QgsSettings::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static sGlobalSettingsPath = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}, mUserSettings = 0x55c516f89cf0, mGlobalSettings = 0x0, mUsingGlobalArray = false}
        systemEnvVars = {d = 0x55c516f75b90}
        activeStyleName = {static null = {<No data fields>}, d = 0x55c5171a8cc0}
        i18nPath = {static null = {<No data fields>}, d = 0x55c5171fc790}
        myUserLocale = {static null = {<No data fields>}, d = 0x55c517301890}
        qttor = <incomplete type>
        customizationsettings = 0x55c516fa9900
        useCustomVars = false
        myPixmap = <incomplete type>
        __FUNCTION__ = "main" 
        mySnapshotFileName = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}
        configLocalStorageLocation = {static null = {<No data fields>}, d = 0x55c516f5f000}
        profileName = {static null = {<No data fields>}, d = 0x55c516f5f150}
        mySnapshotWidth = 800
        mySnapshotHeight = 600
        myHideSplash = false
        mySettingsMigrationForce = false
        mySkipVersionCheck = false
        myRestoreDefaultWindowState = false
        myRestorePlugins = true
        myCustomization = true
        dxfOutputFile = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}
        dxfSymbologyMode = QgsDxfExport::SymbolLayerSymbology
        dxfScale = 50000
        dxfEncoding = {static null = {<No data fields>}, d = 0x55c51521eb40 <main::{lambda()#1}::operator()() const::qstring_literal>}
        dxfMapTheme = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}
        dxfExtent = {mXmin = 0, mYmin = 0, mXmax = 0, mYmax = 0}
        myInitialExtent = {static null = {<No data fields>}, d = 0x55c51521eb80 <main::{lambda()#2}::operator()() const::qstring_literal>}
        myTranslationCode = {static null = {<No data fields>}, d = 0x55c5172d4e30}
        configpath = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}
        authdbdirectory = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}
        pythonfile = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}
        customizationfile = {static null = {<No data fields>}, d = 0x55c517045000}
        globalsettingsfile = {static null = {<No data fields>}, d = 0x7f992930b9e0 <QArrayData::shared_null>}
        args = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x55c516e18800}, d = 0x55c516e18800}}, <No data fields>}
        myUseGuiFlag = true
        myApp = {<QApplication> = {<No data fields>}, static staticMetaObject = {d = {superdata = 0x7f992e984040 <QApplication::staticMetaObject>, stringdata = 0x7f99333183a0 <qt_meta_stringdata_QgsApplication>, data = 0x7f9933318500 <qt_meta_data_QgsApplication>, static_metacall = 0x7f99331a93f0 <QgsApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static QGIS_ORGANIZATION_NAME = 0x7f993323cea8 "QGIS", static QGIS_ORGANIZATION_DOMAIN = 0x7f993323cead "qgis.org", static QGIS_APPLICATION_NAME = 0x7f993323ceb6 "QGIS3", static mFileOpenEventReceiver30100 = 0x55c517199b00, static mFileOpenEventList30100 = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7f992930dac0 <QListData::shared_null>}, d = 0x7f992930dac0 <QListData::shared_null>}}, <No data fields>}, static mProfilePath30100 = {static null = {<No data fields>}, d = 0x55c516ee3a70}, static mUIThemeName30100 = {static null = <same as static member of an already seen type>, d = 0x7f992930b9e0 <QArrayData::shared_null>}, static mPrefixPath30100 = {static null = <same as static member of an already seen type>, d = 0x55c516fcdf70}, static mPluginPath30100 = {static null = <same as static member of an already seen type>, d = 0x55c516f97150}, static mPkgDataPath30100 = {static null = <same as static member of an already seen type>, d = 0x55c516ff6b50}, static mLibraryPath30100 = {static null = <same as static member of an already seen type>, d = 0x55c516f69c20}, static mLibexecPath30100 = {static null = <same as static member of an already seen type>, d = 0x55c516f0d5a0}, static mThemeName30100 = {static null = <same as static member of an already seen type>, d = 0x7f993323d6e0 <QgsApplication::setUITheme(QString const&)::{lambda()#2}::operator()() const::qstring_literal>}, static mDefaultSvgPaths30100 = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x55c516fb0f60}, d = 0x55c516fb0f60}}, <No data fields>}, static mSystemEnvVars30100 = {d = 0x55c516f75b90}, static mConfigPath30100 = {static null = {<No data fields>}, d = 0x55c516ff0a50}, static mInitialized30100 = true, static mRunningFromBuildDir30100 = false, static mBuildSourcePath30100 = {static null = <same as static member of an already seen type>, d = 0x7f992930b9e0 <QArrayData::shared_null>}, static mBuildOutputPath30100 = {static null = <same as static member of an already seen type>, d = 0x7f992930b9e0 <QArrayData::shared_null>}, static mGdalSkipList30100 = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7f992930dac0 <QListData::shared_null>}, d = 0x7f992930dac0 <QListData::shared_null>}}, <No data fields>}, static mMaxThreads30100 = -1, static mAuthDbDirPath30100 = {static null = {<No data fields>}, d = 0x55c516ff0a50}, static sUserName = {static null = <same as static member of an already seen type>, d = 0x55c517707700}, static sUserFullName = {static null = <same as static member of an already seen type>, d = 0x55c516f76ad0}, static sPlatformName = {static null = <same as static member of an already seen type>, d = 0x55c516e664f0}, mIconCache = {d = 0x55c51753da50}, mCursorCache = {d = 0x55c517522a10}, mDataItemProviderRegistry = 0x55c516eeb110, mAuthManager = 0x55c5172513d0, mApplicationMembers = 0x55c516ed06d0, static sApplicationMembers = 0x0}
gdb returned 0

Associated revisions

Revision af6ad230
Added by Salvatore Larosa over 6 years ago

Fixes #18530: Removing project item from Welcome screen crashes QGIS

Revision 2220a6ea
Added by Salvatore Larosa over 6 years ago

Merge pull request #6667 from slarosa/fix_18530

Fixes #18530: Removing project item from Welcome screen crashes QGIS

History

#1 Updated by Richard Duivenvoorde over 6 years ago

  • Crashes QGIS or corrupts data changed from No to Yes

Easy reproducible even in fresh profile:

- create fresh profile
- open osm layer
- make this (unsaved) project your default project (Settings/general)
- now save the project
- close qgis
- open qgis
- seeing the osm project as only project, delete it from the list in welcome page
- not sure if needed, but move your mouse of canvas/layerlist/browser

#2 Updated by Salvatore Larosa over 6 years ago

  • Status changed from Open to In Progress

I can confirm it. I am going to submit a Pull request

#3 Updated by Salvatore Larosa over 6 years ago

  • % Done changed from 0 to 100
  • Status changed from In Progress to Closed

#4 Updated by Salvatore Larosa over 6 years ago

  • Resolution set to fixed/implemented

#5 Updated by Jürgen Fischer over 6 years ago

  • Description updated (diff)

Also available in: Atom PDF