-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
qhash.h:790 ASSERT on multiple MIDI messages in quick succession #13940
Comments
Thank you for reporting your issue. Please understand that in order for us to be able to properly debug this, we need a backtrace. Have a look at the wiki for finding out how to create one: https://github.com/mixxxdj/mixxx/wiki/Creating%20Backtraces |
The assertion violation happens here: Probably a race condition? |
Which version of Mixxx is affected? Please create a Backtraces: Does Mixxx crash? |
I should have said, the first link in the last post is what I got from following those instructions (which fwiw could mention n yes, crashes I pulled n built before testing, |
So the race may happen around: Is this only a side effect and we are using a dangling pointer, because the m_pMapping is already down? Al least there are a couple of race conditions happening possible with m_pMapping. This means Please try to alter the code to:
|
Yes, that change seems to solve the problem, thank you! edit; what exactly is/was the problem? what part of the process is tripping up? |
I have created a PR that aims to fix the issue: |
The problem is that the crashing function is called from the controller thread, before the mapping is fully loaded. In the moment where the mapping is changed, the code starts to iterate on the old mapping, but tries to finish on the new one which fails. |
|
Does this happen with #13980 |
yup, trace |
I have added more null checks to #13980 Does that make a difference? |
still there I've figured it can be reproduced when the Mixxx window is not the active window trace https://gist.github.com/mxmilkiib/11c5b4e91faa9fb8d092a3e7978cf8d2 |
It looks like you don't use my latest branch. At least the line numbers in the backtrace do not correspond to my PR. You can receive my changes into a new branch by
|
|
Your checkout looks correct. The most interesting entry in your recent backtrace is this:
A reference count of 130 does not look reasonable. At this line, we have a return statement not a crashing call. mixxx/src/controllers/midi/midicontroller.cpp Line 308 in 3d04569
So can you try to build again and reproduce the crash? |
Ah, got it, you have probably posted the same backtrace again. At least I can see no difference. |
hmm, I copied straight from the terminal as it output (clicked and held and waited for the output and let it do the dragging n made sure it got all then middle click pasted as a second file to the same gist entry, though the link above should have been just to the new log not to both of them) thanks, I'll try again in a while |
done, trace |
Ah now it fits, thank you ... but still crashing :-(
use count =123 is obviously in correct. It starts with use count = 1, asserted here: mixxx/src/controllers/controller.h Line 121 in 24a84b9
and there are not 123 owners. Maybe |
might there be anything further I could do to help diagnose this? |
possible this could get another look? |
This is the significant part of the backtrace
|
I have added more assertions regarding |
Wait, test is failing which is good. |
I have created #14159 which may fix the issue. Please test. |
Bug Description
When my script sends multiple MIDI sysex messages in quick succession, it often makes Mixxx trigger an assert;
Version
No response
OS
No response
The text was updated successfully, but these errors were encountered: