I think I found one fix for this. It probably won't solve it completely but does fix some of the cases.
in TrackDAO::deleteTrack():
// Save dirty tracks.
pTrack->save();
should be
// Save dirty tracks.
if (pTrack->isDirty())
pTrack->save();
otherwise it will try to save tracks that aren't dirty and will trigger the assertion. This causes problems on exit because tracks try to save themselves after the DB is already closed
I think I found one fix for this. It probably won't solve it completely but does fix some of the cases.
in TrackDAO: :deleteTrack( ):
// Save dirty tracks.
pTrack->save();
should be
// Save dirty tracks.
if (pTrack->isDirty())
pTrack->save();
otherwise it will try to save tracks that aren't dirty and will trigger the assertion. This causes problems on exit because tracks try to save themselves after the DB is already closed