LMMS / lmms

Cross-platform music production software
https://lmms.io
GNU General Public License v2.0
8.09k stars 1.01k forks source link

Segfault when deleting a clip in the song editor while playing #6935

Open M4rotte opened 1 year ago

M4rotte commented 1 year ago

That’s may be the segfault I encountered the most since I use/test LMMS’s main branch (since about 8 or 10 years, at least): a segfault which occurs when deleting a clip in the song editor. It mostly happens while playing but it’s triggered when not playing in some very rare cases.

I don’t know if an issue has been already open for this (so many segfaults, hard to search for a particular one ! ^^) so this one issue. Feel free to close if duplicated.

This bug’sbeen here for years, it is the reason why I got use to Ctrl+s after nearly every actions I make in LMMS. I told myself: do not fucking delete clipŝ while playing, but well, I can’t resist to do so from time to time… It works most of the time! Maybe this backtrace will help :

#0  0x00007ffff60a794d in __dynamic_cast () at /lib/x86_64-linux-gnu/libstdc++.so.6
#1  0x0000555555897f98 in lmms::TrackContainer::automatedValuesFromTracks(std::vector<lmms::Track*, std::allocator<lmms::Track*> > const&, lmms::TimePos, int) (tracks=std::vector of length 53, capacity 53 = {...}, time=..., clipNum=-1)
    at /usr/local/src/lmms/src/core/TrackContainer.cpp:295
        p = 0x0
        clip = 0x7ffeec1c1d60
        __for_range = std::vector of length 604, capacity 1024 = {0x7fff3b421700, 0x7fff3b421980, 0x7fff3b421c00, 0x7fff3b421e80, 0x7ffff29f1700, 0x7ffff29f1480, 0x7ffff29f1200, 0x7ffff29f0080, 0x7ffff29f0300, 0x7ffff29f0580, 0x7fff3b132bd0, 0x7ffeec97b700, 0x7ffeec97b980, 0x7ffeec97bc00, 0x7ffeec97be80, 0x7ffeec9a1980, 0x7ffeec9a1c00, 0x7ffeec9a1e80, 0x7ffeec9a2100, 0x7ffeec1b6200, 0x7ffeec1b6480, 0x7ffeec1b6700, 0x7ffeec1b6e80, 0x7ffeec1bd780, 0x7ffeec1bdf00, 0x7ffeec1be180, 0x7ffeec1be400, 0x7ffeec1be680, 0x7ffeec1bee00, 0x7ffeec1bf080, 0x7ffeec1d5720, 0x7ffeec1d5930, 0x7ffeec1c7820, 0x7ffeec1d50f0, 0x7ffeec1d5300, 0x7ffeec1d5510, 0x7ffeec1beb80, 0x7fff3b135300, 0x7ffeec97c100, 0x7fff3b121d60, 0x7ffeec1cf3e0, 0x7fff3b135510, 0x7fff3b121f70, 0x7ffeec9b7820, 0x7ffeec9ac600, 0x7ffeec1b2b00, 0x7ffeec1b4b80, 0x7ffeec1cf5f0, 0x7fff3b135720, 0x7fff3b1229c0, 0x7ffeec1cf800, 0x7fff3b135930, 0x7fff3b122bd0, 0x7fff3b13fa10, 0x7fff3b122180, 0x7fff3b12be40, 0x7ffeec9a2380, 0x7ffeec9a2880, 0x7ffeec9a2d80, 0x7ffeec9a3280, 0x7ffeec1c7c40, 0x7ffeec1b7380, 0x7ffeec1cfa10, 0x7fff3b13dd30, 0x7ffeec97c380, 0x7fff3b12c050, 0x7fff3b131d60, 0x7fff3b135b40, 0x7ffeec9a1480, 0x7fff3b122390, 0x7ffeec9b7a30, 0x7ffeec9ac880, 0x7ffeec1b2d80, 0x7ffeec1b4e00, 0x7ffeec1cfc20, 0x7fff3b135d50, 0x7fff3b12c260, 0x7fff3b1225a0, 0x7ffeec1c7e50, 0x7fff3b12c470, 0x7ffeec9a8f00, 0x7ffeec9bd700, 0x7fff3b135f60, 0x7ffeec1d0080, 0x7ffeec9a1700, 0x7fff3b1227b0, 0x7fff3b12c680, 0x7fff3b13e780, 0x7fff3b13df40, 0x7fff3b12c890, 0x7ffeec9a3500, 0x7ffeec9b4ac0, 0x7ffeec9aa080, 0x7ffeec1b0580, 0x7ffeec1b5080, 0x7ffeec9bd910, 0x7ffeec1bb700, 0x7fff3b1306b0, 0x7fff3b136170, 0x7ffeec97c600, 0x7fff3b122de0, 0x7ffeec9be570, 0x7ffeec1b6c00, 0x7ffeec1c9920, 0x7ffeec1bb980, 0x7ffeec1d0290, 0x7ffeec97c880, 0x7ffeec9bdb20, 0x7ffeec1b6980, 0x7ffeec1b3f00, 0x7fff3b136380, 0x7ffeec97cb00, 0x7fff3b122ff0, 0x7fff3b12caa0, 0x7ffeec1b7600, 0x7fff3b120290, 0x7ffeec9a3780, 0x7ffeec1d04a0, 0x7ffeec9a3a00, 0x7fff3b1308c0, 0x7fff3b136590, 0x7ffeec97cd80, 0x7fff3b123200, 0x7fff3b12ccb0, 0x7ffeec9a3c80, 0x7ffeec9bc680, 0x7ffeec9be780, 0x7ffeec1cabb0, 0x7ffeec1b9400, 0x7ffeec9b4ee0, 0x7ffeec9aa580, 0x7ffeec1b0a80, 0x7fff3b12cec0, 0x7ffeec9af580, 0x7ffeec1d06b0, 0x7fff3b123410, 0x7fff3b1367a0, 0x7ffeec9be990, 0x7fff3b13fc20, 0x7fff3b12d0d0, 0x7ffeec1b4180, 0x7ffeec9bc890, 0x7ffeec1bbc00, 0x7fff3b130ad0, 0x7fff3b1369b0, 0x7fff3b120080, 0x7ffeec97d000, 0x7fff3b123620, 0x7fff3b12d2e0, 0x7ffeec9a3f00, 0x7ffeec9beba0, 0x7ffeec1d08c0, 0x7ffeec1b4400, 0x7fff3b123830, 0x7fff3b12d4f0, 0x7fff3b136bc0, 0x7ffeec9b5720, 0x7ffeec9af800, 0x7ffeec1b4680, 0x7ffeec9bedb0, 0x7ffeec9bcaa0, 0x7ffeec1d0ad0, 0x7ffeec9bccb0, 0x7fff3b123a40, 0x7fff3b12d700, 0x7ffeec9a4180, 0x7ffeec9b5930, 0x7ffeec9aaa80, 0x7ffeec1b0f80, 0x7fff3b133830, 0x7fff3b136dd0, 0x7fff3b12d910, 0x7ffeec9befc0, 0x7fff3b123c50, 0x7ffeec9bcec0, 0x7ffeec1d0ce0, 0x7fff3b13e990, 0x7ffeec9b4490, 0x7ffeec9a9900, 0x7ffeec9afd00, 0x7ffeec1b5300, 0x7fff3b136fe0, 0x7fff3b123e60, 0x7ffeec9bf1d0, 0x7ffeec9a4400, 0x7ffeec9b8690--Type <RET> for more, q to quit, c to co--Type <RET> for more, q to quit, c to continue without paging--
12db20, 0x7ffeec1d0ef0, 0x7ffeec9bf3e0, 0x7fff3b131f70, 0x7fff3b132de0, 0x7fff3b124280, 0x7fff3b12dd30, 0x7fff3b137400...}
        __for_begin = 0x7ffeec1c1d60
        __for_end = 0x7fff3b121310
        clips = std::vector of length 604, capacity 1024 = {0x7fff3b421700, 0x7fff3b421980, 0x7fff3b421c00, 0x7fff3b421e80, 0x7ffff29f1700, 0x7ffff29f1480, 0x7ffff29f1200, 0x7ffff29f0080, 0x7ffff29f0300, 0x7ffff29f0580, 0x7fff3b132bd0, 0x7ffeec97b700, 0x7ffeec97b980, 0x7ffeec97bc00, 0x7ffeec97be80, 0x7ffeec9a1980, 0x7ffeec9a1c00, 0x7ffeec9a1e80, 0x7ffeec9a2100, 0x7ffeec1b6200, 0x7ffeec1b6480, 0x7ffeec1b6700, 0x7ffeec1b6e80, 0x7ffeec1bd780, 0x7ffeec1bdf00, 0x7ffeec1be180, 0x7ffeec1be400, 0x7ffeec1be680, 0x7ffeec1bee00, 0x7ffeec1bf080, 0x7ffeec1d5720, 0x7ffeec1d5930, 0x7ffeec1c7820, 0x7ffeec1d50f0, 0x7ffeec1d5300, 0x7ffeec1d5510, 0x7ffeec1beb80, 0x7fff3b135300, 0x7ffeec97c100, 0x7fff3b121d60, 0x7ffeec1cf3e0, 0x7fff3b135510, 0x7fff3b121f70, 0x7ffeec9b7820, 0x7ffeec9ac600, 0x7ffeec1b2b00, 0x7ffeec1b4b80, 0x7ffeec1cf5f0, 0x7fff3b135720, 0x7fff3b1229c0, 0x7ffeec1cf800, 0x7fff3b135930, 0x7fff3b122bd0, 0x7fff3b13fa10, 0x7fff3b122180, 0x7fff3b12be40, 0x7ffeec9a2380, 0x7ffeec9a2880, 0x7ffeec9a2d80, 0x7ffeec9a3280, 0x7ffeec1c7c40, 0x7ffeec1b7380, 0x7ffeec1cfa10, 0x7fff3b13dd30, 0x7ffeec97c380, 0x7fff3b12c050, 0x7fff3b131d60, 0x7fff3b135b40, 0x7ffeec9a1480, 0x7fff3b122390, 0x7ffeec9b7a30, 0x7ffeec9ac880, 0x7ffeec1b2d80, 0x7ffeec1b4e00, 0x7ffeec1cfc20, 0x7fff3b135d50, 0x7fff3b12c260, 0x7fff3b1225a0, 0x7ffeec1c7e50, 0x7fff3b12c470, 0x7ffeec9a8f00, 0x7ffeec9bd700, 0x7fff3b135f60, 0x7ffeec1d0080, 0x7ffeec9a1700, 0x7fff3b1227b0, 0x7fff3b12c680, 0x7fff3b13e780, 0x7fff3b13df40, 0x7fff3b12c890, 0x7ffeec9a3500, 0x7ffeec9b4ac0, 0x7ffeec9aa080, 0x7ffeec1b0580, 0x7ffeec1b5080, 0x7ffeec9bd910, 0x7ffeec1bb700, 0x7fff3b1306b0, 0x7fff3b136170, 0x7ffeec97c600, 0x7fff3b122de0, 0x7ffeec9be570, 0x7ffeec1b6c00, 0x7ffeec1c9920, 0x7ffeec1bb980, 0x7ffeec1d0290, 0x7ffeec97c880, 0x7ffeec9bdb20, 0x7ffeec1b6980, 0x7ffeec1b3f00, 0x7fff3b136380, 0x7ffeec97cb00, 0x7fff3b122ff0, 0x7fff3b12caa0, 0x7ffeec1b7600, 0x7fff3b120290, 0x7ffeec9a3780, 0x7ffeec1d04a0, 0x7ffeec9a3a00, 0x7fff3b1308c0, 0x7fff3b136590, 0x7ffeec97cd80, 0x7fff3b123200, 0x7fff3b12ccb0, 0x7ffeec9a3c80, 0x7ffeec9bc680, 0x7ffeec9be780, 0x7ffeec1cabb0, 0x7ffeec1b9400, 0x7ffeec9b4ee0, 0x7ffeec9aa580, 0x7ffeec1b0a80, 0x7fff3b12cec0, 0x7ffeec9af580, 0x7ffeec1d06b0, 0x7fff3b123410, 0x7fff3b1367a0, 0x7ffeec9be990, 0x7fff3b13fc20, 0x7fff3b12d0d0, 0x7ffeec1b4180, 0x7ffeec9bc890, 0x7ffeec1bbc00, 0x7fff3b130ad0, 0x7fff3b1369b0, 0x7fff3b120080, 0x7ffeec97d000, 0x7fff3b123620, 0x7fff3b12d2e0, 0x7ffeec9a3f00, 0x7ffeec9beba0, 0x7ffeec1d08c0, 0x7ffeec1b4400, 0x7fff3b123830, 0x7fff3b12d4f0, 0x7fff3b136bc0, 0x7ffeec9b5720, 0x7ffeec9af800, 0x7ffeec1b4680, 0x7ffeec9bedb0, 0x7ffeec9bcaa0, 0x7ffeec1d0ad0, 0x7ffeec9bccb0, 0x7fff3b123a40, 0x7fff3b12d700, 0x7ffeec9a4180, 0x7ffeec9b5930, 0x7ffeec9aaa80, 0x7ffeec1b0f80, 0x7fff3b133830, 0x7fff3b136dd0, 0x7fff3b12d910, 0x7ffeec9befc0, 0x7fff3b123c50, 0x7ffeec9bcec0, 0x7ffeec1d0ce0, 0x7fff3b13e990, 0x7ffeec9b4490, 0x7ffeec9a9900, 0x7ffeec9afd00, 0x7ffeec1b5300, 0x7fff3b136fe0, 0x7fff3b123e60, 0x7ffeec9bf1d0, 0x7ffeec9a4400, 0x7ffeec9b8690, 0x7ffeec1c8060, 0x7ffeec1b7880, 0x7fff3b1371f0, 0x7fff3b1204a0, 0x7ffeec97d280, 0x7fff3b124070, 0x7fff3b12db20, 0x7ffeec1d0ef0, 0x7ffeec9bf3e0, 0x7fff3b131f70, 0x7fff3b132de0, 0x7fff3b124280, 0x7fff3b12dd30, 0x7fff3b137400...}
        valueMap = {d = 0x7fff44025a60}
#2  0x00005555558888be in lmms::Song::automatedValuesAt(lmms::TimePos, int) const (this=0x5555569715b0, time=..., clipNum=-1) at /usr/local/src/lmms/src/core/Song.cpp:845
        trackList = std::vector of length 53, capacity 53 = {0x7ffff2970080, 0x7ffff2a3df40, 0x7ffeec992240, 0x7ffeec992480, 0x7ffff29702b0, 0x7ffff29704e0, 0x7ffeec9926c0, 0x7ffeec992900, 0x7ffff2970710, 0x7ffff2970940, 0x7ffff2970b70, 0x7ffeec992b40, 0x7ffeec992d80, 0x7ffeec992fc0, 0x7ffff2970da0, 0x7ffff2970fd0, 0x7ffeec993200, 0x7ffff2971200, 0x7ffff2971430, 0x7ffff2971660, 0x7ffeec993440, 0x7ffff2971890, 0x7ffff2971ac0, 0x7ffff2971cf0, 0x7ffff2971f20, 0x7ffeec993680, 0x7ffeec9938c0, 0x7ffff2972150, 0x7ffff2972380, 0x7ffff29725b0, 0x7ffeec993b00, 0x7ffff29727e0, 0x7ffff2972a10, 0x7ffff2972c40, 0x7ffeec993d40, 0x7ffff2972e70, 0x7ffff29730a0, 0x7ffeec993f80, 0x7ffeec9941c0, 0x7ffeec994400, 0x7ffff29732d0, 0x7ffff2973500, 0x7ffeec994640, 0x7ffeec994880, 0x7ffff2973730, 0x7ffeec994ac0, 0x7ffff2973960, 0x7ffff2973b90, 0x7ffff2973dc0, 0x7ffff2973ff0, 0x7ffff2974220, 0x7ffff2974450, 0x7ffff2974680}
#3  0x0000555555886f28 in lmms::Song::processAutomations(std::vector<lmms::Track*, std::allocator<lmms::Track*> > const&, lmms::TimePos, short)
    (this=0x5555569715b0, tracklist=std::vector of length 52, capacity 52 = {...}, timeStart=...) at /usr/local/src/lmms/src/core/Song.cpp:385
        values = {d = 0x7ffff6798660 <QMapDataBase::shared_null>}
        recordedModels = {q_hash = {{d = 0x7ffff67985a0 <QHashData::shared_null>, e = 0x7ffff67985a0 <QHashData::shared_null>}}}
        container = 0x5555569715b0
        clipNum = -1
        tracks = <error reading variable: Cannot access memory at address 0x151bfdc08>
        clips = Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x51bfdb80
#4  0x0000555555886b61 in lmms::Song::processNextBuffer() (this=0x5555569715b0) at /usr/local/src/lmms/src/core/Song.cpp:341
        frameOffsetInTick = 0.25
        framesUntilNextPeriod = 87
        framesUntilNextTick = 394
        framesToPlay = 87
        trackList = std::vector of length 52, capacity 52 = {0x7ffff2a3df40, 0x7ffeec992240, 0x7ffeec992480, 0x7ffff29702b0, 0x7ffff29704e0, 0x7ffeec9926c0, 0x7ffeec992900, 0x7ffff2970710, 0x7ffff2970940, 0x7ffff2970b70, 0x7ffeec992b40, 0x7ffeec992d80, 0x7ffeec992fc0, 0x7ffff2970da0, 0x7ffff2970fd0, 0x7ffeec993200, 0x7ffff2971200, 0x7ffff2971430, 0x7ffff2971660, 0x7ffeec993440, 0x7ffff2971890, 0x7ffff2971ac0, 0x7ffff2971cf0, 0x7ffff2971f20, 0x7ffeec993680, 0x7ffeec9938c0, 0x7ffff2972150, 0x7ffff2972380, 0x7ffff29725b0, 0x7ffeec993b00, 0x7ffff29727e0, 0x7ffff2972a10, 0x7ffff2972c40, 0x7ffeec993d40, 0x7ffff2972e70, 0x7ffff29730a0, 0x7ffeec993f80, 0x7ffeec9941c0, 0x7ffeec994400, 0x7ffff29732d0, 0x7ffff2973500, 0x7ffeec994640, 0x7ffeec994880, 0x7ffff2973730, 0x7ffeec994ac0, 0x7ffff2973960, 0x7ffff2973b90, 0x7ffff2973dc0, 0x7ffff2973ff0, 0x7ffff2974220, 0x7ffff2974450, 0x7ffff2974680}
        clipNum = -1
        enforceLoop = {__this = 0x5555569715b0}
        timeline = 0x55555d0afea0
        loopEnabled = true
        framesPerTick = 393.75
        framesPerPeriod = 128
        frameOffsetInPeriod = 41
#5  0x00005555557d17c9 in lmms::AudioEngine::renderStageNoteSetup() (this=0x555556948700) at /usr/local/src/lmms/src/core/AudioEngine.cpp:380
        profilerProbe = {m_profiler = @0x555556948800, m_type = lmms::AudioEngineProfiler::DetailType::NoteSetup}
        it_rem = {i = 0x7fff4403f0c0}
        mixer = 0x555556992550
#6  0x00005555557d1c0a in lmms::AudioEngine::renderNextBuffer() (this=0x555556948700) at /usr/local/src/lmms/src/core/AudioEngine.cpp:465
#7  0x00005555557d3e91 in lmms::AudioEngine::fifoWriter::run() (this=0x55555c3dd7b0) at /usr/local/src/lmms/src/core/AudioEngine.cpp:1298
        buffer = 0x7fff44042190
        b = 0x5555569e24c0
        frames = 128
#8  0x00007ffff64cbd43 in  () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007ffff5ea8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
        ret = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        pd = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140734564918976, -3138150934858113094, -288, 11, 140737488343984, 140734556528640, 3138357094314991546, 3138137633293262778}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#10 0x00007ffff5f2861c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
musikBear commented 1 year ago

I believe this has been up before. Removing an object while it is active.. Its asking for a crash. Last time this was 'up' i believe the consensus was to disable delete while in transport