Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 704916 - media-sound/musescore-3.3.4 - whenever opening a score, segmentation fault in FluidS::Sample::optimize()
Summary: media-sound/musescore-3.3.4 - whenever opening a score, segmentation fault in...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Sound Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-01-07 09:27 UTC by Hans Lub
Modified: 2020-02-08 00:43 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
build log (build.log.xz,54.04 KB, application/x-xz)
2020-01-07 09:27 UTC, Hans Lub
Details
emerge --info output (file_704916.txt,6.82 KB, text/plain)
2020-01-07 09:28 UTC, Hans Lub
Details
lddtree output (file_704916.txt,3.67 KB, text/plain)
2020-01-07 09:36 UTC, Hans Lub
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Hans Lub 2020-01-07 09:27:24 UTC
Created attachment 602730 [details]
build log

musescore (without arguments) starts normally, but whenever I open a
score (or start it with `mscore score.mscz`) it segfaults. 

gdb backtrace:

#0  0x0000558d00ae4fbf in FluidS::Sample::optimize() ()
[Current thread is 1 (Thread 0x7f92d6ffd700 (LWP 22725))]
(gdb) bt
#0  0x0000558d00ae4fbf in FluidS::Sample::optimize() ()
#1  0x0000558d00ae857d in FluidS::Sample::load() ()
#2  0x0000558d00ae87a4 in FluidS::Preset::loadSamples() ()
#3  0x0000558d00ae6aef in FluidS::Channel::setPreset(FluidS::Preset*) ()
#4  0x0000558d00ae6b34 in FluidS::Channel::init() ()
#5  0x0000558d00ae6b59 in FluidS::Channel::reset() ()
#6  0x0000558d00adf8b2 in FluidS::Fluid::play(Ms::PlayEvent const&) ()
#7  0x0000558d00758b64 in Ms::Seq::putEvent(Ms::NPlayEvent const&, unsigned int) ()
#8  0x0000558d0075c38f in Ms::Seq::processMessages() ()
#9  0x0000558d0075c78c in Ms::Seq::process(unsigned int, float*) ()
#10 0x0000558d00a85ca0 in Ms::PulseAudio::paCallback(pa_stream*, unsigned long, void*) ()
#11 0x00007f92f54ebd3e in ?? () from /usr/lib64/libpulse.so.0
#12 0x00007f92f2fdabac in pa_pdispatch_run () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#13 0x00007f92f54cedbf in ?? () from /usr/lib64/libpulse.so.0
#14 0x00007f92f2fdd56d in ?? () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#15 0x00007f92f2fe02eb in ?? () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#16 0x00007f92f2fe06a6 in ?? () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#17 0x00007f92f2fe0efa in ?? () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#18 0x00007f92f54e4161 in pa_mainloop_dispatch () from /usr/lib64/libpulse.so.0
#19 0x00007f92f54e448e in pa_mainloop_iterate () from /usr/lib64/libpulse.so.0
#20 0x0000558d00a85d50 in Ms::PulseAudio::paLoop(void*) ()
#21 0x00007f92f551a2d7 in start_thread () from /lib64/libpthread.so.0
#22 0x00007f92f3343a5f in clone () from /lib64/libc.so.6

Looking at the backtrace, I suspected a problem with the
soundfont. Just putting MuseScore_General.sf2 in
~/Documents/Musescore3/Soundfonts didn't help, however.  Then I
replaced the in /usr/share/mscore-3.3/MuseScore_General.sf3 with
MuseScore_General.sf2, renaming it to MuseScore_General.sf3. After
this, musescore works normally.
Comment 1 Hans Lub 2020-01-07 09:28:40 UTC
Created attachment 602732 [details]
emerge --info output
Comment 2 Hans Lub 2020-01-07 09:36:53 UTC
Created attachment 602734 [details]
lddtree output
Comment 3 Miroslav Šulc gentoo-dev 2020-01-07 15:54:35 UTC
i tried musescore-3.3.4, but cannot make it crash:

musescore /usr/share/mscore-3.3/demos/Reunion.mscz


i also tried musescore-9999 and it does not crash neither:

musescore /usr/share/mscore-3.4/demos/Reunion.mscz


here are my use flags:

[ebuild     U *] media-sound/musescore-9999::gentoo [3.3.4::gentoo] USE="alsa jack mp3 pulseaudio vorbis -debug -portaudio -portmidi -webengine" 0 KiB


and lddtree:

musescore => /usr/bin/musescore (interpreter => /lib64/ld-linux-x86-64.so.2)
    libvorbisfile.so.3 => /usr/lib64/libvorbisfile.so.3
        libvorbis.so.0 => /usr/lib64/libvorbis.so.0
        libogg.so.0 => /usr/lib64/libogg.so.0
    libQt5Solutions_SingleApplication-2.6.so.1 => /usr/lib64/libQt5Solutions_SingleApplication-2.6.so.1
        libQt5Solutions_LockedFile-2.4.so.1 => /usr/lib64/libQt5Solutions_LockedFile-2.4.so.1
    libfreetype.so.6 => /usr/lib64/libfreetype.so.6
        libbz2.so.1.0 => /lib64/libbz2.so.1.0
        libpng16.so.16 => /usr/lib64/libpng16.so.16
    libsndfile.so.1 => /usr/lib64/libsndfile.so.1
        libFLAC.so.8 => /usr/lib64/libFLAC.so.8
        libvorbisenc.so.2 => /usr/lib64/libvorbisenc.so.2
        libopus.so.0 => /usr/lib64/libopus.so.0
    libasound.so.2 => /usr/lib64/libasound.so.2
        ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
    libQt5Xml.so.5 => /usr/lib64/libQt5Xml.so.5
    libQt5XmlPatterns.so.5 => /usr/lib64/libQt5XmlPatterns.so.5
    libQt5Svg.so.5 => /usr/lib64/libQt5Svg.so.5
    libQt5PrintSupport.so.5 => /usr/lib64/libQt5PrintSupport.so.5
    libQt5Help.so.5 => /usr/lib64/libQt5Help.so.5
        libQt5Sql.so.5 => /usr/lib64/libQt5Sql.so.5
    libz.so.1 => /lib64/libz.so.1
    libdl.so.2 => /lib64/libdl.so.2
    libpthread.so.0 => /lib64/libpthread.so.0
    libpulse.so.0 => /usr/lib64/libpulse.so.0
        libpulsecommon-13.0.so => /usr/lib64/pulseaudio/libpulsecommon-13.0.so
            libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1
            libX11.so.6 => /usr/lib64/libX11.so.6
            libxcb.so.1 => /usr/lib64/libxcb.so.1
                libXau.so.6 => /usr/lib64/libXau.so.6
                libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6
                    libbsd.so.0 => /usr/lib64/libbsd.so.0
            libICE.so.6 => /usr/lib64/libICE.so.6
            libSM.so.6 => /usr/lib64/libSM.so.6
                libuuid.so.1 => /lib64/libuuid.so.1
            libXtst.so.6 => /usr/lib64/libXtst.so.6
                libXext.so.6 => /usr/lib64/libXext.so.6
            libasyncns.so.0 => /usr/lib64/libasyncns.so.0
                libresolv.so.2 => /lib64/libresolv.so.2
            librt.so.1 => /lib64/librt.so.1
        libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3
    libQt5Quick.so.5 => /usr/lib64/libQt5Quick.so.5
        libQt5QmlModels.so.5 => /usr/lib64/libQt5QmlModels.so.5
    libQt5Qml.so.5 => /usr/lib64/libQt5Qml.so.5
    libQt5Network.so.5 => /usr/lib64/libQt5Network.so.5
        libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2
            libkrb5.so.3 => /usr/lib64/libkrb5.so.3
            libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3
            libcom_err.so.2 => /lib64/libcom_err.so.2
            libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0
            libkeyutils.so.1 => /lib64/libkeyutils.so.1
        libproxy.so.1 => /usr/lib64/libproxy.so.1
        libssl.so.1.1 => /usr/lib64/libssl.so.1.1
        libcrypto.so.1.1 => /usr/lib64/libcrypto.so.1.1
    libQt5Widgets.so.5 => /usr/lib64/libQt5Widgets.so.5
    libQt5Gui.so.5 => /usr/lib64/libQt5Gui.so.5
        libGL.so.1 => /usr/lib64/libGL.so.1
            libglapi.so.0 => /usr/lib64/libglapi.so.0
            libdrm.so.2 => /usr/lib64/libdrm.so.2
            libxcb-glx.so.0 => /usr/lib64/libxcb-glx.so.0
            libxcb-dri2.so.0 => /usr/lib64/libxcb-dri2.so.0
            libXfixes.so.3 => /usr/lib64/libXfixes.so.3
            libXdamage.so.1 => /usr/lib64/libXdamage.so.1
            libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1
            libexpat.so.1 => /usr/lib64/libexpat.so.1
            libxcb-dri3.so.0 => /usr/lib64/libxcb-dri3.so.0
            libxcb-present.so.0 => /usr/lib64/libxcb-present.so.0
            libxcb-sync.so.1 => /usr/lib64/libxcb-sync.so.1
            libxshmfence.so.1 => /usr/lib64/libxshmfence.so.1
        libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0
            libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0
                libpcre.so.1 => /lib64/libpcre.so.1
            libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3
    libQt5Core.so.5 => /usr/lib64/libQt5Core.so.5
        libdouble-conversion.so.3 => /usr/lib64/libdouble-conversion.so.3
        libicui18n.so.65 => /usr/lib64/libicui18n.so.65
        libicuuc.so.65 => /usr/lib64/libicuuc.so.65
            libicudata.so.65 => /usr/lib64/libicudata.so.65
        libpcre2-16.so.0 => /usr/lib64/libpcre2-16.so.0
    libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libstdc++.so.6
    libm.so.6 => /lib64/libm.so.6
    libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/libgcc_s.so.1
    libc.so.6 => /lib64/libc.so.6
Comment 4 Hans Lub 2020-01-08 09:43:53 UTC
Using a C(XX)FLAGS with '-Og -ggdb' I was able to get an executable/core with more information:

#0  0x00005568f81b881a in FluidS::Sample::optimize (this=this@entry=0x5568faf09760)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/fluid/voice.cpp:1817
#1  0x00005568f81bcada in FluidS::Sample::load (this=0x5568faf09760)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/fluid/sfont.cpp:680
#2  0x00005568f81bccf0 in FluidS::Preset::loadSamples (this=this@entry=0x5568fadc6590)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/fluid/sfont.cpp:173
#3  0x00005568f81ba4a1 in FluidS::Channel::setPreset (this=this@entry=0x7f6594001440, p=0x5568fadc6590)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/fluid/chan.cpp:224
#4  0x00005568f81ba4d2 in FluidS::Channel::init (this=this@entry=0x7f6594001440)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/fluid/chan.cpp:58
#5  0x00005568f81ba4f1 in FluidS::Channel::reset (this=0x7f6594001440)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/fluid/chan.cpp:47
#6  0x00005568f81ba521 in FluidS::Channel::Channel (this=<optimized out>, s=<optimized out>, num=<optimized out>)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/fluid/chan.cpp:38
#7  0x00005568f81b2856 in FluidS::Fluid::play (this=0x5568fadd3920, event=...)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/fluid/fluid.cpp:141
#8  0x00005568f81a61c5 in Ms::MasterSynthesizer::play (this=<optimized out>, event=..., syntiIdx=syntiIdx@entry=0)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/bits/stl_vector.h:1040
#9  0x00005568f7d9284a in Ms::Seq::putEvent (this=this@entry=0x5568fb288050, event=..., framePos=framePos@entry=0)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/mscore/seq.cpp:1510
#10 0x00005568f7d95d8d in Ms::Seq::processMessages (this=this@entry=0x5568fb288050)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/mscore/seq.cpp:581
#11 0x00005568f7d96472 in Ms::Seq::process (this=0x5568fb288050, framesPerPeriod=framesPerPeriod@entry=1152, buffer=buffer@entry=0x5568fb27c064)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/mscore/seq.cpp:746
#12 0x00005568f8147271 in Ms::PulseAudio::paCallback (s=0x5568fafac330, len=9216, data=0x5568fb27c020)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/mscore/pulseaudio.cpp:64
#13 0x00007f65c5ca3d3e in ?? () from /usr/lib64/libpulse.so.0
#14 0x00007f65c3792bac in pa_pdispatch_run () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#15 0x00007f65c5c86dbf in ?? () from /usr/lib64/libpulse.so.0
#16 0x00007f65c379556d in ?? () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#17 0x00007f65c37982eb in ?? () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#18 0x00007f65c37986a6 in ?? () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#19 0x00007f65c3798efa in ?? () from /usr/lib64/pulseaudio/libpulsecommon-13.0.so
#20 0x00007f65c5c9c161 in pa_mainloop_dispatch () from /usr/lib64/libpulse.so.0
#21 0x00007f65c5c9c48e in pa_mainloop_iterate () from /usr/lib64/libpulse.so.0
#22 0x00005568f814731e in Ms::PulseAudio::paLoop (data=0x5568fb27c020)
    at /var/tmp/portage/media-sound/musescore-3.3.4/work/MuseScore-3.3.4/mscore/pulseaudio.cpp:177
#23 0x00007f65c5cd22d7 in start_thread () from /lib64/libpthread.so.0
#24 0x00007f65c3afba5f in clone () from /lib64/libc.so.6

A quick inspection with gdb reveals that this is a NULL pointer dereference: musescore tries to optimize a sample s with s->data=0x0

I had this problem for some time, with all recent versions of musescore (including -9999), on two slightly different machines. Using a different soundfont solves the problem, for me at least.
Comment 5 Miroslav Šulc gentoo-dev 2020-02-01 01:35:02 UTC
as bumping musescore-3.4.1, i noticed that sf3 requires vorbis use flag enabled. i suppose you have this use flag disabled which causes musescore crash as sf3 support is not compiled in. can you please confirm that?
Comment 6 Hans Lub 2020-02-01 05:48:40 UTC
You are correct: I didn't have the vorbis USE flag enabled.
Compiling musescore-9999 with USE=vorbis yields a working musescore, (while without it I get the segfaulting one)
Thanks for clearing that up!
Comment 7 Miroslav Šulc gentoo-dev 2020-02-01 07:15:22 UTC
thank you for verifying that. i will rename the vorbis use flag to sf3 to make it obvious what's the purpose and will make it enabled by default as without it musescore crashes as you reported.
Comment 8 Larry the Git Cow gentoo-dev 2020-02-08 00:43:01 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bd81fcd5b63fd0fc170a50751b78c8439bb73815

commit bd81fcd5b63fd0fc170a50751b78c8439bb73815
Author:     Miroslav Šulc <fordfrog@gentoo.org>
AuthorDate: 2020-02-08 00:10:12 +0000
Commit:     Miroslav Šulc <fordfrog@gentoo.org>
CommitDate: 2020-02-08 00:42:49 +0000

    media-sound/musescore: renamed use flag in 3.3.4
    
    renamed use flag vorbis to sf3 to make obvious the purpose
    of it and make it default to be able to load bundled sf3 file
    
    Bug: https://bugs.gentoo.org/708666
    Closes: https://bugs.gentoo.org/704916
    Package-Manager: Portage-2.3.87, Repoman-2.3.20
    Signed-off-by: Miroslav Šulc <fordfrog@gentoo.org>

 media-sound/musescore/musescore-3.3.4.ebuild | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)