Bug#987587: libpango1.0-udeb: hangs the installer in various situations

Cyril Brulebois kibi at debian.org
Thu Apr 29 17:54:56 BST 2021

Cyril Brulebois <kibi at debian.org> (2021-04-29):
> This time around, testing 1.43.0 with debian/ carried over from
> debian/1.42.4-8, adjusted for docs (some files are missing) and symbols
> (one new symbol), the problem cannot be triggered in an obvious manner.
> Moving to 1.44* tags now.

Alright, I think I'm hitting my limits here.

Versions 1.44, 1.44.2, and 1.44.3 all fail in a similar way:

    [39/144] cc -Ipango/libpangoft2-1.0.so.0.4400.0.p -Ipango -I../pango -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/uuid -I/usr/include/cairo -I/usr/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=gnu99 -D_POSIX_C_SOURCE=200809L -D_POSIX_THREAD_SAFE_FUNCTIONS -D_GNU_SOURCE -g -O2 -ffile-prefix-map=/home/kibi/hack/pango1.0.git=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Wimplicit-function-declaration -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wno-int-conversion -Wno-discarded-qualifiers -fno-strict-aliasing -Wpointer-arith -Wmissing-declarations -Wformat=2 -Wformat-nonliteral -Wformat-security -Wunused -Wcast-align -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-include-dirs -Wlogical-op -Wno-uninitialized -Wno-shadow -Werror=implicit -Werror=nonnull -Werror=init-self -Werror=main -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=trigraphs -Werror=array-bounds -Werror=write-strings -Werror=address -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=empty-body -Werror=write-strings -Wundef -Werror=redundant-decls -fvisibility=hidden '-DG_LOG_DOMAIN="Pango"' -DG_LOG_USE_STRUCTURED=1 -DPANGO_COMPILATION '-DSYSCONFDIR="/etc"' '-DLIBDIR="/usr/lib/x86_64-linux-gnu"' -DPANGO_DISABLE_DEPRECATION_WARNINGS -MD -MQ pango/libpangoft2-1.0.so.0.4400.0.p/pangofc-font.c.o -MF pango/libpangoft2-1.0.so.0.4400.0.p/pangofc-font.c.o.d -o pango/libpangoft2-1.0.so.0.4400.0.p/pangofc-font.c.o -c ../pango/pangofc-font.c
    FAILED: pango/libpangoft2-1.0.so.0.4400.0.p/pangofc-font.c.o 
    cc -Ipango/libpangoft2-1.0.so.0.4400.0.p -Ipango -I../pango -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/uuid -I/usr/include/cairo -I/usr/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=gnu99 -D_POSIX_C_SOURCE=200809L -D_POSIX_THREAD_SAFE_FUNCTIONS -D_GNU_SOURCE -g -O2 -ffile-prefix-map=/home/kibi/hack/pango1.0.git=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Wimplicit-function-declaration -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wno-int-conversion -Wno-discarded-qualifiers -fno-strict-aliasing -Wpointer-arith -Wmissing-declarations -Wformat=2 -Wformat-nonliteral -Wformat-security -Wunused -Wcast-align -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-include-dirs -Wlogical-op -Wno-uninitialized -Wno-shadow -Werror=implicit -Werror=nonnull -Werror=init-self -Werror=main -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=trigraphs -Werror=array-bounds -Werror=write-strings -Werror=address -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=empty-body -Werror=write-strings -Wundef -Werror=redundant-decls -fvisibility=hidden '-DG_LOG_DOMAIN="Pango"' -DG_LOG_USE_STRUCTURED=1 -DPANGO_COMPILATION '-DSYSCONFDIR="/etc"' '-DLIBDIR="/usr/lib/x86_64-linux-gnu"' -DPANGO_DISABLE_DEPRECATION_WARNINGS -MD -MQ pango/libpangoft2-1.0.so.0.4400.0.p/pangofc-font.c.o -MF pango/libpangoft2-1.0.so.0.4400.0.p/pangofc-font.c.o.d -o pango/libpangoft2-1.0.so.0.4400.0.p/pangofc-font.c.o -c ../pango/pangofc-font.c
    ../pango/pangofc-font.c: In function ‘get_face_metrics’:
    ../pango/pangofc-font.c:371:44: error: ‘HB_OT_METRICS_UNDERLINE_SIZE’ undeclared (first use in this function); did you mean ‘HB_OT_METRICS_TAG_UNDERLINE_SIZE’?
      371 |   if (hb_ot_metrics_get_position (hb_font, HB_OT_METRICS_UNDERLINE_SIZE, &position))
          |                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                                            HB_OT_METRICS_TAG_UNDERLINE_SIZE
    ../pango/pangofc-font.c:371:44: note: each undeclared identifier is reported only once for each function it appears in
    ../pango/pangofc-font.c:374:44: error: ‘HB_OT_METRICS_UNDERLINE_OFFSET’ undeclared (first use in this function); did you mean ‘HB_OT_METRICS_TAG_UNDERLINE_OFFSET’?
      374 |   if (hb_ot_metrics_get_position (hb_font, HB_OT_METRICS_UNDERLINE_OFFSET, &position))
          |                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                                            HB_OT_METRICS_TAG_UNDERLINE_OFFSET
    ../pango/pangofc-font.c:377:44: error: ‘HB_OT_METRICS_STRIKEOUT_SIZE’ undeclared (first use in this function); did you mean ‘HB_OT_METRICS_TAG_STRIKEOUT_SIZE’?
      377 |   if (hb_ot_metrics_get_position (hb_font, HB_OT_METRICS_STRIKEOUT_SIZE, &position))
          |                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                                            HB_OT_METRICS_TAG_STRIKEOUT_SIZE
    ../pango/pangofc-font.c:380:44: error: ‘HB_OT_METRICS_STRIKEOUT_OFFSET’ undeclared (first use in this function); did you mean ‘HB_OT_METRICS_TAG_STRIKEOUT_OFFSET’?
      380 |   if (hb_ot_metrics_get_position (hb_font, HB_OT_METRICS_STRIKEOUT_OFFSET, &position))
          |                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                                            HB_OT_METRICS_TAG_STRIKEOUT_OFFSET

Version 1.44.4 is the first one I was able to build, using the packaging
from debian/1.44.6-1 (first 1.44.x version that was packaged and that's
also known to be buggy).

This would suggest the regression in caused by something in here:

    Overview of changes in 1.44.4
    - Add an insert-hyphens attribute
    - Reinstate the return type of pango_fc_font_lock_face
    - Fix a problem with ellipses getting the wrong font
    - fc: Improve filtering by font format
    - Re-add PangoFcFont to public headers
    - Install PangoFc and PangoOT introspection files
    - Fix ink rectangles to have positive height
    - Fix mark positioning
    - Switch to using harfbuzz for metrics
    Overview of changes in 1.44.3
    - Install pango-ot headers
    - Make subpixel positioning optional
    - fc: Ignore fonts with unsupported formats
    Overview of changes in 1.44.2
    - Disable ligatures when letterspacing
    - Set design coords on hb_font_t
    - Expose more font options in pango-view
    - OS X: Make 'system-ui' font work
    - Keep deprecated pango-fc apis in headers
    - Make hex boxes work, always
    - introspection: Various build fixes
    - introspection: Add PangoPT, PangoFT2 namespaces
    - layout: Make the new line-spacing opt-in
    Overview of changes in 1.44.1
    - Fix a crash with allow_break attributes
    - Fix Emoji spacing
    - Fix up includes and pkg-config requires
    - Correct some cases for hyphen insertion
    Overview of changes in 1.44.0
    - Use harfbuzz for shaping on all platforms
    - Stop using freetype for font loading; this
        drops support for type1 and bitmap fonts
    - Add a getter for hb_font_t
    - Make PangoCoverage a GObject
    - Add a pango_tailor_break api
    - font metrics: Add line height
    - layout: Support line spacing
    - layout: Draw hyphens for line breaks
    - Add an attribute to suppress line breaking
    - cairo: Don't render hex boxes for space
    - Add an attribute to show invisible characters
    - Stop quantizing glyph positions
    - Add tests for itemization and line breaking
    - Remove language and shape engine remnants
    - Rename meson options: gtk_doc, introspection
    - Require GLib 2.59.2
    - Require Harfbuzz 2.0

but as mentioned initially, I don't think I can go deeper in my “blind”
(I don't know anything about pango or rendering in general) bisection of

At first, the upstream/fix-deadlocks* branches sounded promising,
especially with such a commit message:

    Fix hangs that people have observed

but those are regression fixes in the 1.48.x series, and a quick look
around in previous versions doesn't seem to show similar initialization
routines, so someone else is likely happening in 1.44.x…

Help/pointers appreciated.

Cyril Brulebois (kibi at debian.org)            <https://debamax.com/>
D-I release manager -- Release team member -- Freelance Consultant
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-gnome-maintainers/attachments/20210429/4025f572/attachment.sig>

More information about the pkg-gnome-maintainers mailing list