Main menu:

Sponsoring

Please consider a small donation:

 

 

Or you can donate bitcoin:

 

Thanks to TekLinks in Birmingham, AL, for providing colocation and bandwidth.

Page Rank

Fame

FOSS Force Best Blog--2013 Award

Recent posts

Recent comments

About this blog

I am Eric Hameleers, and this is where I think out loud.
More about me.

Search

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 373 other subscribers

My Favourites

Slackware

Calendar

April 2018
M T W T F S S
« Mar    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

RSS Alien's Slackware packages

RSS Alien's unofficial KDE Slackware packages

RSS Alien's multilib packages

RSS Slackware64-current

RSS SBo

Meta

Fun and games in -current when ABIs break

Oh my.
It was not an April Fools joke when the ChangeLog.txt of slackware-current mentioned the following (I left out the non-relevant package updates):

 

+--------------------------+
Sun Apr 1 02:53:26 UTC 2018
...
l/icu4c-61.1-x86_64-1.txz: Upgraded.
 Shared library .so-version bump.
...
l/poppler-0.63.0-x86_64-1.txz: Upgraded.
 Shared library .so-version bump.

All of us  who follow Slackware’s development know that “shared library version bump” means ABI breakage. I.e. a lot of 3rd-party binaries will suddenly not find required library versions anymore. In particular icu4c and poppler are nasty beasts. Slackware’s own packages had been carefully updated and recompiled where needed of course, so there was no breakage in the distro itself. But many people do not run a bare Slackware installation… a lot of software is usually installed on top. And that is the software which will be affected by an incompatible change like this one on April 1st.

What’s this  version bump all about? How is it possible that it affects your computer so deeply?

Most programs depend on other programs. Software developers hate to re-invent the wheel if they can avoid it. Lots of lower-level or widely used functionality has been put into software libraries. Think of network access functionality, text rendering, encryption etc – smart people have created useful, efficient and robust software and stuffed that code into libraries. Your own program can link against these libraries at run-time and access the functionality they have to offer and your program needs.
If many programs link to the same libraries, that reduces the memory footprint because a library has to be loaded into memory only once even if many programs are using it. These libraries are therefore called ‘shared libraries‘ or ‘shared objects‘ (hence the extension ‘.so‘) or also dynamic libraries. For this dynamic linking to work, programs use binary interfaces at runtime that were established when the program was compiled and linked.
A shared library version only needs to change if the Application Binary Interface (ABI) changes. When that happens, all binaries that depend on the library need to be recompiled to adjust to the new ABI.
Among others, an ABI depends on the machine architecture, and on the toolchain (compiler, linker) used to generate the binary code from its sources. An ABI guarantees binary compatibility: the program will work on every machine with the same ABI, without a need for recompilation.

When will an ABI usually change?

One case is when the library’s API (Application Programming Interface, i.e. the way in which access to the library routines is defined in its source code) changes. This mostly occurs in software that is not yet stable and where its programmers add new functionality or revise the methods of calling the library’s functionality. Mature software on the other hand has a well-defined API which is rarely subject to change.

Another case is when the toolchain is updated. Slackware’s toolchain has been very stable and ABI changes have seldomly been introduced. As an example, Patrick talks about the a.out to ELF migration and the libc5 to glibc migration in a 2012 interview.

So why does well-established software like icu4c and poppler change their ABI almost on every minor release, thereby pissing off a really large crowd? You tell me. Arrogance or sloppiness, but let’s attribute it to bad project management. Because it probably could have been avoided in many if not all cases.

Anyway, some of you upgraded first to this new batch of updates in -current, then found out that some 3rd party packages stopped working, and then started looking for a cause.
Folks: if you are running slackware-current, you always check the ChangeLog.txt first. And if you spot a “shared library version bump” you stop right there and assess the situation. Some friends on LinuxQuestions were a bit more vocal about the way they had found themselves at a dead Plasma5 screen… others understood the situation better and and realized they had to wait for 3rd party packagers to update their repositories instead of assuming ill will.
If you are unable to cope with this kind of occasional breakage, use a stable Slackware release. That’s what all of us have been telling you all along.

My packages have been affected as well:

  • Plasma 5 stopped working,
    The fix is to recompile several packages among which a number of big ones: qt5, qt5-webkit and calligra. That means, you will have to have patience. The 64bit repository has been updated in the meantime. After upgrading from my ‘ktown’ repository your Plasma5 will again be fully functional. The 32bit repository updates will hopefully follow tomorrow have been uploaded now. I had to restart the 32bit qt5 compilation because of an internal compiler error halfway.
    The updated Plasma5 will even have some new functionality – since i slipped in the KMymoney program which otherwise would have been introduced at the April update of ‘ktown‘.
  • LibreOffice stopped working.
    The 64bit packages have been recompiled. They have been updated actually since there was a micro source version bump from 6.0.3.1 to 6.0.3.2 yesterday – my luck! The 32bit packages have to wait until after ‘ktown‘ updates have been completed and then I will upload them. New libreoffice packages for -current are now available.
  • Pale Moon stopped working.
    I was able to recompile the packages inbetween the Plasma5 compilation because it only takes little time. The updated palemoon packages are already in my repository.
  • Calibre stopped working.
    This will have to wait until after all the other updates New calibre packages for -current are now available..

And probably other stuff is broken too but I have not yet spotted that. If you find breakage, please report it so that I can recompile the package.

Comments

Comment from Fellype
Posted: April 2, 2018 at 19:10

This post was very didactic! Thank you for the explanations.

Comment from Eduardo
Posted: April 2, 2018 at 20:05

wow, that was fast!! Thank you Eric!

Comment from fabio
Posted: April 2, 2018 at 21:03

first, thanks for the upgrade plasma 5 packages. Second, -current is for fun and testing, findind bugs and so on.. the ones seeking stability should use stable. I follow -current on a spare computer.

Comment from matteo
Posted: April 3, 2018 at 08:41

Hi Eric,
The qbittorrent package in your -current repository has stopped working. Most probably unrelated to these latest updates since it’s complaining about libboost, and it’s not so big of a deal to recompile by myself. Just wanted to let you know.

Comment from Phil
Posted: April 3, 2018 at 09:18

Node.js needs to be rebuilt as well 🙁 But thanks a lot for the quick fixes and the explanation.

Comment from LoneStar
Posted: April 3, 2018 at 09:36

Hi Eric,
something still not working with Telepathy.
There is an error when starting the Contact list, and in cli there is:
lonestar@darkside:~$ ktp-contactlist
ktp-models: invalid index data requested QModelIndex(-1,-1,0×0,QObject(0x0))
ktp-models: Built with kpeople support, using kpeople model
tp-qt 0.9.7 WARN: GetAll(AccountManager) failed with “org.freedesktop.DBus.Error.Spawn.ChildExited” : “Process org.freedesktop.Telepathy.AccountManager exited with status 127”
ktp-people: Failed to initialize AccountManager: “org.freedesktop.DBus.Error.Spawn.ChildExited”
ktp-people: “Process org.freedesktop.Telepathy.AccountManager exited with status 127”
ktp-contactlist-module: “org.freedesktop.DBus.Error.Spawn.ChildExited”
ktp-contactlist-module: “Process org.freedesktop.Telepathy.AccountManager exited with status 127”

Maybe it’s some local issue for me? Not sure, I will do more investigation.

Comment from Helios
Posted: April 3, 2018 at 12:51

There is still the old version of icu4c libraries in /usr/lib64/telepathy/mission-control-5

Comment from LoneStar
Posted: April 3, 2018 at 15:23

@Helios:
thanks for the info. I can confirm that my issue with ktp-contactlist is related to that.

Comment from cwizardone
Posted: April 3, 2018 at 17:01

Thanks for the rebuilt LibreOffice packages.
Greatly appreciated!

Comment from alienbob
Posted: April 3, 2018 at 21:47

I’ll have to recompile telepathy-mission-control then.
I also still have to patch Konsole with a similar $TERM default change as happened to the package in slackware-current.

Pingback from Links 3/4/2018: OpenSSH 7.7, Cutelyst 2.1 and Fedora 28 Beta Released | Techrights
Posted: April 3, 2018 at 22:41

[…] Fun and games in -current when ABIs break […]

Comment from chrisretusn
Posted: April 4, 2018 at 09:31

Wow, an early surprise. I use KMyMoney, upgraded to 5.0.1 on March 23. Now I will take the two packages out of my non-slack repository. It just gets better and better. Thanks!

Comment from Regnad Kcin
Posted: April 6, 2018 at 04:58

The OpenVPN plugin for Network Manager is broken. It is looking for a .so.60 that was modified to .so.61 in the icu4c bump. I got the vpn working again by a symlink and by use of nm-connection-editor which is not quite what plasma5 is using .

Comment from alienbob
Posted: April 6, 2018 at 10:35

Regnad, are you certain you have the latest NetworkManager-openvpn package from my repository?
Inspection of NetworkManager-openvpn-1.2.10-x86_64-1alien.tgz shows:

readelf -a usr/lib64/NetworkManager/libnm-*so |grep icu
0x0000000000000001 (NEEDED) Shared library: [libicui18n.so.61]
0x0000000000000001 (NEEDED) Shared library: [libicuuc.so.61]
0x0000000000000001 (NEEDED) Shared library: [libicudata.so.61]
0x0000000000000001 (NEEDED) Shared library: [libicui18n.so.61]
0x0000000000000001 (NEEDED) Shared library: [libicuuc.so.61]
0x0000000000000001 (NEEDED) Shared library: [libicudata.so.61]
0x0000000000000001 (NEEDED) Shared library: [libicui18n.so.61]
0x0000000000000001 (NEEDED) Shared library: [libicuuc.so.61]
0x0000000000000001 (NEEDED) Shared library: [libicudata.so.61]

If you do have the latest package, then perhaps it’s another package on your system that causes an indirect link request to the older ICU libraries.

Comment from Regnad Kcin
Posted: April 6, 2018 at 20:34

I had indeed overlooked your new package. Thank you. However, it does not seem to resolve the problem of adding a new connection.

Comment from Regnad Kcin
Posted: April 7, 2018 at 10:50

Some further clarification with pictures…

1. This is the Plasma5 connection module. There is no
option to add new connections, but there was before the recent upgrade of -current.
http://pigs.ag/bugz/plasma_conn_module.png

2. This is the nm-connection-editor running from a terminal window. The bottom panel has the +/- for adding and removing connections.
http://pigs.ag/bugz/nm_conn_editor.png

I am cool with using nm-connection-editor, but the plasma5 module ought to work…

Comment from Rahul
Posted: April 7, 2018 at 14:05

Hibernate, Shutdown and Power options missing from KDE logout menu after recent updates. KDE system settings > startup and shutdown > desktop session> offer shutdown options is enabled.

Comment from FredM
Posted: April 8, 2018 at 17:51

Hi Alien.
Just wanted to leave a big THANKS for the quick recompile of LibreOffice.

Comment from alienbob
Posted: April 9, 2018 at 13:36

Rahul, no such problems here on the latest Plasma5 packages and slackwar64-current updated until April 4.
I will update and see what happens.

Comment from alienbob
Posted: April 9, 2018 at 13:53

After installing the second Sunday 8th update, everything is still as it should be – including shutdown/power options.

Comment from Omid
Posted: April 16, 2018 at 14:07

Dear Eric
Would you please check the korganizer, I think it’s not working since some earlier updates.

Comment from alienbob
Posted: April 16, 2018 at 19:57

Hi Omid

I am hopefully releasing an all-new set of ‘ktown’ packages at the end of this week, so an updated korganizer should be part of that.

Comment from Omid
Posted: April 17, 2018 at 09:01

Thanks in advance dear Eric
In addition I figured out that current freerdp-20160810-x86_64-1alien is not working with windows servers after last security updates because of a ssl error and I’ve compiled a fresh git clone of freerdp and it worked, so if you found some extra time please update that package

Comment from Eduardo
Posted: April 19, 2018 at 15:59

Hi Eric! Today current’s ChangeLog was massive. I’d like to see your thoughts before proceeding to upgrade.

Comment from alienbob
Posted: April 19, 2018 at 19:47

If you’re not running Plasma5 it should be safe to upgrade. Some 3rd party packages will of course not work. But since you are running -current you should be able to find a fix for that.
I’ll have to compile new Plasma5 first, and then I will see what else needs recompiling.

Comment from Eduardo
Posted: April 19, 2018 at 21:15

Thank you Eric. Since I use your Plasma5 then I will wait till your recompile. Thanks!

Comment from Fellype
Posted: April 19, 2018 at 21:37

One thing to have fun:
When I saw the mass update in current’s ChangeLog, I remembered this post and I imagined that the following thought would pass through Eric’s head: here we go again… 😀 😀 😀

Comment from burdi01
Posted: April 20, 2018 at 11:31

Note the Apr 19 mass update also contains a so version bump for boost. Libreoffice now fails for /usr/lib64/libboost_{chrono,filesystem,iostreams,locale,system,thread}.so.1.66.0 …
😀

Comment from alienbob
Posted: April 20, 2018 at 13:51

I know. Everything in due time… Plasma5 is at the top of the list.

Comment from Darth Vader
Posted: April 20, 2018 at 14:24

I hope that you had been aware by the gpgme update in useful time and it does not ended in a build restart…

Comment from alienbob
Posted: April 20, 2018 at 15:03

Yes, Patrick warned me that a gpgme upgrade with a .so library version bump was added to the tree last night, and informed me which packages he had to recompile. So I did not lose much time, just had to update my own gpgme.SlackBuild which includes the Qt5 bindings.

Comment from kjhambrick
Posted: April 22, 2018 at 13:19

alienbob —

Thanks for the qt5 and LibreOffice Updates for current.

Upgraded both this morning on Slackware64 14.2+current and both work very well.

Thanks again.

— kjh

Write a comment