Broke fwupd build
A recent pygobject change broke the fwupd build:
[66/415] Generating plugins/uefi-capsule/ux-capsule-tar with a custom command
1887 FAILED: plugins/uefi-capsule/uefi-capsule-ux.tar.xz
1888 /usr/bin/python3 /buildstream/gnome/core-deps/fwupd.bst/plugins/uefi-capsule/make-images.py --podir /buildstream/gnome/core-deps/fwupd.bst/po --label 'Installing firmware update…' --out plugins/uefi-capsule/uefi-capsule-ux.tar.xz
It's crashing. Backtrace:
0x00007fffef691010 in ?? ()
(gdb) bt
#0 0x00007fffef691010 in ()
#1 0x00007ffff06fa6a1 in pango_fc_fontset_foreach (fontset=0x5555557e2f20 [PangoFcFontset], func=0x7fffef691010, data=0x555555871f70) at ../pango/pangofc-fontmap.c:1308
#2 0x00007ffff6a8b056 in ffi_call_unix64 () at ../src/x86/unix64.S:105
#3 0x00007ffff6a8907b in ffi_call_int (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>)
at ../src/x86/ffi64.c:672
#4 0x00007ffff6b637f6 in pygi_invoke_c_callable (function_cache=0x5555557d9a50, state=<optimized out>, py_args=<optimized out>, py_kwargs=<optimized out>)
at ../gi/pygi-invoke.c:684
#5 0x00007ffff6b656d1 in pygi_function_cache_invoke (function_cache=<optimized out>, py_args=py_args@entry=0x7ffff6697bc0, py_kwargs=py_kwargs@entry=0x0)
at ../gi/pygi-cache.c:862
#6 0x00007ffff6b64148 in pygi_callable_info_invoke (user_data=0x0, cache=<optimized out>, kwargs=0x0, py_args=0x7ffff6697bc0, info=<optimized out>)
at ../gi/pygi-invoke.c:727
#7 0x00007ffff6b54c86 in _callable_info_call (self=0x7ffff64adc30, args=0x7ffff6615400, kwargs=0x0) at ../gi/pygi-info.c:548
#8 0x00007ffff7d7b06c in _PyObject_MakeTpCall
(tstate=0x5555555601b0, callable=callable@entry=0x7ffff64adc30, args=args@entry=0x5555557f07f0, nargs=<optimized out>, keywords=keywords@entry=0x0)
at ../Objects/call.c:215
#9 0x00007ffff7cb87f1 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=9223372036854775810, args=0x5555557f07f0, callable=0x7ffff64adc30, tstate=<optimized out>)
at ../Include/cpython/abstract.h:112
#10 _PyObject_VectorcallTstate (kwnames=0x0, nargsf=9223372036854775810, args=0x5555557f07f0, callable=0x7ffff64adc30, tstate=<optimized out>)
at ../Include/cpython/abstract.h:99
#11 PyObject_Vectorcall (kwnames=0x0, nargsf=9223372036854775810, args=<optimized out>, callable=0x7ffff64adc30) at ../Include/cpython/abstract.h:123
#12 call_function (kwnames=0x0, oparg=2, pp_stack=<synthetic pointer>, trace_info=0x7fffffffe110, tstate=0x5555555601b0) at ../Python/ceval.c:5869
#13 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:4181
#14 0x00007ffff7e0ba15 in _PyEval_EvalFrame (throwflag=0, f=0x5555557f0560, tstate=0x5555555601b0) at ../Include/internal/pycore_ceval.h:46
#15 _PyEval_Vector (tstate=0x5555555601b0, con=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>)
at ../Python/ceval.c:5065
#16 0x00007ffff7cb62a4 in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff7821bb8, callable=0x7ffff669b880, tstate=0x5555555601b0)
at ../Include/cpython/abstract.h:114
#17 PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at ../Include/cpython/abstract.h:123
#18 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, trace_info=0x7fffffffe340, tstate=0x5555555601b0) at ../Python/ceval.c:5869
#19 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:4213
#20 0x00007ffff7e0ba15 in _PyEval_EvalFrame (throwflag=0, f=0x7ffff7821a40, tstate=0x5555555601b0) at ../Include/internal/pycore_ceval.h:46
#21 _PyEval_Vector
(tstate=tstate@entry=0x5555555601b0, con=con@entry=0x7fffffffe4c0, locals=locals@entry=0x7ffff7735640, args=args@entry=0x0, argcount=argcount@entry=0, kwnames=kwnames@entry=0x0) at ../Python/ceval.c:5065
#22 0x00007ffff7e0c086 in PyEval_EvalCode (co=co@entry=0x7ffff77f1b00, globals=globals@entry=0x7ffff7735640, locals=locals@entry=0x7ffff7735640) at ../Python/ceval.c:1134
#23 0x00007ffff7e0c104 in run_eval_code_obj
(tstate=tstate@entry=0x5555555601b0, co=co@entry=0x7ffff77f1b00, globals=globals@entry=0x7ffff7735640, locals=locals@entry=0x7ffff7735640) at ../Python/pythonrun.c:1291
#24 0x00007ffff7e6316b in run_mod
(mod=mod@entry=0x55555569f390, filename=filename@entry=0x7ffff7786530, globals=globals@entry=0x7ffff7735640, locals=locals@entry=0x7ffff7735640, flags=flags@entry=0x7fffffffe6d8, arena=arena@entry=0x7ffff77fbb50) at ../Python/pythonrun.c:1312
#25 0x00007ffff7e6fac8 in pyrun_file
(fp=fp@entry=0x555555559370, filename=filename@entry=0x7ffff7786530, start=start@entry=257, globals=globals@entry=0x7ffff7735640, locals=locals@entry=0x7ffff7735640, closeit=closeit@entry=1, flags=<optimized out>) at ../Python/pythonrun.c:1208
#26 0x00007ffff7e6fc3f in _PyRun_SimpleFileObject
(fp=fp@entry=0x555555559370, filename=filename@entry=0x7ffff7786530, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffe6d8) at ../Python/pythonrun.c:456
#27 0x00007ffff7e701b9 in _PyRun_AnyFileObject (fp=0x555555559370, filename=filename@entry=0x7ffff7786530, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffe6d8)
at ../Python/pythonrun.c:90
#28 0x00007ffff7e730e0 in pymain_run_file_obj (skip_source_first_line=0, filename=0x7ffff7786530, program_name=0x7ffff78a6dd0) at ../Modules/main.c:353
#29 pymain_run_file (config=0x555555587c30) at ../Modules/main.c:372
#30 pymain_run_python (exitcode=0x7fffffffe6d0) at ../Modules/main.c:587
--Type <RET> for more, q to quit, c to continue without paging--
#31 Py_RunMain () at ../Modules/main.c:666
#32 0x00007ffff7e73596 in pymain_main (args=0x7fffffffe7d0) at ../Modules/main.c:696
#33 Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:720
#34 0x00007ffff7a5e54a in __libc_start_call_main (main=main@entry=0x555555555060 <main>, argc=argc@entry=8, argv=argv@entry=0x7fffffffe968)
at ../sysdeps/nptl/libc_start_call_main.h:58
#35 0x00007ffff7a5e60b in __libc_start_main_impl
(main=0x555555555060 <main>, argc=8, argv=0x7fffffffe968, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=<optimized out>)
at ../csu/libc-start.c:389
#36 0x0000555555555095 in _start ()
The most suspicious commit is fc776c20.
Any ideas? Maybe an ownership bug somewhere else was hidden by the fact that g_callable_info_free_closure() was broken and not actually freeing anything?
CC @hughsie