Aug 18, 2011

Updating glibc to 2.14 with some libtirpc fun

The GNU C Library (glibc) version 2.14 was released on the 31th of May but we haven't switched to it for openSUSE yet since one of the major changes was the obsoletion of the sunrpc code in glibc and that caused problems. The TI-RPC library (libtirpc) is the proposed replacement of the sunrpc code. One benefit of the TI-RPC library is that it supports - unlike the old sunrpc code in glibc - IPv6. libtirpc is used successfully already by a couple of Open Source projects like autofs or nfs. Unfortunately some code in libtirpc seems to be broken, like the NIS support. The package missed also some header files to make it a full replacement but those can be easily copied over from glibc. So, building everything with libtirpc instead of glibc' sunrpc code was not possible, and the libtirpc developers seemed not to be interested in helping here.

So, I've took now the same route that Fedora did and reenabled the sunrpc code in glibc again and thus everything works as before. I encourage everybody that has packages that work with libtirpc to switch to it - and help changing apps and libtirpc itself as needed so that eventually we really can obsolete glibc's sunrpc code.

Today, the updated glibc has been submitted and checked into openSUSE's Factory distribution and thus will be in openSUSE 12.1.

The new glibc contains lots of bugfixes and also these changes (full list):
New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at, syncfs, setns, sendmmsg

* New locales: os_RU, bem_ZA, en_ZA, ff_SN, sw_KE, sw_TZ, lb_LU, wae_CH, yue_HK, lij_IT, mhr_RU

* New encodings: CP770, CP771, CP772, CP773, CP774

* New program sotruss to trace calls through PLTs. Implemented by Ulrich Drepper.

* The malloc hook implementation is marked deprecated and will be removed from the default implementation in the next version. The design never worked ever since the introduction of threads. Even programs which do not create threads themselves can use multiple threads created internally.

After installing the newly build library on my own system I noticed that LibreOffice crashed and added a bandaid fix that my colleague Michael Matz developed already for glibc 2.11.2 which contained a backport of the buggy change. The submitted glibc contains this fix as well.