Audacious closes when adding many MP3s to playlist
Hi everyone, I just started using SparkyLinux and I've grown fond of Audacious. The issue is, when I want to load a good bit of mp3s to my playlist, the app closes. I can add 1 or 5 or 10, but once I get up to 50 or more at once, it closes as soon as it loads with terminal error:
audacious: index.cc:114: void IndexBase::remove(int, int, aud::EraseFunc): Assertion `pos >= 0 && pos <= m_len' failed.
Any help is appreciated because I really like both this distro and Audacious! :)
Run Audacious in GDB and then type "bt" when it crashes. The backtrace will help to show where the problem lies.
I tested an old mp3 stash and found one which causes a crash. Here is the backtrace:
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffe6492700 (LWP 15822)]
0x00007ffff680c107 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
#0 0x00007ffff680c107 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007ffff680d4e8 in __GI_abort () at abort.c:89
#2 0x00007ffff6805226 in __assert_fail_base (fmt=0x7ffff693bce8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7ffff7bc8cb2 "pos >= 0 && pos <= m_len",
file=file@entry=0x7ffff7bc8ca0 "index.cc", line=line@entry=114, function=function@entry=0x7ffff7bc8ee0 "void IndexBase::remove(int, int, aud::EraseFunc)") at assert.c:92
#3 0x00007ffff68052d2 in __GI___assert_fail (assertion=0x7ffff7bc8cb2 "pos >= 0 && pos <= m_len", file=0x7ffff7bc8ca0 "index.cc", line=114,
function=0x7ffff7bc8ee0 "void IndexBase::remove(int, int, aud::EraseFunc)") at assert.c:101
#4 0x00007ffff7bb0110 in IndexBase::remove(int, int, void (*)(void*, int)) () from /usr/lib/x86_64-linux-gnu/libaudcore.so.3
#5 0x00007fffe0ca6e36 in ?? () from /usr/lib/x86_64-linux-gnu/libaudtag.so.2
#6 0x00007fffe0ca73ad in ?? () from /usr/lib/x86_64-linux-gnu/libaudtag.so.2
#7 0x00007fffe110afdb in ?? () from /usr/lib/x86_64-linux-gnu/audacious/Input/madplug.so
#8 0x00007ffff7bc0232 in aud_file_read_tuple(char const*, PluginHandle*, String*) () from /usr/lib/x86_64-linux-gnu/libaudcore.so.3
#9 0x00007ffff7bc207e in ?? () from /usr/lib/x86_64-linux-gnu/libaudcore.so.3
---Type <return> to continue, or q <return> to quit---
The only difference I could find between it and other mp3s is that it has an ID3 2.4.0 tag with 'extended header' and it is also plain Stereo (not Joint Stereo).
$ file audacious_3.6.1_crash.mp3
audacious_3.6.1_crash.mp3: Audio file with ID3 version 2.4.0, extended header, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, Stereo
Rewriting the tag with easytag also corrected the crash.
A link to an upload of the example mp3: http://www.fileconvoy.com/dfl.php?id=gcd3d277b9ca47ae29996660414a08b27acab64a7d
Thanks for the info. The extended header claims to have a size of 177,480,369 bytes, which is obviously wrong. I will add a sanity check to the code to prevent the crash, but you should still use EasyTag to fix the tag since Audacious still won't be able to read it.