Backport uuid based cache file naming scheme

Bug #1803534 reported by James Henstridge on 2018-11-15
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
fontconfig (Ubuntu)
Undecided
Unassigned
Bionic
Undecided
Unassigned

Bug Description

Fontconfig 2.13.0 changed the cache file naming scheme to be based on the contents of ".uuid" file in the directory rather than a hash of the directory name. On a pure debs system this doesn't really matter since everything is using the same libfontconfig.so.

When snaps are involved, it can lead to some apps not seeing the cache files produced by a different fontconfig version. In particular, while libfontconfig 2.13 can reuse 2.12's cache files for read only directories, the reverse is not true. This will be a problem for apps built on top of the "core18" base snap when run on later Ubuntu releases (cosmic, disco, etc).

By providing a backport of the UUID cache file feature to bionic for use by snap applications, we'd avoid this. Having it in bionic-updates would be ideal so that snapcraft picks it up automatically.

[Impact]

 * This update changes how fontconfig cache files are named, instead of using md5($dir), it instead uses the contents of a $dir/.uuid file. No changes are made to the format of the cache file contents.

 * This change is primarily intended for use by snap applications built with core18: as the updated libfontconfig will fall back to the md5 cache file names for read-only directories without a .uuid file, they will be able to reuse cache files from any host system running fontconfig >= 2.11.95

[Test Case]

 * After installing the update, cache files should be generated in /var/cache/fontconfig/ with names like "07b67f7a-16ea-4440-9b6c-21fc9153568c-le64.cache-7" (note the extra dashes not present in the MD5 based cache file names).

[Regression Potential]

 * Applications using a non-default libfontconfig could end up not finding the new cache files and regenerating them in ~/.cache/fontconfig.

James Henstridge (jamesh) wrote :

A backport of the UUID cache file directory feature from fontconfig 2.13.

The attachment "fontconfig_2.12.6-0ubuntu2_2.12.6-0ubuntu3.diff" seems to be a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. If the attachment isn't a patch, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are member of the ~ubuntu-sponsors, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issue please contact him.]

tags: added: patch
description: updated

Hello James, or anyone else affected,

Accepted fontconfig into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/fontconfig/2.12.6-0ubuntu2.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in fontconfig (Ubuntu Bionic):
status: New → Fix Committed
tags: added: verification-needed verification-needed-bionic
Timo Aaltonen (tjaalton) wrote :

please test your builds before uploading.. it FTBFS everywhere

Ken VanDine (ken-vandine) wrote :

Sorry about that, I uploaded 2.12.6-0ubuntu2.2 yesterday which fixes this.

Brian Murray (brian-murray) wrote :

Hello James, or anyone else affected,

Accepted fontconfig into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/fontconfig/2.12.6-0ubuntu2.2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Sebastien Bacher (seb128) wrote :

The SRU regressed autopkgtests; one example on gtk

https://objectstorage.prodstack4-5.canonical.com/v1/AUTH_77e2ada1e7a84929a74ba3b87153c0ac/autopkgtest-bionic/bionic/amd64/g/gtk+3.0/20181127_225405_35f5b@/log.gz

"Package uuid was not found in the pkg-config search path.
Perhaps you should add the directory containing `uuid.pc'
to the PKG_CONFIG_PATH environment variable"

It looks like libfontconfig1-dev needs a depend on uuid-dev which was overlooked in the SRU

Marking that version as verification-failed

tags: added: verification-failed verification-failed-bionic
removed: verification-needed verification-needed-bionic
Sebastien Bacher (seb128) wrote :

(I've deleted that SRU from bionic-proposed because it was making other SRUs failing to build)

Ken VanDine (ken-vandine) wrote :

I've uploaded 2.12.6-0ubuntu2.3 making libfontconfig1-dev depend on uuid-dev

Łukasz Zemczak (sil2100) wrote :

Hello James, or anyone else affected,

Accepted fontconfig into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/fontconfig/2.12.6-0ubuntu2.3 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

tags: added: verification-needed verification-needed-bionic
removed: verification-failed verification-failed-bionic
Jani Uusitalo (uusijani) wrote :

I've hit an issue, which I believe I've now isolated to have come from upgrading fontconfig (and related packages) from 2.12.6-0ubuntu2 to 2.12.6-0ubuntu2.3 from -proposed: if I start Firefox and afterwards start Gparted or Synaptic, Firefox starts eating up all of my CPU. Eventually all letters in the Gparted/Synaptic UI turn into boxes.

Syslog typically then says something like below:

Dec 4 13:41:50 saegusa synaptic.desktop[30027]: (synaptic:30028): Pango-WARNING **: 13:41:50.995: failed to create cairo scaled font, expect ugly output. the offending font is 'DejaVu Sans 11'
Dec 4 13:41:50 saegusa synaptic.desktop[30027]: (synaptic:30028): Pango-WARNING **: 13:41:50.995: font_face status is: out of memory
Dec 4 13:41:50 saegusa synaptic.desktop[30027]: (synaptic:30028): Pango-WARNING **: 13:41:50.995: scaled_font status is: out of memory
Dec 4 13:41:50 saegusa synaptic.desktop[30027]: (synaptic:30028): Pango-WARNING **: 13:41:50.995: shaping failure, expect ugly output. shape-engine='PangoFcShapeEngine', font='DejaVu Sans 11', text='Päivitä'
Dec 4 13:41:51 saegusa synaptic.desktop[30027]: (synaptic:30028): Pango-WARNING **: 13:41:51.007: failed to create cairo scaled font, expect ugly output. the offending font is 'DejaVu Sans 11'
Dec 4 13:41:51 saegusa synaptic.desktop[30027]: (synaptic:30028): Pango-WARNING **: 13:41:51.007: font_face status is: out of memory
Dec 4 13:41:51 saegusa synaptic.desktop[30027]: (synaptic:30028): Pango-WARNING **: 13:41:51.007: scaled_font status is: out of memory

The computer has 32 GB of memory and there's plenty still usable when this occurs, so the OOM seems incorrect to me.

To be sure, I rolled back entirely from -proposed (which caused the issue to go away), then re-enabled -proposed and upgraded just fontconfig, and the issue reappeared.

Sebastien Bacher (seb128) wrote :

I installed 'fontconfig' from proposed and the package installation failed on that error
'fc-cache: symbol lookup error: fc-cache: undefined symbol: FcDirCacheCreateUUID'

It looks like the fontconfig binary should depends on the new version of the lib and doesn't?

tags: added: verification-failed verification-failed-bionic
removed: verification-needed verification-needed-bionic
Sebastien Bacher (seb128) wrote :

The CPU regression looks similar to https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=909818#90 which has been fixed in https://gitlab.freedesktop.org/fontconfig/fontconfig/commit/5f12f564 , we should probably backport that one

Ken VanDine (ken-vandine) wrote :

Marked this as invalid for now. The fontconfig improvements in snapd 2.36.2 seem to have fixed the snap startup issues. Without this SRU there are some additional cache files generated, but that should be fine just some extra noise.

Changed in fontconfig (Ubuntu Bionic):
status: Fix Committed → Invalid
Changed in fontconfig (Ubuntu):
status: New → Invalid
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.