Skip to content

JackAudio + JackMidi cause invalid and uninitialized reads #5408

@JohannesLorenz

Description

@JohannesLorenz

Bug Summary

JackMidi causes invalid and uninitialized reads

Steps to reproduce

Enable JackMidi, restart LMMS.

When enabled: Open LMMS. Close LMMS.

Expected behavior

No memory errors.

Actual behavior

Invalid and uninitialized reads. Sometimes, this leads to crashes.

LMMS version used

master: eebdc0f

Logs

Click to expand

Startup

==21784== Thread 11:
==21784== Conditional jump or move depends on uninitialised value(s)
==21784==    at 0x3AAD4D: MidiJack::JackMidiRead(unsigned int) (MidiJack.cpp:180)
==21784==    by 0x3884C3: AudioJack::processCallback(unsigned int, void*) (AudioJack.cpp:347)
==21784==    by 0x3887D3: AudioJack::staticProcessCallback(unsigned int, void*) (AudioJack.cpp:429)
==21784==    by 0x712C2A9: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x712BA07: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x7144B1C: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x489F4CE: start_thread (in /usr/lib/libpthread-2.30.so)
==21784==    by 0x70432D2: clone (in /usr/lib/libc-2.30.so)
==21784== 
==21784== Conditional jump or move depends on uninitialised value(s)
==21784==    at 0x38856E: AudioJack::processCallback(unsigned int, void*) (AudioJack.cpp:382)
==21784==    by 0x3887D3: AudioJack::staticProcessCallback(unsigned int, void*) (AudioJack.cpp:429)
==21784==    by 0x712C2A9: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x712BA07: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x7144B1C: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x489F4CE: start_thread (in /usr/lib/libpthread-2.30.so)
==21784==    by 0x70432D2: clone (in /usr/lib/libc-2.30.so)

When closing:

==21784== Thread 11:
==21784== Invalid read of size 8
==21784==    at 0x3AACF2: MidiJack::JackMidiRead(unsigned int) (MidiJack.cpp:172)
==21784==    by 0x3884C3: AudioJack::processCallback(unsigned int, void*) (AudioJack.cpp:347)
==21784==    by 0x3887D3: AudioJack::staticProcessCallback(unsigned int, void*) (AudioJack.cpp:429)
==21784==    by 0x712C2A9: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x712BA07: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x7144B1C: ??? (in /usr/lib/libjack.so.0.1.0)
==21784==    by 0x489F4CE: start_thread (in /usr/lib/libpthread-2.30.so)
==21784==    by 0x70432D2: clone (in /usr/lib/libc-2.30.so)
==21784==  Address 0xa277770 is 160 bytes inside a block of size 440 free'd
==21784==    at 0x4839EAB: operator delete(void*) (vg_replace_malloc.c:586)
==21784==    by 0x3AAB1F: MidiJack::~MidiJack() (MidiJack.cpp:145)
==21784==    by 0x32EB69: Mixer::~Mixer() (Mixer.cpp:189)
==21784==    by 0x32ED23: Mixer::~Mixer() (Mixer.cpp:201)
==21784==    by 0x3057C3: void LmmsCore::deleteHelper<Mixer>(Mixer**) (Engine.h:141)
==21784==    by 0x3050D4: LmmsCore::destroy() (Engine.cpp:104)
==21784==    by 0x3DDF7C: MainWindow::~MainWindow() (MainWindow.cpp:260)
==21784==    by 0x3DDFF1: MainWindow::~MainWindow() (MainWindow.cpp:261)
==21784==    by 0x6AD9FFF: QObject::event(QEvent*) (in /usr/lib/libQt5Core.so.5.14.1)
==21784==    by 0x4A57488: QWidget::event(QEvent*) (in /usr/lib/libQt5Widgets.so.5.14.1)
==21784==    by 0x4B71574: QMainWindow::event(QEvent*) (in /usr/lib/libQt5Widgets.so.5.14.1)
==21784==    by 0x4A13361: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.14.1)
==21784==  Block was alloc'd at
==21784==    at 0x4838DEF: operator new(unsigned long) (vg_replace_malloc.c:344)
==21784==    by 0x331C8B: Mixer::tryMidiClients() (Mixer.cpp:1149)
==21784==    by 0x32EE47: Mixer::initDevices() (Mixer.cpp:216)
==21784==    by 0x304EA2: LmmsCore::init(bool) (Engine.cpp:79)
==21784==    by 0x3D2B3B: GuiApplication::GuiApplication() (GuiApplication.cpp:115)
==21784==    by 0x2A400A: main (main.cpp:815)

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions