fprintd crash with external storage module
Hi,
we have an external storage module for fprintd that puts the fingerprint binary into a database. (fprintd.service
is patched so network access is allowed.)
The problem is that while the storage module was working with fprintd
0.9 and 1.90.1 (with conditional compilation for the API differences), it doesn't work with the latest version.
The crash is actually inside fprintd
when running fprintd-enroll
. The call to print_data_load
in our module occurs and returns -ENOENT
for a currently non-existing print. No other call happens to other exported functions in our module. The crash dump is logged by systemd-journald:
Stack trace of thread 94636:
#0 0x0000000000000000 n/a (n/a + 0x0)
#1 0x00007f838839b746 ffi_call_unix64 (libffi.so.8 + 0x7746)
#2 0x00007f83883984d2 ffi_call_int.lto_priv.0 (libffi.so.8 + 0x44d2)
#3 0x00007f838850cfd3 g_cclosure_marshal_generic (libgobject-2.0.so.0 + 0x19fd3)
#4 0x00007f8388506db0 g_closure_invoke (libgobject-2.0.so.0 + 0x13db0)
#5 0x00007f8388533605 signal_emit_unlocked_R.isra.0 (libgobject-2.0.so.0 + 0x40605)
#6 0x000055562d06044b _fprint_dbus_device_skeleton_handle_method_call (fprintd + 0xd44b)
#7 0x00007f83886715d1 dispatch_invoke_in_context_func (libgio-2.0.so.0 + 0x11f5d1)
#8 0x00007f838877e4cb g_idle_dispatch (libglib-2.0.so.0 + 0x514cb)
#9 0x00007f8388781faf g_main_context_dispatch (libglib-2.0.so.0 + 0x54faf)
#10 0x00007f83887d72c8 g_main_context_iterate.constprop.0 (libglib-2.0.so.0 + 0xaa2c8)
#11 0x00007f83887816cf g_main_loop_run (libglib-2.0.so.0 + 0x546cf)
#12 0x000055562d05ee88 main (fprintd + 0xbe88)
#13 0x00007f8385029550 __libc_start_call_main (libc.so.6 + 0x29550)
#14 0x00007f8385029609 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x29609)
#15 0x000055562d05f335 _start (fprintd + 0xc335
I suspect that there may be a problem in the DBus XML files that are used to generate DBus communication sources.
The function _fprint_dbus_device_skeleton_handle_method_call
is in the generated sources.