Control: reassign -1 terminator 2.1.0-2

Hi Timo,

* Timo Röhling <roehl...@debian.org> [2021-11-05 14:51]:
On Sat, 23 Oct 2021 22:41:30 +0200 Lucas Nussbaum <lu...@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@entry=0xbc3100, provider=provider@entry=0x0, 
style=style@entry=0xbc4090, parent_style=parent_style@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@entry=0xbc3000, 
params=params@entry=0x0, n_params=n_params@entry=0) at 
../../../gobject/gobject.c:1939
#9  0x00007ffff77721fd in g_object_new_with_properties (object_type=11724208, 
n_properties=0, names=names@entry=0x0, values=values@entry=0x0) at 
../../../gobject/gobject.c:2108
#10 0x00007ffff7772bb1 in g_object_new (object_type=<optimized out>, 
first_property_name=first_property_name@entry=0x0) at ../../../gobject/gobject.c:1779
#11 0x00007ffff5a5800b in gtk_css_widget_node_new 
(widget=widget@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@entry=0xbc0800, 
params=params@entry=0x0, n_params=n_params@entry=0) at 
../../../gobject/gobject.c:1939
#15 0x00007ffff77721fd in g_object_new_with_properties (object_type=10410752, 
n_properties=n_properties@entry=0, names=names@entry=0x0, 
values=values@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@entry=0x7ffff53eafc0, 
n_properties=n_properties@entry=0, names=names@entry=0x0, 
values=values@entry=0x0) at gi/gimodule.c:1049
#18 0x00007ffff791ea7d in pygobject_init (self=self@entry=0x7ffff53eafc0, 
args=args@entry=0x7ffff7baa040, kwargs=kwargs@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@entry=0x0, 
argcount=argcount@entry=0, kwnames=kwnames@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

Attachment: signature.asc
Description: PGP signature

Reply via email to