Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

g_task_return_pointer: assertion '!task->ever_returned' failed #723

Open
sidt4 opened this issue Mar 14, 2024 · 2 comments
Open

g_task_return_pointer: assertion '!task->ever_returned' failed #723

sidt4 opened this issue Mar 14, 2024 · 2 comments

Comments

@sidt4
Copy link
Contributor

sidt4 commented Mar 14, 2024

On git f1e4ad6:

Steps to reproduce:

  1. Enable automatic updates in GNOME Software.
  2. Run the command.
$ gnome-software --quit
03:23:47:738 GLib-GIO g_task_return_pointer: assertion '!task->ever_returned' failed

Backtrace:

#0  g_logv (log_domain=0x7ffff7d8cecb "GLib-GIO", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fffde9ff1f0) at ../../../glib/gmessages.c:1423
#1  0x00007ffff7af2f03 in g_log (log_domain=<optimized out>, log_level=<optimized out>, format=<optimized out>) at ../../../glib/gmessages.c:1461
#2  0x00007ffff6dad1c1 in pk_client_state_finish (state=0x555555f6fb50 [PkClientState], error=0x555555f73790) at ../lib/packagekit-glib2/pk-client.c:243
#3  0x00007ffff6dad7b5 in pk_client_cancellable_cancel_cb (cancellable=0x555555d17ef0 [GCancellable], user_data=0x555555f6e0c0) at ../lib/packagekit-glib2/pk-client.c:373
#8  0x00007ffff7c07243 in <emit signal 'cancelled' on instance 0x555555d17ef0 [GCancellable]> (instance=instance@entry=0x555555d17ef0, signal_id=<optimized out>, detail=detail@entry=0)
    at ../../../gobject/gsignal.c:3675
    #4  0x00007ffff7bec540 in g_closure_invoke (closure=0x555555f6fe20, return_value=0x0, n_param_values=1, param_values=0x7fffde9ff530, invocation_hint=0x7fffde9ff480) at ../../../gobject/gclosure.c:832
    #5  0x00007ffff7bffafc in signal_emit_unlocked_R
    (node=node@entry=0x7fffde9ff5e0, detail=detail@entry=0, instance=instance@entry=0x555555d17ef0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffde9ff530)
    at ../../../gobject/gsignal.c:3980
    #6  0x00007ffff7c01501 in signal_emit_valist_unlocked (instance=instance@entry=0x555555d17ef0, signal_id=signal_id@entry=26, detail=detail@entry=0, var_args=var_args@entry=0x7fffde9ff740)
    at ../../../gobject/gsignal.c:3612
    #7  0x00007ffff7c07186 in g_signal_emit_valist (instance=0x555555d17ef0, signal_id=26, detail=0, var_args=0x7fffde9ff740) at ../../../gobject/gsignal.c:3355
#9  0x00007ffff7c8a414 in g_cancellable_cancel (cancellable=0x555555d17ef0 [GCancellable]) at ../../../gio/gcancellable.c:519
#10 0x00007ffff7f733c5 in gs_plugin_job_cancel (self=0x555555e49920 [GsPluginJobRefreshMetadata]) at ../lib/gs-plugin-job.c:556
#11 0x00007ffff7f62ac6 in gs_job_manager_shutdown_thread (task=0x555556bdb740 [GTask], source_object=0x55555581b520, task_data=0x0, cancellable=0x0) at ../lib/gs-job-manager.c:649
#12 0x00007ffff7cedca7 in g_task_thread_pool_thread (thread_data=0x555556bdb740, pool_data=<optimized out>) at ../../../gio/gtask.c:1593
#13 0x00007ffff7b18462 in g_thread_pool_thread_proxy (data=<optimized out>) at ../../../glib/gthreadpool.c:350
#14 0x00007ffff7b17ab1 in g_thread_proxy (data=0x7fffe4000df0) at ../../../glib/gthread.c:831
#15 0x00007ffff6c3945c in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:444
#16 0x00007ffff6cb9bbc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
@sidt4
Copy link
Contributor Author

sidt4 commented May 24, 2024

pk_client_state_finish () called twice resulting in 2 calls to g_task_return_pointer (), hence the !task->ever_returned assertion from GIO.

First call to pk_client_state_finish () via D-Bus cancel notification:

Thread 1 "gnome-software" hit Breakpoint 1, pk_client_state_finish (state=0x555555f8eeb0 [PkClientState], error=0x0) at ../lib/packagekit-glib2/pk-client.c:225
225		if (state->res == NULL)
#0  pk_client_state_finish (state=0x555555f8eeb0 [PkClientState], error=0x0) at ../lib/packagekit-glib2/pk-client.c:225
#1  0x00007ffff6a45b33 in pk_client_signal_finished (state=0x555555f8eeb0 [PkClientState], exit_enum=PK_EXIT_ENUM_CANCELLED_PRIORITY, runtime=1992) at ../lib/packagekit-glib2/pk-client.c:1202
#2  0x00007ffff6a45eac in pk_client_signal_cb (proxy=0x555555e8e1b0 [GDBusProxy], sender_name=0x555555f8d7b0 ":1.458", signal_name=0x7fffe0017a00 "Finished", parameters=0x7fffe0010cd0, user_data=0x555555e8e1e0)
    at ../lib/packagekit-glib2/pk-client.c:1284
#7  0x00007ffff7c28fc3 in <emit signal 'g-signal' on instance 0x555555e8e1b0 [GDBusProxy]> (instance=instance@entry=0x555555e8e1b0, signal_id=<optimized out>, detail=<optimized out>)
    at ../../../gobject/gsignal.c:3583
    #3  0x00007ffff7c0d730 in g_closure_invoke (closure=0x55555611b2f0, return_value=0x0, n_param_values=4, param_values=0x7fffffffd610, invocation_hint=0x7fffffffd560) at ../../../gobject/gclosure.c:834
    #4  0x00007ffff7c2187c in signal_emit_unlocked_R
    (node=node@entry=0x7fffffffd710, detail=detail@entry=0, instance=instance@entry=0x555555e8e1b0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd610)
    at ../../../gobject/gsignal.c:3888
    #5  0x00007ffff7c23281 in signal_emit_valist_unlocked (instance=instance@entry=0x555555e8e1b0, signal_id=signal_id@entry=24, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffd870)
    at ../../../gobject/gsignal.c:3520
    #6  0x00007ffff7c28f06 in g_signal_emit_valist (instance=0x555555e8e1b0, signal_id=24, detail=0, var_args=0x7fffffffd870) at ../../../gobject/gsignal.c:3263
#8  0x00007ffff7d79fbd in on_signal_received
    (connection=<optimized out>, sender_name=0x7fffe000e760 ":1.458", object_path=<optimized out>, interface_name=<optimized out>, signal_name=0x7fffe0009b70 "Finished", parameters=0x7fffe0010cd0, user_data=0x555555775b00) at ../../../gio/gdbusproxy.c:874
#9  0x00007ffff7d6626f in emit_signal_instance_in_idle_cb (data=0x7fffe0019060) at ../../../gio/gdbusconnection.c:4189
#10 0x00007ffff7b04e1f in g_main_dispatch (context=context@entry=0x5555556e0370) at ../../../glib/gmain.c:3344
#11 0x00007ffff7b06ea7 in g_main_context_dispatch_unlocked (context=0x5555556e0370) at ../../../glib/gmain.c:4152
#12 g_main_context_iterate_unlocked (context=context@entry=0x5555556e0370, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4217
#13 0x00007ffff7b074c0 in g_main_context_iteration (context=context@entry=0x5555556e0370, may_block=may_block@entry=1) at ../../../glib/gmain.c:4282
#14 0x00007ffff7d3f48d in g_application_run (application=application@entry=0x5555556ab570 [GsApplication], argc=argc@entry=2, argv=argv@entry=0x7fffffffdcd8) at ../../../gio/gapplication.c:2712
#15 0x000055555557d40f in main (argc=2, argv=0x7fffffffdcd8) at ../src/gs-main.c:49
[Switching to Thread 0x7fffea0006c0 (LWP 39818)]

Second call to pk_client_state_finish () via GNOME Software cancel:

Thread 7 "pool-gnome-soft" hit Breakpoint 1, pk_client_state_finish (state=0x555555f8eeb0 [PkClientState], error=0x7fffbc01e780) at ../lib/packagekit-glib2/pk-client.c:225
225		if (state->res == NULL)
#0  pk_client_state_finish (state=0x555555f8eeb0 [PkClientState], error=0x7fffbc01e780) at ../lib/packagekit-glib2/pk-client.c:225
#1  0x00007ffff6a43a29 in pk_client_cancellable_cancel_cb (cancellable=0x555555cf9130 [GCancellable], user_data=0x555555f8dec0) at ../lib/packagekit-glib2/pk-client.c:375
#6  0x00007ffff7c28fc3 in <emit signal 'cancelled' on instance 0x555555cf9130 [GCancellable]> (instance=instance@entry=0x555555cf9130, signal_id=<optimized out>, detail=detail@entry=0)
    at ../../../gobject/gsignal.c:3583
    #2  0x00007ffff7c0d730 in g_closure_invoke (closure=0x555555f8f1a0, return_value=0x0, n_param_values=1, param_values=0x7fffe9fff590, invocation_hint=0x7fffe9fff4e0) at ../../../gobject/gclosure.c:834
    #3  0x00007ffff7c2187c in signal_emit_unlocked_R
    (node=node@entry=0x7fffe9fff640, detail=detail@entry=0, instance=instance@entry=0x555555cf9130, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffe9fff590)
    at ../../../gobject/gsignal.c:3888
    #4  0x00007ffff7c23281 in signal_emit_valist_unlocked (instance=instance@entry=0x555555cf9130, signal_id=signal_id@entry=26, detail=detail@entry=0, var_args=var_args@entry=0x7fffe9fff7a0)
    at ../../../gobject/gsignal.c:3520
    #5  0x00007ffff7c28f06 in g_signal_emit_valist (instance=0x555555cf9130, signal_id=26, detail=0, var_args=0x7fffe9fff7a0) at ../../../gobject/gsignal.c:3263
#7  0x00007ffff7cad5a4 in g_cancellable_cancel (cancellable=0x555555cf9130 [GCancellable]) at ../../../gio/gcancellable.c:519
#8  0x00007ffff7f826ca in gs_plugin_job_cancel (self=<optimized out>) at ../lib/gs-plugin-job.c:556
#9  0x00007ffff7f76620 in gs_job_manager_shutdown_thread (task=0x5555556e93e0 [GTask], source_object=0x555555819e80, task_data=<optimized out>, cancellable=<optimized out>) at ../lib/gs-job-manager.c:649
#10 0x00007ffff7d104c1 in g_task_thread_pool_thread (thread_data=0x5555556e93e0, pool_data=<optimized out>) at ../../../gio/gtask.c:1583
#11 0x00007ffff7b356f2 in g_thread_pool_thread_proxy (data=<optimized out>) at ../../../glib/gthreadpool.c:336
#12 0x00007ffff7b34b91 in g_thread_proxy (data=0x7fffe4000b90) at ../../../glib/gthread.c:835
#13 0x00007ffff68cddbb in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:444
#14 0x00007ffff694f9f8 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
[New Thread 0x7fffdce006c0 (LWP 40085)]
[Switching to Thread 0x7fffdf4006c0 (LWP 39928)]

@sidt4
Copy link
Contributor Author

sidt4 commented May 25, 2024

Note that this issue happens only when automatic updates are enabled in GNOME Software.

Related: https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2579

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant