possible memory corruption with "update metadata" active
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
In Progress
|
Critical
|
Unassigned | ||
1.10 |
Fix Released
|
Critical
|
RAFFI TEA | ||
1.9 |
Fix Released
|
Critical
|
RAFFI TEA |
Bug Description
soundsourcemp3 uses QFile.map for fast access to an mp3 file for playback. This might be causing a problem when paired with the UI option to update track metadata. The doc for mmap says:
"If the size of the mapped file changes after the call to mmap() as a result of some other operation on the mapped file, the effect of references to portions of the mapped region that correspond to added or removed portions of the file is unspecified."
I have had (hard-to-reproduce) experiences where a track's audio has suddenly gotten corrupted, with squawks and bleeps of bad data playing back (total party-killer). Scrubbing has revealed that the bad sound is in the track, not the playback. (I can scratch the awful noises). Reloading the track into the player fixes the problem. I suspect that this is a result of the audiotagger writing to the file while it's still being mapped.
This is a tough one to fix because trackdao doesn't have an easy way to know which tracks are loaded. For now I did this by adding a flag to the trackinfoobject that is set if it is loaded, but a better way would be some function that trackdao could call to ask the players if this track is loaded. This could be implemented in many various hacky ways, so a good way needs to be chosen.
Related branches
Changed in mixxx: | |
importance: | Undecided → High |
Changed in mixxx: | |
status: | New → Confirmed |
Changed in mixxx: | |
status: | Fix Committed → Fix Released |
Changed in mixxx: | |
assignee: | RAFFI TEA (raffitea) → Daniel Schürmann (daschuer) |
status: | Fix Released → In Progress |
importance: | Critical → Undecided |
Changed in mixxx: | |
importance: | Undecided → Critical |
Changed in mixxx: | |
assignee: | nobody → Uwe Klotz (uklotzde) |
tags: | added: metadata |
Anything capable of stopping hte party, however, rare, is Critical :)