ImageMagick: please pull in patch to stabilize API on s390x during upgrade to glibc 2.33 (Ubuntu 21.04)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu on IBM z Systems |
Fix Released
|
Undecided
|
Skipper Bug Screeners | ||
imagemagick (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
On s390x, the type float_t has historically been defined as double for no good reason, yet with unexpected and unnecessary impact on performance in some scenarios. glibc 2.33 will be a first step towards cleaning that up, which will change float_t to become float on s390x when compiling with compiler flags as used in the ImageMagick binary. That would break the ABI of ImageMagick for HDRI=1 on s390x for existing binaries.
To avoid that breakage, ImageMagick upstream has fixed the relevant internal type to always be double on s390x since version 7.0.10-39, so that the API/ABI for HDRI=1 remains as it is today, independent of a change in float_t. The merged patch can trivially be backported to ImageMagick version 6.9.x in Ubuntu today (will apply a patch; original PR https:/
Background: Today's combination of gcc's default behavior and float_t being double on s390x contradicts the C standard. ImageMagick captures the sizeof(float_t) at compile-time of the library in magick-
Changes to float_t thus would result in a different ABI. Once ImageMagick is rebuilt with HDRI=1 and an updated gcc/glibc, Quantum would then become 32-bit float. Existing binaries and libraries would expect 64-bit double and thus cease to work with newly built version of the library.
Upstream commit with fixed path (MagickCore/
This minor patch avoids interoperability issues with the adoption of glibc 2.33. that glibc release contains one component for cleaning up float_t on s390x, which will eventually reduce performance overhead.
tags: | added: fr-1086 |
Changed in imagemagick (Ubuntu): | |
status: | Incomplete → In Progress |
Changed in ubuntu-z-systems: | |
status: | Triaged → In Progress |
Changed in ubuntu-z-systems: | |
status: | In Progress → Fix Released |
Default Comment by Bridge