Bug#997504: terminator: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 returned exit code 13

Jochen Sprickerhof jspricke at debian.org
Sun Nov 28 14:30:10 GMT 2021


Control: reassign -1 terminator 2.1.0-2

Hi Timo,

* Timo Röhling <roehling at debian.org> [2021-11-05 14:51]:
>On Sat, 23 Oct 2021 22:41:30 +0200 Lucas Nussbaum <lucas at debian.org> wrote:
>>> collecting ... Trace/breakpoint trap
>>> E: pybuild pybuild:354: test: plugin distutils failed with: exit code=133: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest --doctest-modules
>>> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 returned exit code 13
>I investigated this failure a bit and found that there seems to be a
>segfault on instantiating terminal.Terminal(), which looks like it
>is caused by the bindings in python3-gi.
>
>I assume so because I found that the error also occurs with older
>terminator versions in unstable, but not with the latest terminator
>version in a bullseye chroot.
>
>For reference, the error in unstable can be reproduced in an interactive
>Python session (I ran "gdb /usr/bin/python3" to get a stacktrace):
>
>  >>> from terminatorlib import terminal
>  /build/terminator-2.1.0/terminatorlib/terminal.py:9: PyGIWarning: Pango was imported without specifying a version first. Use gi.require_version('Pango', '1.0') before import to ensure that the right version gets loaded.
>    from gi.repository import GLib, GObject, Pango, Gtk, Gdk, GdkPixbuf
>  /build/terminator-2.1.0/terminatorlib/terminal.py:9: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
>    from gi.repository import GLib, GObject, Pango, Gtk, Gdk, GdkPixbuf
>  >>> t = terminal.Terminal()
>  (.:106187): Gtk-CRITICAL **: 13:00:40.235: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed
>  (.:106187): Gtk-CRITICAL **: 13:00:40.235: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed
>  (.:106187): Gtk-CRITICAL **: 13:00:40.235: _gtk_style_provider_private_get_settings: assertion 'GTK_IS_STYLE_PROVIDER_PRIVATE (provider)' failed
>  Program received signal SIGSEGV, Segmentation fault.
>  0x00007ffff5a98a80 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
>  (gdb) bt
>  #0  0x00007ffff5a98a80 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0

[..]

You can get a meaningful backtrace by enabling debug symbols, either by 
installing the dbgsym packages or by:

export DEBUGINFOD_URLS="https://debuginfod.debian.net"

With this I get:

#0  _gtk_settings_get_screen (settings=0x0) at ../../../../gtk/gtksettings.c:3360
#1  0x00007ffff5a2de84 in gtk_css_value_icon_theme_compute (icon_theme=<optimized out>, property_id=<optimized out>, provider=<optimized out>, style=<optimized out>, parent_style=<optimized out>)
     at ../../../../gtk/gtkcssiconthemevalue.c:84
#2  0x00007ffff5a4f658 in gtk_css_static_style_compute_value (style=0xbc4090, provider=0x0, parent_style=<optimized out>, id=3, specified=0x7ffff60d1e20 <inherit>, section=0x0) at ../../../../gtk/gtkcssstaticstyle.c:237
#3  0x00007ffff5a39dca in _gtk_css_lookup_resolve (lookup=lookup at entry=0xbc3100, provider=provider at entry=0x0, style=style at entry=0xbc4090, parent_style=parent_style at entry=0x0) at ../../../../gtk/gtkcsslookup.c:122
#4  0x00007ffff5a4f528 in gtk_css_static_style_new_compute (parent=0x0, matcher=0x0, provider=0x0) at ../../../../gtk/gtkcssstaticstyle.c:195
#5  gtk_css_static_style_get_default () at ../../../../gtk/gtkcssstaticstyle.c:164
#6  0x00007ffff5a3a712 in gtk_css_node_init (cssnode=0xbc0510) at ../../../../gtk/gtkcssnode.c:667
#7  0x00007ffff778aae3 in g_type_create_instance (type=<optimized out>) at ../../../gobject/gtype.c:1923
#8  0x00007ffff7770cbd in g_object_new_internal (class=class at entry=0xbc3000, params=params at entry=0x0, n_params=n_params at entry=0) at ../../../gobject/gobject.c:1939
#9  0x00007ffff77721fd in g_object_new_with_properties (object_type=11724208, n_properties=0, names=names at entry=0x0, values=values at entry=0x0) at ../../../gobject/gobject.c:2108
#10 0x00007ffff7772bb1 in g_object_new (object_type=<optimized out>, first_property_name=first_property_name at entry=0x0) at ../../../gobject/gobject.c:1779
#11 0x00007ffff5a5800b in gtk_css_widget_node_new (widget=widget at entry=0xbc1140) at ../../../../gtk/gtkcsswidgetnode.c:302
#12 0x00007ffff5c41dd9 in gtk_widget_init (instance=0xbc1140, g_class=0xbc0800) at ../../../../gtk/gtkwidget.c:4468
#13 0x00007ffff778aae3 in g_type_create_instance (type=<optimized out>) at ../../../gobject/gtype.c:1923
#14 0x00007ffff7770cbd in g_object_new_internal (class=class at entry=0xbc0800, params=params at entry=0x0, n_params=n_params at entry=0) at ../../../gobject/gobject.c:1939
#15 0x00007ffff77721fd in g_object_new_with_properties (object_type=10410752, n_properties=n_properties at entry=0, names=names at entry=0x0, values=values at entry=0x0) at ../../../gobject/gobject.c:2108
#16 0x00007ffff7900e17 in pygobject_object_new_with_properties (values=0x0, names=0x0, n_properties=0, object_type=<optimized out>) at gi/gimodule.c:1019
#17 pygobject_constructv (self=self at entry=0x7ffff53eafc0, n_properties=n_properties at entry=0, names=names at entry=0x0, values=values at entry=0x0) at gi/gimodule.c:1049
#18 0x00007ffff791ea7d in pygobject_init (self=self at entry=0x7ffff53eafc0, args=args at entry=0x7ffff7baa040, kwargs=kwargs at entry=0x7ffff6cef9c0) at gi/pygobject-object.c:1343
#19 0x00000000005bbd2c in wrap_init (kwds=0x7ffff6cef9c0, wrapped=0x7ffff791e8b0 <pygobject_init>, args=0x7ffff7baa040, self=0x7ffff53eafc0) at ../Objects/typeobject.c:6184
#20 wrapperdescr_raw_call (kwds=0x7ffff6cef9c0, args=0x7ffff7baa040, self=0x7ffff53eafc0, descr=<optimized out>) at ../Objects/descrobject.c:510
#21 wrapperdescr_call (descr=<optimized out>, args=0x7ffff7baa040, kwds=0x7ffff6cef9c0) at ../Objects/descrobject.c:556
#22 0x0000000000537ab9 in _PyObject_Call (kwargs=<optimized out>, args=0x7ffff7182400, callable=0x7ffff72e93b0, tstate=0x94ef00) at ../Objects/call.c:281
#23 PyObject_Call (callable=0x7ffff72e93b0, args=0x7ffff7182400, kwargs=<optimized out>) at ../Objects/call.c:293
#24 0x0000000000511ac6 in do_call_core (kwdict=0x7ffff6cef9c0, callargs=0x7ffff7182400, func=0x7ffff72e93b0, tstate=<optimized out>) at ../Python/ceval.c:5123
#25 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3580
#26 0x000000000050e2d1 in _PyEval_EvalFrame (throwflag=0, f=0xbc0c30, tstate=0x94ef00) at ../Include/internal/pycore_ceval.h:40
#27 _PyEval_EvalCode (tstate=<optimized out>, _co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=<optimized out>, kwcount=<optimized out>,
     kwstep=1, defs=<optimized out>, defcount=<optimized out>, kwdefs=0x0, closure=0x7ffff5421040, name=0x7ffff730a370, qualname=0x7ffff72f8c90) at ../Python/ceval.c:4327
#28 0x0000000000525f3b in _PyFunction_Vectorcall (func=<optimized out>, stack=0x7fffffffdef0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:396
#29 0x00000000005333c6 in _PyObject_FastCallDictTstate (kwargs=0x0, nargsf=<optimized out>, args=0x7fffffffdef0, callable=0x7ffff5412a60, tstate=0x94ef00) at ../Objects/call.c:118
#30 _PyObject_Call_Prepend (kwargs=<optimized out>, args=<optimized out>, obj=<optimized out>, callable=0x7ffff5412a60, tstate=0x94ef00) at ../Objects/call.c:489
#31 slot_tp_init (self=<optimized out>, args=<optimized out>, kwds=<optimized out>) at ../Objects/typeobject.c:6964
#32 0x000000000051aedf in type_call (kwds=0x0, args=0x7ffff7baa040, type=<optimized out>) at ../Objects/typeobject.c:1026
#33 _PyObject_MakeTpCall (tstate=0x94ef00, callable=0xbb2c10, args=<optimized out>, nargs=<optimized out>, keywords=<optimized out>) at ../Objects/call.c:191
#34 0x0000000000514b74 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x9a94e0, callable=0xbb2c10, tstate=<optimized out>) at ../Include/cpython/abstract.h:116
#35 _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x9a94e0, callable=0xbb2c10, tstate=<optimized out>) at ../Include/cpython/abstract.h:103
#36 PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x9a94e0, callable=0xbb2c10) at ../Include/cpython/abstract.h:127
#37 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x94ef00) at ../Python/ceval.c:5075
#38 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3518
#39 0x000000000050e2d1 in _PyEval_EvalFrame (throwflag=0, f=0x9a9370, tstate=0x94ef00) at ../Include/internal/pycore_ceval.h:40
#40 _PyEval_EvalCode (tstate=<optimized out>, _co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=<optimized out>, kwcount=<optimized out>,
     kwstep=2, defs=<optimized out>, defcount=<optimized out>, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4327
#41 0x000000000050e047 in _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=args at entry=0x0, argcount=argcount at entry=0, kwnames=kwnames at entry=0x0, kwargs=0x0, kwcount=0, kwstep=2,
     defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4359
#42 0x000000000050dff3 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0, locals=<optimized out>, globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4375
#43 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at ../Python/ceval.c:826
#44 0x00000000006282f7 in run_eval_code_obj (tstate=0x94ef00, co=0x7ffff7ab20e0, globals=0x7ffff7b16840, locals=0x7ffff7b16840) at ../Python/pythonrun.c:1221
#45 0x00000000006251e0 in run_mod (mod=<optimized out>, filename=<optimized out>, globals=0x7ffff7b16840, locals=0x7ffff7b16840, flags=<optimized out>, arena=<optimized out>) at ../Python/pythonrun.c:1242
#46 0x0000000000627d19 in pyrun_file (fp=0x94b340, filename=0x7ffff7b19b20, start=<optimized out>, globals=0x7ffff7b16840, locals=0x7ffff7b16840, closeit=1, flags=0x7fffffffe388) at ../Python/pythonrun.c:1140
#47 0x0000000000627993 in pyrun_simple_file (flags=0x7fffffffe388, closeit=1, filename=0x7ffff7b19b20, fp=0x94b340) at ../Python/pythonrun.c:450
#48 PyRun_SimpleFileExFlags (fp=0x94b340, filename=<optimized out>, closeit=1, flags=0x7fffffffe388) at ../Python/pythonrun.c:483
#49 0x000000000061f132 in pymain_run_file (cf=0x7fffffffe388, config=0x94db00) at ../Modules/main.c:373
#50 pymain_run_python (exitcode=0x7fffffffe380) at ../Modules/main.c:598
#51 Py_RunMain () at ../Modules/main.c:677
#52 0x0000000000606df9 in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:731
#53 0x00007ffff7c65e4a in __libc_start_main (main=0x606dc0 <main>, argc=2, argv=0x7fffffffe578, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe568) at ../csu/libc-start.c:314
#54 0x0000000000606cfa in _start ()

I also reduced the code to:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import GObject, Gtk

class Terminal(Gtk.VBox):
     pass

GObject.type_register(Terminal)
Terminal()

And while this clearly does not involve terminator, I can only reproduce 
this on the console, whereas in an X session, with $DISPLAY set, it is 
not reproducible. Just as well terminator fails to build in sbuild but 
builds fine with dpkg-buildpackage in an X session. But even more this 
also fails in a bullseye chroot so this is all a red hearing.

The actual problem is that libgtk-3-0 version 3.24.30-1 drops the 
dependency on librest-0.7-0 which brought in gsettings-desktop-schemas 
which seems to be the missing build dependency as this works for unstable:

sbuild terminator --add-depends gsettings-desktop-schemas

Assigning back, accordingly, though I'm not sure if there should be an 
other bug for python3-gi or the gtk backtrace above.

Cheers Jochen
-------------- 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/20211128/09e5cdbe/attachment-0001.sig>


More information about the pkg-gnome-maintainers mailing list