PackageKit / PackageKit

A D-BUS abstraction layer that allows the user to manage packages in a secure way using a cross-distro, cross-architecture API.
https://www.freedesktop.org/software/PackageKit/
GNU General Public License v2.0
247 stars 162 forks source link

pkcon crashes during interactive install / remove etc. #730

Open sidt4 opened 5 months ago

sidt4 commented 5 months ago

Crashes with following command:

$ pkcon install package_X

It appears we're doing autoptr cleanup of GTask object (via g_object_unref) in both the callbacks for each action ( install / remove etc )

Backtrace:

#0  g_type_check_instance_is_fundamentally_a (type_instance=type_instance@entry=0x555555587080, fundamental_type=fundamental_type@entry=0x50 [GObject]) at ../../../gobject/gtype.c:4184
#1  0x00007ffff7d8887d in g_object_unref (_object=0x555555587080) at ../../../gobject/gobject.c:3810
#2  0x00007ffff7f5ca1f in glib_autoptr_clear_GTask (_ptr=0x555555587080) at /usr/include/glib-2.0/gio/gio-autocleanups.h:136
#3  0x00007ffff7f5ca3c in glib_autoptr_cleanup_GTask (_ptr=0x7fffffffd028) at /usr/include/glib-2.0/gio/gio-autocleanups.h:136
#4  0x00007ffff7f5f712 in pk_task_ready_cb (source_object=0x555555585b30 [PkTaskText], res=0x555555592610, user_data=0x555555587080) at ../lib/packagekit-glib2/pk-task.c:846
#5  0x00007ffff7c35ee3 in g_task_return_now (task=task@entry=0x555555592610 [GTask]) at ../../../gio/gtask.c:1371
#6  0x00007ffff7c36b83 in g_task_return (type=<optimized out>, task=0x555555592610 [GTask]) at ../../../gio/gtask.c:1440
#7  g_task_return (task=0x555555592610 [GTask], type=<optimized out>) at ../../../gio/gtask.c:1397
#8  0x00007ffff7f2e435 in pk_client_state_finish (state=0x555555591690 [PkClientState], error=0x0) at ../lib/packagekit-glib2/pk-client.c:245
#9  0x00007ffff7f30b33 in pk_client_signal_finished (state=0x555555591690 [PkClientState], exit_enum=PK_EXIT_ENUM_SUCCESS, runtime=11591) at ../lib/packagekit-glib2/pk-client.c:1202
(More stack frames follow...)
sidt4 commented 3 months ago

Same during pkcon update command.

(gdb) bt
#0  g_type_check_instance_is_fundamentally_a (type_instance=type_instance@entry=0x563709004f40, fundamental_type=fundamental_type@entry=0x50 [GObject]) at ../../../gobject/gtype.c:4153
#1  0x00007f0fdebccffd in g_object_unref (_object=0x563709004f40) at ../../../gobject/gobject.c:4325
#2  0x00007f0fdeda7ab5 in glib_autoptr_clear_GTask (_ptr=0x563709004f40) at /build/glib/_install/include/glib-2.0/gio/gio-autocleanups.h:138
#3  0x00007f0fdeda7ad2 in glib_autoptr_cleanup_GTask (_ptr=0x7ffe2ace32b8) at /build/glib/_install/include/glib-2.0/gio/gio-autocleanups.h:138
#4  0x00007f0fdedaa7a8 in pk_task_ready_cb (source_object=0x563708ff5e30 [PkTaskText], res=0x563708fff730, user_data=0x563709004f40) at ../lib/packagekit-glib2/pk-task.c:846
#5  0x00007f0fdea766e3 in g_task_return_now (task=task@entry=0x563708fff730 [GTask]) at ../../../gio/gtask.c:1361
#6  0x00007f0fdea77383 in g_task_return (type=<optimized out>, task=0x563708fff730 [GTask]) at ../../../gio/gtask.c:1430
#7  g_task_return (task=0x563708fff730 [GTask], type=<optimized out>) at ../../../gio/gtask.c:1387
#8  0x00007f0fded79441 in pk_client_state_finish (state=0x5637090089f0 [PkClientState], error=0x0) at ../lib/packagekit-glib2/pk-client.c:247
#9  0x00007f0fded7bb3f in pk_client_signal_finished (state=0x5637090089f0 [PkClientState], exit_enum=PK_EXIT_ENUM_SUCCESS, runtime=105539) at ../lib/packagekit-glib2/pk-client.c:1204
#10 0x00007f0fded7beb8 in pk_client_signal_cb (proxy=0x563708ff2dd0 [GDBusProxy], sender_name=0x7f0fc00047d0 ":1.998", signal_name=0x7f0fc0009c80 "Finished", parameters=0x7f0fc0005120, user_data=0x563708fffae0)
    at ../lib/packagekit-glib2/pk-client.c:1286
#15 0x00007f0fdebe2fc3 in <emit signal 'g-signal' on instance 0x563708ff2dd0 [GDBusProxy]> (instance=instance@entry=0x563708ff2dd0, signal_id=<optimized out>, detail=<optimized out>)
    at ../../../gobject/gsignal.c:3583
    #11 0x00007f0fdebc7730 in g_closure_invoke (closure=0x563709002490, return_value=0x0, n_param_values=4, param_values=0x7ffe2ace3740, invocation_hint=0x7ffe2ace3690) at ../../../gobject/gclosure.c:834
    #12 0x00007f0fdebdb87c in signal_emit_unlocked_R
    (node=node@entry=0x7ffe2ace3840, detail=detail@entry=0, instance=instance@entry=0x563708ff2dd0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffe2ace3740)
    at ../../../gobject/gsignal.c:3888
    #13 0x00007f0fdebdd281 in signal_emit_valist_unlocked (instance=instance@entry=0x563708ff2dd0, signal_id=signal_id@entry=12, detail=detail@entry=0, var_args=var_args@entry=0x7ffe2ace39a0)
    at ../../../gobject/gsignal.c:3520
    #14 0x00007f0fdebe2f06 in g_signal_emit_valist (instance=0x563708ff2dd0, signal_id=12, detail=0, var_args=0x7ffe2ace39a0) at ../../../gobject/gsignal.c:3263
#16 0x00007f0fdeae0fbd in on_signal_received
    (connection=<optimized out>, sender_name=0x7f0fc000e940 ":1.998", object_path=<optimized out>, interface_name=<optimized out>, signal_name=0x7f0fc000a960 "Finished", parameters=0x7f0fc0005120, user_data=0x5637090019a0) at ../../../gio/gdbusproxy.c:874
#17 0x00007f0fdeacd26f in emit_signal_instance_in_idle_cb (data=0x7f0fc000e2c0) at ../../../gio/gdbusconnection.c:4189
#18 0x00007f0fdec6ce1f in g_main_dispatch (context=context@entry=0x563708fe5d40) at ../../../glib/gmain.c:3344
#19 0x00007f0fdec6eea7 in g_main_context_dispatch_unlocked (context=0x563708fe5d40) at ../../../glib/gmain.c:4152
#20 g_main_context_iterate_unlocked (context=0x563708fe5d40, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4217
#21 0x00007f0fdec6f7af in g_main_loop_run (loop=0x563708fe5f60) at ../../../glib/gmain.c:4419
#22 0x00005637088bf87f in main (argc=2, argv=0x7ffe2ace40d8) at ../client/pk-console.c:2400