Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash on exit from rpmalloc assert in debug builds, equalizer plugin related #6026

Closed
sziegler103 opened this issue May 20, 2021 · 1 comment · Fixed by #6300
Closed

Crash on exit from rpmalloc assert in debug builds, equalizer plugin related #6026

sziegler103 opened this issue May 20, 2021 · 1 comment · Fixed by #6300
Labels

Comments

@sziegler103
Copy link
Contributor

Bug Summary

rpmalloc aborts from an assertion on program exit if the equalizer plugin is added to an FX track.
#5733 might be related, which was thought to be fixed by #5776.

Note: The few other plugins I've tested don't seem to cause this, only equalizer. I haven't tested many other plugins though.

Steps to reproduce

  1. Run a debug build of LMMS.
  2. Add the equalizer plugin to either the master FX track or a created FX track.
  3. Close LMMS via the 'X' button or File -> Quit.

Expected behavior

LMMS closes without aborting preemptively.

Actual behavior

LMMS "crashes" from the assert calling an abort.

Screenshot

image

Affected LMMS versions

Version 1.3.0-alpha.1.105
Debug configuration.

Unknown if on stable because I don't have the know-how to build and test 1.2.2

Logs

(From console)

Assertion failed: span->list_size == span->used_count, file C:\LMMSDev\lmms\src\3rdparty\rpmalloc\rpmalloc\rpmalloc\rpmalloc.c, line 1248

Note

Probably not a big deal since it happens on program exit, so the OS will (hopefully) clean up anyway, but still something to consider.

@PhysSong
Copy link
Member

PhysSong commented Feb 6, 2022

Reproduced in Linux+GCC debug builds, too.

automatableButtonGroup *lpBtnGrp = new automatableButtonGroup( this, tr( "LP group" ) );
lpBtnGrp->addButton( lp12Button );
lpBtnGrp->addButton( lp24Button );
lpBtnGrp->addButton( lp48Button );
lpBtnGrp->setModel( &m_controls->m_lpTypeModel, false);
automatableButtonGroup *hpBtnGrp = new automatableButtonGroup( this, tr( "HP group" ) );
hpBtnGrp->addButton( hp12Button );
hpBtnGrp->addButton( hp24Button );
hpBtnGrp->addButton( hp48Button );
hpBtnGrp->setModel( &m_controls->m_hpTypeModel,false);

The two setModel calls passes false as the second argument, and this makes the default model constructed in the automatableButtonGroup constructor leaked.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants