DEBUG ASSERT: "!beatPosition.isFractional()"

Bug #1935703 reported by Jörg Wartenberg
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Committed
High
Jan Holthuis

Bug Description

I build Main and it terminates very often with:

DEBUG ASSERT: "!beatPosition.isFractional()" in function class mixxx::track::io::Beat __cdecl `anonymous-namespace'::beatFromFramePos(class mixxx::audio::FramePos) at ..\..\src\track\beatmap.cpp:29

description: updated
Revision history for this message
Jan Holthuis (holthuis-jan) wrote :

0lease post a full log and explain what you were doing. The debug assertion indicates that we set fractional positions for the beatmap, but it's not clear what causes it.

Revision history for this message
Jörg Wartenberg (joerg-ubuntu) wrote :
Revision history for this message
Jörg Wartenberg (joerg-ubuntu) wrote :

I just loaded some tracks to deck 1 by double clickin the library and played them. After some tries it occurs - it's a bit random, but occurs very often.

Revision history for this message
Jan Holthuis (holthuis-jan) wrote :

Ah ok, it's related to the Serato import code. Please check if https://github.com/mixxxdj/mixxx/pull/4094 fixes the issue.

Changed in mixxx:
milestone: none → 2.4.0
assignee: nobody → Jan Holthuis (holthuis-jan)
status: New → In Progress
importance: Undecided → High
Revision history for this message
Jörg Wartenberg (joerg-ubuntu) wrote :

This still happens with 4094. See attached log.

Revision history for this message
Jörg Wartenberg (joerg-ubuntu) wrote :

Callstack of such a case:
  [Inline Frame] mixxx.exe!mixxx::audio::FramePos::isValid() Line 83 C++
  [Inline Frame] mixxx.exe!mixxx::audio::FramePos::value() Line 92 C++
  [Inline Frame] mixxx.exe!mixxx::audio::FramePos::isFractional() Line 103 C++
> mixxx.exe!`anonymous namespace'::beatFromFramePos(mixxx::audio::FramePos beatPosition) Line 29 C++
  mixxx.exe!mixxx::BeatMap::findPrevNextBeats(mixxx::audio::FramePos position, mixxx::audio::FramePos * prevBeatPosition=0x000000000afff170, mixxx::audio::FramePos * nextBeatPosition=0x000000000afff178, bool snapToNearBeats=true) Line 404 C++
  mixxx.exe!QuantizeControl::lookupBeatPositions(double dCurrentSample) Line 87 C++
  mixxx.exe!QuantizeControl::playPosChanged(double dNewPlaypos) Line 76 C++
  mixxx.exe!EngineBuffer::notifyTrackLoaded(std::shared_ptr<Track> pNewTrack={...}, std::shared_ptr<Track> pOldTrack={...}) Line 625 C++
  mixxx.exe!EngineBuffer::slotTrackLoaded(std::shared_ptr<Track> pTrack={...}, int iTrackSampleRate=0x0000ac44, int iTrackNumSamples=0x02315700) Line 567 C++
  [Inline Frame] mixxx.exe!QtPrivate::FunctorCall<QtPrivate::IndexesList<0,1,2>,QtPrivate::List<std::shared_ptr<Track>,int,int>,void,void (__cdecl EngineBuffer::*)(std::shared_ptr<Track>,int,int)>::call(void(EngineBuffer::*)(std::shared_ptr<Track>, int, int)) Line 152 C++
  [Inline Frame] mixxx.exe!QtPrivate::FunctionPointer<void (__cdecl EngineBuffer::*)(std::shared_ptr<Track>,int,int)>::call(void(EngineBuffer::*)(std::shared_ptr<Track>, int, int) f, EngineBuffer *) Line 185 C++
  mixxx.exe!QtPrivate::QSlotObject<void (__cdecl EngineBuffer::*)(std::shared_ptr<Track>,int,int),QtPrivate::List<std::shared_ptr<Track>,int,int>,void>::impl(int which, QtPrivate::QSlotObjectBase * this_, QObject * r, void * * a, bool * ret=0x0000000000000000) Line 425 C++
  Qt5Core.dll!000007fec361d10a() Unknown
  mixxx.exe!CachingReader::trackLoaded(std::shared_ptr<Track> _t1={...}, int _t2=0x0000ac44, int _t3=0x02315700) Line 184 C++
  [Inline Frame] mixxx.exe!QtPrivate::FunctorCall<QtPrivate::IndexesList<0,1,2>,QtPrivate::List<std::shared_ptr<Track>,int,int>,void,void (__cdecl EngineBuffer::*)(std::shared_ptr<Track>,int,int)>::call(void(EngineBuffer::*)(std::shared_ptr<Track>, int, int)) Line 152 C++
  [Inline Frame] mixxx.exe!QtPrivate::FunctionPointer<void (__cdecl EngineBuffer::*)(std::shared_ptr<Track>,int,int)>::call(void(EngineBuffer::*)(std::shared_ptr<Track>, int, int) f, EngineBuffer *) Line 185 C++
  mixxx.exe!QtPrivate::QSlotObject<void (__cdecl EngineBuffer::*)(std::shared_ptr<Track>,int,int),QtPrivate::List<std::shared_ptr<Track>,int,int>,void>::impl(int which, QtPrivate::QSlotObjectBase * this_, QObject * r, void * * a, bool * ret=0x0000000000000000) Line 425 C++
  Qt5Core.dll!000007fec361d10a() Unknown
  mixxx.exe!CachingReaderWorker::trackLoaded(std::shared_ptr<Track> _t1={...}, int _t2=0x0000ac44, int _t3=0x02315700) Line 185 C++
  mixxx.exe!CachingReaderWorker::loadTrack(const std::shared_ptr<Track> & pTrack={...}) Line 205 C++
  mixxx.exe!CachingReaderWorker::run() Line 104 C++
  Qt5Core.dll!000007fec3465fa1() Unknown
  kernel32.dll!000000007754556d() Unknown
  ntdll.dll!00000000777a372d() Unknown

Revision history for this message
Jörg Wartenberg (joerg-ubuntu) wrote :

This seems to be the correct callstack:
> mixxx.exe!`anonymous namespace'::beatFromFramePos(mixxx::audio::FramePos beatPosition) Line 29 C++
  mixxx.exe!mixxx::BeatMap::findNthBeat(mixxx::audio::FramePos position, int n=0x00000001) Line 318 C++
  mixxx.exe!mixxx::BeatMap::findNextBeat(mixxx::audio::FramePos position) Line 284 C++
  [Inline Frame] mixxx.exe!mixxx::Beats::firstBeat() Line 104 C++
  mixxx.exe!AnalyzerBeats::shouldAnalyze(std::shared_ptr<Track> pTrack={...}) Line 163 C++
  mixxx.exe!AnalyzerBeats::initialize(std::shared_ptr<Track> pTrack={...}, mixxx::audio::SampleRate sampleRate={...}, int totalSamples) Line 101 C++
  [Inline Frame] mixxx.exe!AnalyzerWithState::initialize(std::shared_ptr<Track>) Line 74 C++
  mixxx.exe!AnalyzerThread::doRun() Line 146 C++
  mixxx.exe!WorkerThread::run() Line 74 C++
  Qt5Core.dll!000007fec3355fa1() Unknown
  kernel32.dll!000000007754556d() Unknown
  ntdll.dll!00000000777a372d() Unknown

Revision history for this message
Jan Holthuis (holthuis-jan) wrote :
Revision history for this message
Daniel Schürmann (daschuer) wrote :

The pull request is merged now. Please verify.

Changed in mixxx:
status: In Progress → Fix Committed
Revision history for this message
Jörg Wartenberg (joerg-ubuntu) wrote :

Just tesed with latest Main. The Assert no longer occurs. Thank you!

Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/10468

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.