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

xdg-permission-store: Crash inside get_app_permissions #1616

Open
A6GibKm opened this issue Feb 5, 2025 · 0 comments · May be fixed by #1649
Open

xdg-permission-store: Crash inside get_app_permissions #1616

A6GibKm opened this issue Feb 5, 2025 · 0 comments · May be fixed by #1649
Labels

Comments

@A6GibKm
Copy link
Contributor

A6GibKm commented Feb 5, 2025

Operating System

Debian 12

XDG Desktop Portal version

1.16

XDG Desktop Portal version (Other)

No response

Desktop Environment

GNOME

Desktop Environment (Other)

No response

Expected Behavior

Not crashing.

Current Behavior

The process can sporadically crash.

Steps to Reproduce

Unknown. I have seen it happen twice with the same backtrace.

Anything else we should know?

Here is a backtrace:|

(gdb) bt
#0  __strcmp_evex () at ../sysdeps/x86_64/multiarch/strcmp-evex.S:295
#1  0x00005be8eb9425d3 in permission_db_entry_get_permissions_variant (entry=entry@entry=0x5be8fb6564c0, app_id=0x78c9eb618093 "ca.desrt.dconf-editor") at ../document-portal/permission-db.c:1029
#2  0x00005be8eb9444bb in permission_db_entry_list_permissions (entry=entry@entry=0x5be8fb6564c0, app=<optimized out>) at ../document-portal/permission-db.c:1067
#3  0x00005be8eb93caec in get_app_permissions (entry=entry@entry=0x5be8fb6564c0) at ../document-portal/xdg-permission-store.c:179
#4  0x00005be8eb93cc45 in handle_lookup (object=0x5be8fb6124b0, invocation=0x78c9dc00d2e0, table_name=<optimized out>, id=<optimized out>) at ../document-portal/xdg-permission-store.c:215
#5  0x000078c9ead7bf7a in ffi_call_unix64 () at ../src/x86/unix64.S:104
#6  0x000078c9ead7b40e in ffi_call_int (cif=cif@entry=0x7fff4022a810, fn=fn@entry=0x5be8eb93cc00 <handle_lookup>, rvalue=<optimized out>, rvalue@entry=0x7fff4022a790, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#7  0x000078c9ead7bb0d in ffi_call (cif=cif@entry=0x7fff4022a810, fn=fn@entry=0x5be8eb93cc00 <handle_lookup>, rvalue=rvalue@entry=0x7fff4022a790, avalue=avalue@entry=0x7fff4022a730) at ../src/x86/ffi64.c:710
#8  0x000078c9eb2a7b5c in g_cclosure_marshal_generic (closure=0x5be8fb61bb80, return_gvalue=0x7fff4022a9b0, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ../../../gobject/gclosure.c:1536
#9  0x000078c9eb2a73b0 in g_closure_invoke (closure=0x5be8fb61bb80, return_value=return_value@entry=0x7fff4022a9b0, n_param_values=4, param_values=param_values@entry=0x5be8fb615020, invocation_hint=invocation_hint@entry=0x7fff4022a990) at ../../../gobject/gclosure.c:832
#10 0x000078c9eb2ba076 in signal_emit_unlocked_R (node=<optimized out>, detail=detail@entry=0, instance=0x5be8fb6124b0, emission_return=emission_return@entry=0x7fff4022aa40, instance_and_params=0x5be8fb615020) at ../../../gobject/gsignal.c:3796
#11 0x000078c9eb2bfc1b in g_signal_emitv (instance_and_params=instance_and_params@entry=0x5be8fb615020, signal_id=signal_id@entry=10, detail=detail@entry=0, return_value=return_value@entry=0x7fff4022aa40) at ../../../gobject/gsignal.c:3268
#12 0x00005be8eb93bf2b in _xdg_permission_store_skeleton_handle_method_call (connection=<optimized out>, sender=<optimized out>, object_path=<optimized out>, interface_name=0x78c9d800a2b0 "org.freedesktop.impl.portal.PermissionStore", method_name=0x78c9d8009f90 "Lookup", 
    parameters=<optimized out>, invocation=0x78c9dc00d2e0, user_data=0x5be8fb6124b0) at document-portal/permission-store-dbus.c:2715
#13 0x000078c9eb412a65 in g_dbus_interface_method_dispatch_helper (interface=<optimized out>, method_call_func=0x5be8eb93bd60 <_xdg_permission_store_skeleton_handle_method_call>, invocation=0x78c9dc00d2e0) at ../../../gio/gdbusinterfaceskeleton.c:618
#14 0x000078c9eb3f8a88 in call_in_idle_cb (user_data=0x78c9dc00d2e0) at ../../../gio/gdbusconnection.c:5433
#15 0x000078c9eb52467f in g_main_dispatch (context=0x5be8fb607480) at ../../../glib/gmain.c:3454
#16 g_main_context_dispatch (context=context@entry=0x5be8fb607480) at ../../../glib/gmain.c:4172
#17 0x000078c9eb524a38 in g_main_context_iterate (context=0x5be8fb607480, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4248
#18 0x000078c9eb524cef in g_main_loop_run (loop=0x5be8fb617b30) at ../../../glib/gmain.c:4448
#19 0x00005be8eb939792 in main (argc=<optimized out>, argv=<optimized out>) at ../document-portal/permission-store.c:135

and a full bt:

(gdb) bt full
#0  __strcmp_evex () at ../sysdeps/x86_64/multiarch/strcmp-evex.S:295
No locals.
#1  0x00005be8eb9425d3 in permission_db_entry_get_permissions_variant (entry=entry@entry=0x5be8fb6564c0, app_id=0x78c9eb618093 "ca.desrt.dconf-editor") at ../document-portal/permission-db.c:1029
        v = 0x5be8fb6564c0
        app_array = 0x5be8fb652b80
        child = 0x5be8fb628800
        res = 0x0
        n_children = <optimized out>
        start = 6
        end = 11
        m = 8
        child_app_id = 0x0
        cmp = <optimized out>
#2  0x00005be8eb9444bb in permission_db_entry_list_permissions (entry=entry@entry=0x5be8fb6564c0, app=<optimized out>) at ../document-portal/permission-db.c:1067
        permissions = 0x0
#3  0x00005be8eb93caec in get_app_permissions (entry=entry@entry=0x5be8fb6564c0) at ../document-portal/xdg-permission-store.c:179
        permissions = <optimized out>
        apps = 0x5be8fb655410
        builder = {u = {s = {partial_magic = 0, type = 0x5be8fb651550, y = {101056208246097, 0, 0, 18446744073709551615, 101056208262480, 8, 0, 3, 1033660112, 0, 0, 0, 0, 0}}, x = {0, 101056208246096, 101056208246097, 0, 0, 18446744073709551615, 101056208262480, 8, 0, 3, 
              1033660112, 0, 0, 0, 0, 0}}}
        i = 0
#4  0x00005be8eb93cc45 in handle_lookup (object=0x5be8fb6124b0, invocation=0x78c9dc00d2e0, table_name=<optimized out>, id=<optimized out>) at ../document-portal/xdg-permission-store.c:215
        table = <optimized out>
        data = 0x5be8fb628b40
        permissions = 0x0
        entry = 0x5be8fb6564c0
#5  0x000078c9ead7bf7a in ffi_call_unix64 () at ../src/x86/unix64.S:104
No locals.
#6  0x000078c9ead7b40e in ffi_call_int (cif=cif@entry=0x7fff4022a810, fn=fn@entry=0x5be8eb93cc00 <handle_lookup>, rvalue=<optimized out>, rvalue@entry=0x7fff4022a790, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
        classes = {X86_64_INTEGER_CLASS, 32767, 1076012936, 32767}
        stack = <optimized out>
        argp = <optimized out>
        arg_types = <optimized out>
        gprcount = 5
        ssecount = <optimized out>
        ngpr = 1
        nsse = 0
        i = <optimized out>
        avn = <optimized out>
        flags = <optimized out>
        reg_args = <optimized out>
#7  0x000078c9ead7bb0d in ffi_call (cif=cif@entry=0x7fff4022a810, fn=fn@entry=0x5be8eb93cc00 <handle_lookup>, rvalue=rvalue@entry=0x7fff4022a790, avalue=avalue@entry=0x7fff4022a730) at ../src/x86/ffi64.c:710
        arg_types = 0x7fff4022a760
        i = <optimized out>
        nargs = 5
        max_reg_struct_size = <optimized out>
#8  0x000078c9eb2a7b5c in g_cclosure_marshal_generic (closure=0x5be8fb61bb80, return_gvalue=0x7fff4022a9b0, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ../../../gobject/gclosure.c:1536
        rtype = <optimized out>
        rvalue = 0x7fff4022a790
        n_args = 5
        atypes = <optimized out>
        args = <optimized out>
        i = <optimized out>
        cif = {abi = FFI_UNIX64, nargs = 5, arg_types = 0x7fff4022a760, rtype = 0x78c9ead7d0c0 <ffi_type_sint32>, bytes = 0, flags = 6}
        cc = 0x5be8fb61bb80
        enum_tmpval = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
        tmpval_used = 0
#9  0x000078c9eb2a73b0 in g_closure_invoke (closure=0x5be8fb61bb80, return_value=return_value@entry=0x7fff4022a9b0, n_param_values=4, param_values=param_values@entry=0x5be8fb615020, invocation_hint=invocation_hint@entry=0x7fff4022a990) at ../../../gobject/gclosure.c:832
        marshal = 0x78c9eb2a7960 <g_cclosure_marshal_generic>
        marshal_data = 0x0
        in_marshal = 0
        real_closure = 0x5be8fb61bb60
        __func__ = "g_closure_invoke"
#10 0x000078c9eb2ba076 in signal_emit_unlocked_R (node=<optimized out>, detail=detail@entry=0, instance=0x5be8fb6124b0, emission_return=emission_return@entry=0x7fff4022aa40, instance_and_params=0x5be8fb615020) at ../../../gobject/gsignal.c:3796
        tmp = <optimized out>
        handler = 0x5be8fb60f140
        accumulator = 0x5be8fb61abb0
        emission = {next = 0x0, instance = 0x5be8fb6124b0, ihint = {signal_id = 10, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 4}
        class_closure = 0x5be8fb61adc0
        hlist = <optimized out>
        handler_list = 0x5be8fb60f140
        return_accu = 0x7fff4022a9b0
        accu = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, 
              v_pointer = 0x0}}}
        signal_id = 10
        max_sequential_handler_number = 274
        return_value_altered = <optimized out>
        EMIT_RESTART = <optimized out>
#11 0x000078c9eb2bfc1b in g_signal_emitv (instance_and_params=instance_and_params@entry=0x5be8fb615020, signal_id=signal_id@entry=10, detail=detail@entry=0, return_value=return_value@entry=0x7fff4022aa40) at ../../../gobject/gsignal.c:3268
        instance = <optimized out>
        node = <optimized out>
        __func__ = "g_signal_emitv"
#12 0x00005be8eb93bf2b in _xdg_permission_store_skeleton_handle_method_call (connection=<optimized out>, sender=<optimized out>, object_path=<optimized out>, interface_name=0x78c9d800a2b0 "org.freedesktop.impl.portal.PermissionStore", method_name=0x78c9d8009f90 "Lookup", 
    parameters=<optimized out>, invocation=0x78c9dc00d2e0, user_data=0x5be8fb6124b0) at document-portal/permission-store-dbus.c:2715
        skeleton = <optimized out>
        info = 0x5be8eb94e020 <_xdg_permission_store_method_info_lookup>
        iter = {x = {101056208264192, 2, 2, 0, 132808307663008, 9, 101056207987888, 3579507750, 101056208007056, 1, 101056208264192, 132808629286832, 0, 132808629286909, 132808307676400, 132808307675856}}
        child = 0x0
        paramv = 0x5be8fb615020
        num_params = <optimized out>
        num_extra = <optimized out>
        n = <optimized out>
        signal_id = 10
        return_value = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, 
              v_pointer = 0x0}}}
        __func__ = "_xdg_permission_store_skeleton_handle_method_call"
#13 0x000078c9eb412a65 in g_dbus_interface_method_dispatch_helper (interface=<optimized out>, method_call_func=0x5be8eb93bd60 <_xdg_permission_store_skeleton_handle_method_call>, invocation=0x78c9dc00d2e0) at ../../../gio/gdbusinterfaceskeleton.c:618
        has_handlers = <optimized out>
        has_default_class_handler = <optimized out>
        emit_authorized_signal = <optimized out>
        run_in_thread = <optimized out>
        flags = <optimized out>
        object = 0x0
        __func__ = "g_dbus_interface_method_dispatch_helper"
#14 0x000078c9eb3f8a88 in call_in_idle_cb (user_data=0x78c9dc00d2e0) at ../../../gio/gdbusconnection.c:5433
        invocation = 0x78c9dc00d2e0
        vtable = <optimized out>
        registration_id = <optimized out>
        subtree_registration_id = <optimized out>
        ei = 0x5be8fb61c260
        es = 0x0
        __func__ = "call_in_idle_cb"
#15 0x000078c9eb52467f in g_main_dispatch (context=0x5be8fb607480) at ../../../glib/gmain.c:3454
        dispatch = 0x78c9eb520890 <g_idle_dispatch>
        prev_source = 0x0
        begin_time_nsec = 0
        was_in_call = 0
        user_data = 0x78c9dc00d2e0
        callback = 0x78c9eb3f8970 <call_in_idle_cb>
        cb_funcs = <optimized out>
        cb_data = 0x78c9d8007810
        need_destroy = <optimized out>
        source = 0x78c9d800b760
        current = 0x5be8fb6157c0
        i = 0
        __func__ = "g_main_dispatch"
#16 g_main_context_dispatch (context=context@entry=0x5be8fb607480) at ../../../glib/gmain.c:4172
No locals.
#17 0x000078c9eb524a38 in g_main_context_iterate (context=0x5be8fb607480, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4248
        max_priority = 2147483647
        timeout = -1
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = 1
        fds = 0x5be8fb617b50
        begin_time_nsec = 0
#18 0x000078c9eb524cef in g_main_loop_run (loop=0x5be8fb617b30) at ../../../glib/gmain.c:4448
        self = <optimized out>
        __func__ = "g_main_loop_run"
#19 0x00005be8eb939792 in main (argc=<optimized out>, argv=<optimized out>) at ../document-portal/permission-store.c:135
        owner_id = 1
        loop = <optimized out>
        context = <optimized out>
        error = 0x0
@A6GibKm A6GibKm added the bug label Feb 5, 2025
A6GibKm added a commit to A6GibKm/xdg-desktop-portal that referenced this issue Feb 21, 2025
The callers of this function check whether the return value is NULL.

Fixes: flatpak#1616
@A6GibKm A6GibKm linked a pull request Feb 21, 2025 that will close this issue
A6GibKm added a commit to A6GibKm/xdg-desktop-portal that referenced this issue Feb 21, 2025
The callers of this function check whether the return value is NULL.

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

Successfully merging a pull request may close this issue.

1 participant