g_task_return_error: assertion '!task->ever_returned' failed
When testing epiphany!1109 (merged) I noticed libsecret crashing epiphany. Reproducer:
- Save copy of
~/.local/share/keyrings/login.keyring
as~/.local/share/keyrings/login.keyring.bak
- Delete all Epiphany passwords (probably not required to reproduce)
- Restore keyring:
cp ~/.local/share/keyrings/login.keyring.bak ~/.local/share/keyrings/login.keyring
- Try to start Epiphany
I see:
(epiphany:8968): epiphany-WARNING **: 17:59:04.544: Failed to search secrets in password schema: No such secret item at path: /org/freedesktop/secrets/collection/login/97575
(epiphany:8968): GLib-GIO-CRITICAL **: 17:59:04.544: g_task_return_error: assertion '!task->ever_returned' failed
I don't expect libsecret to be capable of handling this gracefully, because moving files around while gnome-keyring is running is pretty mean. The warning seems fair enough. But it should certainly not hit a critical by calling g_task_return() twice!
Here is a backtrace with G_DEBUG=fatal-criticals:
(gdb) bt full
#0 _g_log_abort (breakpoint=1) at ../../../../Projects/glib/glib/gmessages.c:560
debugger_present = 1
#1 0x00007f6b3c14bcbf in g_logv (log_domain=0x7f6b3c46e0e2 "GLib-GIO", log_level=G_LOG_LEVEL_CRITICAL,
format=0x7f6b3c1b902b "%s: assertion '%s' failed", args=0x7ffc427add78)
at ../../../../Projects/glib/glib/gmessages.c:1414
domain = 0x0
data = 0x0
depth = 1
log_func = 0x7f6b3ce3ffac <trap_handler>
domain_fatal_mask = 5
masquerade_fatal = 0
test_level = 10
was_fatal = 0
was_recursion = 0
buffer = "\204\203\260\000\000\000\000\000\300\063\341\000\000\000\000\000\241", '\000' <repeats 15 times>, "@\331zB\374\177\000\000\220\336zB\374\177\000\000\211\000\000\000\000\000\000\000\200\340zB\374\177\000\000{CH<", '\000' <repeats 20 times>, "\t\341 ,", '\000' <repeats 12 times>, "\060&\372<k\177\000\000\340\331zB\374\177\000\000\266\315+<k\177\000\000\200\332zB\374\177\000\000g\345\372<k\177\000\000\006", '\000' <repeats 15 times>, "\005", '\000' <repeats 15 times>, "\001\000\000\000\000\000\000\000\300\"\372<k\177\000\000\300\"\372<k\177\000\000"...
msg = 0x1cbd390 "g_task_return_error: assertion '!task->ever_returned' failed"
msg_alloc = 0x1cbd390 "g_task_return_error: assertion '!task->ever_returned' failed"
i = 3
#2 0x00007f6b3c14bdb3 in g_log (log_domain=0x7f6b3c46e0e2 "GLib-GIO", log_level=G_LOG_LEVEL_CRITICAL,
format=0x7f6b3c1b902b "%s: assertion '%s' failed") at ../../../../Projects/glib/glib/gmessages.c:1456
args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7ffc427ade50, reg_save_area = 0x7ffc427add90}}
#3 0x00007f6b3c14de4b in g_return_if_fail_warning (log_domain=0x7f6b3c46e0e2 "GLib-GIO",
pretty_function=0x7f6b3c46e5a0 <__func__.6> "g_task_return_error",
expression=0x7f6b3c46e188 "!task->ever_returned") at ../../../../Projects/glib/glib/gmessages.c:2942
No locals.
#4 0x00007f6b3c383b50 in g_task_return_error (task=0x1387d50, error=0x1398630)
at ../../../../Projects/glib/gio/gtask.c:1891
__func__ = "g_task_return_error"
#5 0x00007f6b35886298 in on_search_loaded (source=<optimized out>, result=0x1c809b0, user_data=<optimized out>)
at /usr/include/glib-2.0/glib/gmem.h:224
task = 0x1387d50
closure = 0x1490790
error = 0x0
item = <optimized out>
#6 0x00007f6b3c3827e8 in g_task_return_now (task=0x1c809b0) at ../../../../Projects/glib/gio/gtask.c:1230
No locals.
#7 0x00007f6b3c382953 in g_task_return (task=0x1c809b0, type=G_TASK_RETURN_ERROR)
at ../../../../Projects/glib/gio/gtask.c:1300
source = 0x7f6b24065a30
source_name = 0x0
#8 0x00007f6b3c383b9e in g_task_return_error (task=0x1c809b0, error=0x1398630)
at ../../../../Projects/glib/gio/gtask.c:1896
__func__ = "g_task_return_error"
#9 0x00007f6b3c383c65 in g_task_return_new_error (task=0x1c809b0, domain=69, code=19,
format=0x7f6b358a3738 "No such secret item at path: %s") at ../../../../Projects/glib/gio/gtask.c:1930
error = 0x1398630
args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7ffc427ae090, reg_save_area = 0x7ffc427adfd0}}
#10 0x00007f6b3588537b in on_init_base (source=<optimized out>, result=0x1bc2820, user_data=<optimized out>)
at ../libsecret/secret-item.c:531
task = 0x1c809b0
--Type <RET> for more, q to quit, c to continue without paging--c
cancellable = 0x0
self = <optimized out>
proxy = 0x1cf7bf0
error = 0x0
#11 0x00007f6b3c3827e8 in g_task_return_now (task=0x1bc2820) at ../../../../Projects/glib/gio/gtask.c:1230
No locals.
#12 0x00007f6b3c382953 in g_task_return (task=0x1bc2820, type=G_TASK_RETURN_SUCCESS) at ../../../../Projects/glib/gio/gtask.c:1300
source = 0x7f6b24065a30
source_name = 0x0
#13 0x00007f6b3c383967 in g_task_return_boolean (task=0x1bc2820, result=1) at ../../../../Projects/glib/gio/gtask.c:1832
__func__ = "g_task_return_boolean"
#14 0x00007f6b3c411dfb in init_second_async_cb (source_object=0x1cf7bf0, res=0x1bc2ca0, user_data=0x1bc2820) at ../../../../Projects/glib/gio/gdbusproxy.c:1776
task = 0x1bc2820
error = 0x0
#15 0x00007f6b3c3827e8 in g_task_return_now (task=0x1bc2ca0) at ../../../../Projects/glib/gio/gtask.c:1230
No locals.
#16 0x00007f6b3c382953 in g_task_return (task=0x1bc2ca0, type=G_TASK_RETURN_SUCCESS) at ../../../../Projects/glib/gio/gtask.c:1300
source = 0x7f6b24065a30
source_name = 0x0
#17 0x00007f6b3c383540 in g_task_return_pointer (task=0x1bc2ca0, result=0x0, result_destroy=0x7f6b3c1997d0 <g_variant_unref>) at ../../../../Projects/glib/gio/gtask.c:1720
__func__ = "g_task_return_pointer"
#18 0x00007f6b3c411345 in async_init_get_all_cb (connection=0xd73040, res=0x1e9ed40, user_data=0x1bc2ca0) at ../../../../Projects/glib/gio/gdbusproxy.c:1404
task = 0x1bc2ca0
result = 0x0
error = 0x1398690
#19 0x00007f6b3c3827e8 in g_task_return_now (task=0x1e9ed40) at ../../../../Projects/glib/gio/gtask.c:1230
No locals.
#20 0x00007f6b3c382953 in g_task_return (task=0x1e9ed40, type=G_TASK_RETURN_ERROR) at ../../../../Projects/glib/gio/gtask.c:1300
source = 0x7f6b24065a30
source_name = 0x0
#21 0x00007f6b3c383b9e in g_task_return_error (task=0x1e9ed40, error=0x1398690) at ../../../../Projects/glib/gio/gtask.c:1896
__func__ = "g_task_return_error"
#22 0x00007f6b3c400d0c in g_dbus_connection_call_done (source=0xd73040, result=0x1e9ea40, user_data=0x1e9ed40) at ../../../../Projects/glib/gio/gdbusconnection.c:5877
connection = 0xd73040
task = 0x1e9ed40
state = 0xf986c0
error = 0x1398690
reply = 0x1e14140
value = 0x0
#23 0x00007f6b3c3827e8 in g_task_return_now (task=0x1e9ea40) at ../../../../Projects/glib/gio/gtask.c:1230
No locals.
#24 0x00007f6b3c382854 in complete_in_idle_cb (task=0x1e9ea40) at ../../../../Projects/glib/gio/gtask.c:1244
No locals.
#25 0x00007f6b3c1440d1 in g_idle_dispatch (source=0x7f6b24065a30, callback=0x7f6b3c38283c <complete_in_idle_cb>, user_data=0x1e9ea40) at ../../../../Projects/glib/glib/gmain.c:5935
again = 0
#26 0x00007f6b3c1411e4 in g_main_dispatch (context=0xd72a80) at ../../../../Projects/glib/glib/gmain.c:3417
dispatch = 0x7f6b3c14407f <g_idle_dispatch>
prev_source = 0x0
begin_time_nsec = 0
was_in_call = 0
user_data = 0x1e9ea40
callback = 0x7f6b3c38283c <complete_in_idle_cb>
cb_funcs = 0x7f6b3c236ac0 <g_source_callback_funcs>
cb_data = 0x7f6b24065aa0
need_destroy = 1
source = 0x7f6b24065a30
current = 0xd7c530
i = 6
__func__ = "g_main_dispatch"
#27 0x00007f6b3c142134 in g_main_context_dispatch (context=0xd72a80) at ../../../../Projects/glib/glib/gmain.c:4135
No locals.
#28 0x00007f6b3c142320 in g_main_context_iterate (context=0xd72a80, block=1, dispatch=1, self=0xd694c0) at ../../../../Projects/glib/glib/gmain.c:4211
max_priority = 0
timeout = 0
some_ready = 1
nfds = 5
allocated_nfds = 5
fds = 0x1d69c70
begin_time_nsec = 0
#29 0x00007f6b3c1423e4 in g_main_context_iteration (context=0xd72a80, may_block=1) at ../../../../Projects/glib/glib/gmain.c:4276
retval = 1
#30 0x00007f6b3c3c1a04 in g_application_run (application=0xd96240, argc=1, argv=0x7ffc427ae7f8) at ../../../../Projects/glib/gio/gapplication.c:2569
arguments = 0xddba10
status = 0
context = 0xd72a80
acquired_context = 1
__func__ = "g_application_run"
#31 0x0000000000404bb8 in main (argc=1, argv=0x7ffc427ae7f8) at ../../../../Projects/epiphany/src/ephy-main.c:436
option_context = 0xd4a030
option_group = 0xd4a090
error = 0x0
user_time = 0
arbitrary_url = 0
ctx = 0xe56160
mode = EPHY_EMBED_SHELL_MODE_BROWSER
status = 0
flags = EPHY_FILE_HELPERS_ENSURE_EXISTS
desktop_info = 0x0