musescore / musescore/MuseScore

4.7 crashes on opening certain 4.6 scores, with grace notes having lost link between linked staves

Open
#34,246 4 comments 0 reactions 1 assignee View on GitHub

Nobody has claimed this yet.

crash needs review regression MS4
Dominant language
C++
Stars
15.1k
Forks
3.3k
Avg merge
2d 2h
Merged PRs (30d)
91

Description

Issue type

Crash or freeze

Description with steps to reproduce
  1. Open the attached score in 4.7.x or a build from main
    All That Swing.zip
  2. Observe a crash
  3. Open it in any 4.6.x
  4. It opens cleanly
Supporting files, videos and screenshots

Log (from 4.7.4):

2026-07-17T15:18:01.803 | INFO  | main_thread     | ProjectActionsController::openProject | Try open project: url = "file:///C:/Users/Jojo/Desktop/All That Swing.mscz" , displayNameOverride = "" 
2026-07-17T15:18:01.817 | ERROR | main_thread     | TRead::readItemLink | ASSERT FAILED:    eid.isValid()    D:\a\MuseScore\MuseScore\src\engraving\rw\read460\tread.cpp:592
2026-07-17T15:18:01.817 | ERROR | main_thread     | EIDRegister::itemFromEID | ASSERT FAILED:    iter != m_eidToItem.end()    D:/a/MuseScore/MuseScore/src/engraving/infrastructure/eidregister.cpp:84
2026-07-17T15:18:01.817 | ERROR | main_thread     | TRead::readItemLink | ASSERT FAILED:    mainElement    D:\a\MuseScore\MuseScore\src\engraving\rw\read460\tread.cpp:595
2026-07-17T15:18:01.817 | ERROR | main_thread     | TRead::readItemLink | Link failed: Main linked element not found for Chord at 203/8
2026-07-17T15:18:01.817 | ERROR | main_thread     | TRead::readItemLink | ASSERT FAILED:    eid.isValid()    D:\a\MuseScore\MuseScore\src\engraving\rw\read460\tread.cpp:592
2026-07-17T15:18:01.817 | ERROR | main_thread     | EIDRegister::itemFromEID | ASSERT FAILED:    iter != m_eidToItem.end()    D:/a/MuseScore/MuseScore/src/engraving/infrastructure/eidregister.cpp:84
2026-07-17T15:18:01.817 | ERROR | main_thread     | TRead::readItemLink | ASSERT FAILED:    mainElement    D:\a\MuseScore\MuseScore\src\engraving\rw\read460\tread.cpp:595
2026-07-17T15:18:01.817 | ERROR | main_thread     | TRead::readItemLink | Link failed: Main linked element not found for Note at 203/8
2026-07-17T15:18:01.824 | ERROR | main_thread     | TRead::readItemLink | ASSERT FAILED:    eid.isValid()    D:\a\MuseScore\MuseScore\src\engraving\rw\read460\tread.cpp:592
2026-07-17T15:18:01.825 | ERROR | main_thread     | EIDRegister::itemFromEID | ASSERT FAILED:    iter != m_eidToItem.end()    D:/a/MuseScore/MuseScore/src/engraving/infrastructure/eidregister.cpp:84
2026-07-17T15:18:01.825 | ERROR | main_thread     | TRead::readItemLink | ASSERT FAILED:    mainElement    D:\a\MuseScore\MuseScore\src\engraving\rw\read460\tread.cpp:595
2026-07-17T15:18:01.825 | ERROR | main_thread     | TRead::readItemLink | Link failed: Main linked element not found for Chord at 203/8
2026-07-17T15:18:01.825 | ERROR | main_thread     | TRead::readItemLink | ASSERT FAILED:    eid.isValid()    D:\a\MuseScore\MuseScore\src\engraving\rw\read460\tread.cpp:592
2026-07-17T15:18:01.825 | ERROR | main_thread     | EIDRegister::itemFromEID | ASSERT FAILED:    iter != m_eidToItem.end()    D:/a/MuseScore/MuseScore/src/engraving/infrastructure/eidregister.cpp:84
2026-07-17T15:18:01.825 | ERROR | main_thread     | TRead::readItemLink | ASSERT FAILED:    mainElement    D:\a\MuseScore\MuseScore\src\engraving\rw\read460\tread.cpp:595
2026-07-17T15:18:01.825 | ERROR | main_thread     | TRead::readItemLink | Link failed: Main linked element not found for Note at 203/8

Stack trace (in a Debug build from main, being a Debug build it aborts much earlier):

ucrtbased.dll!00007ffaf2894805()
ucrtbased.dll!00007ffaf28949a3()
ucrtbased.dll!00007ffaf28aba9d()
ucrtbased.dll!00007ffaf28b141f()
ucrtbased.dll!00007ffaf28af378()
ucrtbased.dll!00007ffaf28b1c7f()
MuseScoreStudio5.exe!mu::engraving::read460::TRead::readItemLink(mu::engraving::EngravingItem * item, mu::engraving::XmlReader & xml, mu::engraving::read460::ReadContext & ctx) Line 596
	at C:\GH-MU\src\engraving\rw\read460\tread.cpp(596)
MuseScoreStudio5.exe!mu::engraving::read460::TRead::readItemProperties(mu::engraving::EngravingItem * item, mu::engraving::XmlReader & e, mu::engraving::read460::ReadContext & ctx) Line 557
	at C:\GH-MU\src\engraving\rw\read460\tread.cpp(557)
MuseScoreStudio5.exe!mu::engraving::read460::TRead::readProperties(mu::engraving::ChordRest * ch, mu::engraving::XmlReader & e, mu::engraving::read460::ReadContext & ctx) Line 2608
	at C:\GH-MU\src\engraving\rw\read460\tread.cpp(2608)
MuseScoreStudio5.exe!mu::engraving::read460::TRead::readProperties(mu::engraving::Chord * ch, mu::engraving::XmlReader & e, mu::engraving::read460::ReadContext & ctx) Line 2458
	at C:\GH-MU\src\engraving\rw\read460\tread.cpp(2458)
MuseScoreStudio5.exe!mu::engraving::read460::TRead::read(mu::engraving::Chord * ch, mu::engraving::XmlReader & e, mu::engraving::read460::ReadContext & ctx) Line 2440
	at C:\GH-MU\src\engraving\rw\read460\tread.cpp(2440)
MuseScoreStudio5.exe!mu::engraving::read460::MeasureRead::readVoice(mu::engraving::Measure * measure, mu::engraving::XmlReader & e, mu::engraving::read460::ReadContext & ctx, int staffIdx, bool irregular) Line 264
	at C:\GH-MU\src\engraving\rw\read460\measureread.cpp(264)
MuseScoreStudio5.exe!mu::engraving::read460::MeasureRead::readMeasure(mu::engraving::Measure * measure, mu::engraving::XmlReader & e, mu::engraving::read460::ReadContext & ctx, int staffIdx) Line 105
	at C:\GH-MU\src\engraving\rw\read460\measureread.cpp(105)
MuseScoreStudio5.exe!mu::engraving::read460::StaffRead::readStaff(mu::engraving::Score * score, mu::engraving::XmlReader & e, mu::engraving::read460::ReadContext & ctx) Line 63
	at C:\GH-MU\src\engraving\rw\read460\staffread.cpp(63)
MuseScoreStudio5.exe!mu::engraving::read460::Read460::readScoreTag(mu::engraving::Score * score, mu::engraving::XmlReader & e, mu::engraving::read460::ReadContext & ctx) Line 128
	at C:\GH-MU\src\engraving\rw\read460\read460.cpp(128)
MuseScoreStudio5.exe!mu::engraving::read460::Read460::readScoreFile(mu::engraving::Score * score, mu::engraving::XmlReader & e, mu::engraving::rw::ReadInOutData * data) Line 92
	at C:\GH-MU\src\engraving\rw\read460\read460.cpp(92)
MuseScoreStudio5.exe!mu::engraving::MscLoader::readMasterScore(mu::engraving::MasterScore * score, mu::engraving::XmlReader & e, bool ignoreVersionError, mu::engraving::rw::ReadInOutData * out, mu::engraving::compat::ReadStyleHook * styleHook) Line 256
	at C:\GH-MU\src\engraving\rw\mscloader.cpp(256)
MuseScoreStudio5.exe!mu::engraving::MscLoader::loadMscz(mu::engraving::MasterScore * masterScore, const mu::engraving::MscReader & mscReader, mu::engraving::rw::ReadInOutData * inOut, bool ignoreVersionError) Line 152
	at C:\GH-MU\src\engraving\rw\mscloader.cpp(152)
MuseScoreStudio5.exe!mu::engraving::EngravingProject::loadMscz(const mu::engraving::MscReader & msc, mu::engraving::rw::ReadInOutData * data, bool ignoreVersionError) Line 142
	at C:\GH-MU\src\engraving\engravingproject.cpp(142)
MuseScoreStudio5.exe!mu::project::NotationProject::doLoad(const muse::io::path_t & path, const mu::project::OpenParams & openParams, const std::string & format) Line 176
	at C:\GH-MU\src\project\internal\notationproject.cpp(176)
MuseScoreStudio5.exe!mu::project::NotationProject::load(const muse::io::path_t & path, const mu::project::OpenParams & openParams, const std::string & format_) Line 137
	at C:\GH-MU\src\project\internal\notationproject.cpp(137)
MuseScoreStudio5.exe!mu::project::ProjectActionsController::loadWithFallback(const std::shared_ptr<mu::project::INotationProject> & project, const muse::io::path_t & loadPath, const std::string & format) Line 333
	at C:\GH-MU\src\project\internal\projectactionscontroller.cpp(333)
MuseScoreStudio5.exe!mu::project::ProjectActionsController::loadProject(const muse::io::path_t & filePath) Line 311
	at C:\GH-MU\src\project\internal\projectactionscontroller.cpp(311)
MuseScoreStudio5.exe!mu::project::ProjectActionsController::doOpenProject(const muse::io::path_t & filePath) Line 353
	at C:\GH-MU\src\project\internal\projectactionscontroller.cpp(353)
MuseScoreStudio5.exe!mu::project::ProjectActionsController::openProject(const muse::io::path_t & givenPath, const QString & displayNameOverride) Line 294
	at C:\GH-MU\src\project\internal\projectactionscontroller.cpp(294)
MuseScoreStudio5.exe!mu::project::ProjectActionsController::openProject(const mu::project::ProjectFile & file) Line 217
	at C:\GH-MU\src\project\internal\projectactionscontroller.cpp(217)
MuseScoreStudio5.exe!mu::appshell::ApplicationActionController::onDropEvent::__l8::<lambda_1>::operator()() Line 177
	at C:\GH-MU\src\appshell\internal\applicationactioncontroller.cpp(177)
[External Code]
MuseScoreStudio5.exe!`kors::async::Async::callQueue'::`2'::Func::call(const void * __formal) Line 154
	at C:\GH-MU\muse\framework\global\thirdparty\kors_async\async\async.h(154)
MuseScoreStudio5.exe!kors::async::Async::queueData::__l11::<lambda_1>::operator()(const kors::async::CallMsg & m) Line 124
	at C:\GH-MU\muse\framework\global\thirdparty\kors_async\async\async.h(124)
[External Code]
MuseScoreStudio5.exe!kors::async::RpcPort<kors::async::CallMsg>::process() Line 116
	at C:\GH-MU\muse\framework\global\thirdparty\kors_async\async\internal\rpcqueue.h(116)
MuseScoreStudio5.exe!kors::async::QueuePool::processMessages(const std::thread::id & th) Line 186
	at C:\GH-MU\muse\framework\global\thirdparty\kors_async\async\internal\queuepool.cpp(186)
MuseScoreStudio5.exe!kors::async::processMessages(const std::thread::id & th) Line 37
	at C:\GH-MU\muse\framework\global\thirdparty\kors_async\async\processevents.h(37)
MuseScoreStudio5.exe!muse::async::processMessages(const std::thread::id & th) Line 34
	at C:\GH-MU\muse\framework\global\async\processevents.h(34)
MuseScoreStudio5.exe!muse::GlobalModule::onPreInit::__l2::<lambda_1>::operator()() Line 209
	at C:\GH-MU\muse\framework\global\globalmodule.cpp(209)
[External Code]
MuseScoreStudio5.exe!muse::TickerProvider::process() Line 96
	at C:\GH-MU\muse\framework\global\internal\tickerprovider.cpp(96)
MuseScoreStudio5.exe!muse::TickerProvider::start::__l2::<lambda_1>::operator()() Line 46
	at C:\GH-MU\muse\framework\global\internal\tickerprovider.cpp(46)
MuseScoreStudio5.exe!QtPrivate::FunctorCall<std::integer_sequence<unsigned __int64>,QtPrivate::List<>,void,`muse::TickerProvider::start'::`2'::<lambda_1>>::call::__l2::<lambda_1>::operator()() Line 116
	at C:\Qt\6.10.2\msvc2022_64\include\QtCore\qobjectdefs_impl.h(116)
MuseScoreStudio5.exe!QtPrivate::FunctorCallBase::call_internal<void,`QtPrivate::FunctorCall<std::integer_sequence<unsigned __int64>,QtPrivate::List<>,void,`muse::TickerProvider::start'::`2'::<lambda_1>>::call'::`2'::<lambda_1>>(void * * args, QtPrivate::FunctorCall<std::integer_sequence<unsigned __int64>,QtPrivate::List<>,void,`muse::TickerProvider::start'::`2'::<lambda_1>>::call::__l2::<lambda_1> && fn) Line 65
	at C:\Qt\6.10.2\msvc2022_64\include\QtCore\qobjectdefs_impl.h(65)
MuseScoreStudio5.exe!QtPrivate::FunctorCall<std::integer_sequence<unsigned __int64>,QtPrivate::List<>,void,`muse::TickerProvider::start'::`2'::<lambda_1>>::call(muse::TickerProvider::start::__l2::<lambda_1> & f, void * * arg) Line 115
	at C:\Qt\6.10.2\msvc2022_64\include\QtCore\qobjectdefs_impl.h(115)
MuseScoreStudio5.exe!QtPrivate::FunctorCallable<`muse::TickerProvider::start'::`2'::<lambda_1>>::call<QtPrivate::List<>,void>(muse::TickerProvider::start::__l2::<lambda_1> & f, void * __formal, void * * arg) Line 337
	at C:\Qt\6.10.2\msvc2022_64\include\QtCore\qobjectdefs_impl.h(337)
MuseScoreStudio5.exe!QtPrivate::QCallableObject<`muse::TickerProvider::start'::`2'::<lambda_1>,QtPrivate::List<>,void>::impl(int which, QtPrivate::QSlotObjectBase * this_, QObject * r, void * * a, bool * ret) Line 547
	at C:\Qt\6.10.2\msvc2022_64\include\QtCore\qobjectdefs_impl.h(547)
[External Code]
MuseScoreStudio5.exe!main(int argc, char * * argv) Line 217
	at C:\GH-MU\src\app\main.cpp(217)
[External Code]

Seems an EID is invalid?

In which versions of MuseScore Studio is this issue present?

4.7,* and main

Regression

Yes, this used to work in a previous version of MuseScore 4.x (namely 4.6.x)

Operating system

Windows 11

Additional context

Stems from https://musescore.org/de/node/394818

Checklist
  • This report follows the guidelines for reporting bugs and issues
  • I have verified that this issue has not been logged before, by searching the issue tracker for similar issues
  • I have attached all requested files and information to this report
  • I have attempted to identify the root problem as concisely as possible, and have used minimal reproducible examples where possible

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.