Bug 1311295

Summary: Soundtouch module is blacklisted, due to ABI break in soundtouch, needs rebuild the package
Product: [Fedora] Fedora Reporter: Mathieu Bridon <bochecha>
Component: gstreamer1-plugins-bad-freeAssignee: Brian Pepple <bdpepple>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: 23CC: bdpepple, John_Sauter, m.tarenskeen, sergio, uraeus, wtaymans
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-02-28 22:07:47 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Mathieu Bridon 2016-02-23 20:32:57 UTC
Currently on Fedora 23:

  $ gst-inspect-1.0 -b
  Blacklisted files:
    libgstsoundtouch.so
     
  Total count: 1 blacklisted file
  $ gst-inspect-1.0 /usr/lib64/gstreamer-1.0/libgstsoundtouch.so
     
  Could not load plugin file: Opening module failed: /usr/lib64/gstreamer-1.0/libgstsoundtouch.so: undefined symbol: _ZN10soundtouch10SoundTouch8setTempoEf

The problem comes from the fact that gstreamer1-plugins-bad-free was built against soundtouch-1.4.0-13.fc23

Since then, soundtouch was upgraded in F23 to soundtouch-1.9.2-3.fc23.

With libabigail's excellent abipkgdiff, I can confirm that this symbol has been removed from the newer soundtouch package:

  $ koji download-build --arch=x86_64 --debuginfo soundtouch-1.4.0-13.fc23
  $ koji download-build --arch=x86_64 --debuginfo soundtouch-1.9.2-3.fc23
  $ abipkgdiff --d1 soundtouch-debuginfo-1.4.0-13.fc23.x86_64.rpm \
               --d2 soundtouch-debuginfo-1.9.2-3.fc23.x86_64.rpm \
               soundtouch-1.4.0-13.fc23.x86_64.rpm \
               soundtouch-1.9.2-3.fc23.x86_64.rpm
    ...
    43 Removed functions:
      ...
      [D] 'method void soundtouch::uch::setTempo(float)'    {_ZN10soundtouch10SoundTouch8setTempoEf}
      ...
    ...

Lots of other changes, it seems they completely broke the ABI, and the update was pushed to Fedora 23. :(

Comment 1 Mathieu Bridon 2016-02-23 20:40:30 UTC
I just rebuilt the gstreamer1-plugins-bad-free package in a Fedora 23 mock chroot, against the latest soundtouch.

  $ gst-inspect-1.0 -b
  Blacklisted files:
  
  Total count: 0 blacklisted files

Can someone rebuild it and push an update?

Comment 2 Mathieu Bridon 2016-02-23 20:59:33 UTC
Adding the soundtouch maintainer to the CC list.

Comment 3 Sergio Basto 2016-02-23 21:06:49 UTC
(In reply to Mathieu Bridon from comment #0)
> Currently on Fedora 23:
> 
>   $ gst-inspect-1.0 -b
>   Blacklisted files:
>     libgstsoundtouch.so
>      
>   Total count: 1 blacklisted file
>   $ gst-inspect-1.0 /usr/lib64/gstreamer-1.0/libgstsoundtouch.so
>      
>   Could not load plugin file: Opening module failed:
> /usr/lib64/gstreamer-1.0/libgstsoundtouch.so: undefined symbol:
> _ZN10soundtouch10SoundTouch8setTempoEf
> 
> The problem comes from the fact that gstreamer1-plugins-bad-free was built
> against soundtouch-1.4.0-13.fc23
> 
> Since then, soundtouch was upgraded in F23 to soundtouch-1.9.2-3.fc23.
> 
> With libabigail's excellent abipkgdiff, I can confirm that this symbol has
> been removed from the newer soundtouch package:
> 
>   $ koji download-build --arch=x86_64 --debuginfo soundtouch-1.4.0-13.fc23
>   $ koji download-build --arch=x86_64 --debuginfo soundtouch-1.9.2-3.fc23
>   $ abipkgdiff --d1 soundtouch-debuginfo-1.4.0-13.fc23.x86_64.rpm \
>                --d2 soundtouch-debuginfo-1.9.2-3.fc23.x86_64.rpm \
>                soundtouch-1.4.0-13.fc23.x86_64.rpm \
>                soundtouch-1.9.2-3.fc23.x86_64.rpm
>     ...
>     43 Removed functions:
>       ...
>       [D] 'method void soundtouch::uch::setTempo(float)'   
> {_ZN10soundtouch10SoundTouch8setTempoEf}
>       ...
>     ...
> 
> Lots of other changes, it seems they completely broke the ABI, and the
> update was pushed to Fedora 23. :(

yeah , 3 up karmas , I not push it to stable! .

The problem was:  v1.9.2 source code release [20-September-2015]: 
SoundTouch library v1.9.1, 8-Sep-2015 [223 kibytes zip file]
SoundTouch library v1.9.0, 18-May-2015 [221 kibytes zip file]
SoundTouch library v1.8.0, 7-Jan-2014 [157 kibytes zip file]
SoundTouch library v1.7.1, 28-Dec-2012 [147 kibytes zip file]
SoundTouch library v1.7.0, 1-Sep-2012 [140 kibytes zip file]
SoundTouch library v1.6.0, 16-Jul-2011 [138 kibytes zip file]
SoundTouch library v1.5.0, 28-Dec-2009 [454 kibytes zip file]
SoundTouch library v1.4.0, 15-Jan-2009 [454 kibytes zip file]

last version (1.4.0) was from 2009 , what could I do to minimize the problems ?

Comment 4 Mathieu Bridon 2016-02-23 21:17:15 UTC
(In reply to Sergio Monteiro Basto from comment #3)
> last version (1.4.0) was from 2009 , what could I do to minimize the
> problems ?

A few possibilities:

1. do not push an update that breaks the ABI
2. make sure all consumers of the ABI are rebuilt, and push them all together in the same update

Both are entirely valid options, and package maintainers can chose one or the other depending on the situation. Both rely on checking whether the ABI was broken, though.

It has become so easy with libabigail's abipkgdiff, that we really should consider it the absolute minimum a package maintainer should do before pushing an update to a C library.

Hopefully, Taskotron will eventually start checking for ABI breaks (using libabigail), and this kind of issue won't happen again.

In the meantime, we all should try to make sure we check for ABI breaks in the updates we push.

This case is a done deal, there's nothing left to do any more but rebuild gstreamer1-plugins-bad-free (which this bug report really is about) and move on.

In my first comment I detailed how you can check for ABI breaks with abipkgdiff. Can I ask you to give it a try for your future updates? :)

Comment 5 Sergio Basto 2016-02-23 21:31:26 UTC
(In reply to Mathieu Bridon from comment #4)

> 2. make sure all consumers of the ABI are rebuilt, and push them all
> together in the same update
> 
> Both are entirely valid options, and package maintainers can chose one or
> the other depending on the situation. Both rely on checking whether the ABI
> was broken, though.
> 
> It has become so easy with libabigail's abipkgdiff, that we really should
> consider it the absolute minimum a package maintainer should do before
> pushing an update to a C library.
> 
> Hopefully, Taskotron will eventually start checking for ABI breaks (using
> libabigail), and this kind of issue won't happen again.
> 
> In the meantime, we all should try to make sure we check for ABI breaks in
> the updates we push.
> 
> This case is a done deal, there's nothing left to do any more but rebuild
> gstreamer1-plugins-bad-free (which this bug report really is about) and move
> on.
> 
> In my first comment I detailed how you can check for ABI breaks with
> abipkgdiff. Can I ask you to give it a try for your future updates? :)

Sorry I miss this check I don't know why.

dnf repoquery --whatrequires soundtouch --alldeps --qf "%{sourcerpm} %{repoid}"

audacity-2.1.2-0.7.rc1.fc23.src.rpm updates
audacity-freeworld-2.1.1-1.fc23.src.rpm rpmfusion-free-updates-testing
dolphin-emu-4.0-10.fc23.src.rpm rpmfusion-free-updates-testing
gstreamer-plugins-bad-free-0.10.23-28.fc23.src.rpm fedora
gstreamer1-plugins-bad-free-1.6.3-2.fc23.src.rpm updates
pcsx2-1.2.1-1.fc22.src.rpm rpmfusion-nonfree

may you rebuild gstreamer-plugins-bad-free and gstreamer1-plugins-bad-free ?

Comment 6 Martin Tarenskeen 2016-02-23 23:14:21 UTC
The update soundtouch-1.9.2-3 also breaks Audacity.

audacity: symbol lookup error: audacity: undefined symbol: _ZN10soundtouch10SoundTouch14setTempoChangeEf
 
After downgrading to soundtouch-1.4.0-13.fc23.x86_64 audacity works again.

Comment 7 Martin Tarenskeen 2016-02-23 23:17:59 UTC
I'm not sure this is correct place to report this soundtouch issue with Audacity?

Comment 8 Mathieu Bridon 2016-02-23 23:22:12 UTC
(In reply to Martin Tarenskeen from comment #7)
> I'm not sure this is correct place to report this soundtouch issue with
> Audacity?

See Sergio's previous comments.

In comment 5 he showed that audacity was also broken, and then he reported bug 1311309 about audacity being broken.

Comment 9 Sergio Basto 2016-02-25 05:59:22 UTC
Can someone rebuild

Comment 10 Sergio Basto 2016-02-26 21:54:07 UTC
please test it and give karma thanks.

https://bodhi.fedoraproject.org/updates/FEDORA-2016-14e9282e77

Comment 11 Sergio Basto 2016-02-28 22:07:47 UTC
gstreamer1-plugins-bad-free-1.6.3-3.fc23 has been pushed to the Fedora 23
stable repository. If problems still persist, please make note of it in this
bug report.