Re: Bug#987587: libpango1.0-udeb: hangs the installer in various situations
On Mon, 03 May 2021 at 17:17:21 +0100, Simon McVittie wrote:
> I've also been able to attach a debugger to debconf. My preliminary finding
> is: we enter gtk_container_idle_sizer() in GTK 2 and never exit, because
> every time we go into gtk_container_check_resize(), we end up in
> gtk_text_layout_emit_changed() which emits a signal that eventually calls
> _gtk_container_queue_resize(), so gtk_container_idle_sizer() has more work
> to do and we loop indefinitely.
> My next step is going to be to try to hack Harfbuzz to disable the Indic
> shaper (which is what seems to be in use here) and see whether that stops
> the infinite loop. That's unlikely to be an acceptable solution, but it'll
> at least tell us whether the Indic shaper is what's triggering this.
Yes, this worked! If I disable the Indic shaper with the attached hack,
that seems to be enough to make installation proceed.
Again, this is probably not an acceptable solution: Harfbuzz has shapers
for complex scripts for a reason, and I suspect someone who can speak
the relevant language would find the text either ugly or unreadable
when using the default shaper. However, I hope this does at least point
someone who knows more about the mechanics of text rendering and/or GTK
relayout in the right direction...
I think the reason this regressed between Pango 1.43.0 and 1.44.0 might
just be that Pango 1.44.0 uses Harfbuzz to implement more of its own
From: Simon McVittie <email@example.com>
Date: Mon, 3 May 2021 17:02:50 +0100
Subject: HACK: Disable Indic shaper
This appears to trigger a relayout loop in GTK 2 in the d-i environment.
src/hb-ot-shape-complex.hh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/hb-ot-shape-complex.hh b/src/hb-ot-shape-complex.hh
index a1a7a6a..6c82b87 100644
@@ -263,7 +263,7 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
else if ((planner->map.chosen_script & 0x000000FF) == '3')
- return &_hb_ot_complex_shaper_indic;
+ return &_hb_ot_complex_shaper_default;