Coredump with FPC device
Enviroment:
Ubuntu 20.04
fprintd: the latest version 1.94.2. The commit id:eeaacece
libfprint: the latest version from source code 1.94.5. Commit id: 89509c76f4a533217088607e1f0822510fe97859
Process: After enroll being finished, just locking desktop and unlocking. After once try to unlock the desktop, the swipe tip in UI is disppeared.
The coredump file is showed in accessories.
The coredump log:
sudo coredumpctl debug
[sudo] password for fpc:
PID: 4226 (fprintd)
UID: 0 (root)
GID: 0 (root)
Signal: 11 (SEGV)
Timestamp: Thu 2022-12-01 15:56:02 CST (49min ago)
Command Line: /usr/libexec/fprintd
Executable: /usr/libexec/fprintd
Control Group: /system.slice/fprintd.service
Unit: fprintd.service
Slice: system.slice
Boot ID: f9460de1a8964a238e8ae899957adccd
Machine ID: 0252132ffeed4a51a2b3be537afa1e9e
Hostname: fpc20
Storage: /var/lib/systemd/coredump/core.fprintd.0.f9460de1a8964a238e8ae899957adccd.4226.1669881362000000000000.lz4
Message: Process 4226 (fprintd) of user 0 dumped core.
Stack trace of thread 4226:
#0 0x00007f87ae77762d g_slice_alloc (libglib-2.0.so.0 + 0x7062d)
#1 0x00007f87ae77851a g_slist_prepend (libglib-2.0.so.0 + 0x7151a)
#2 0x00007f87ae4df69c n/a (libgobject-2.0.so.0 + 0x1969c)
#3 0x00007f87ae4e0728 n/a (libgobject-2.0.so.0 + 0x1a728)
#4 0x00007f87ae4e2378 g_object_new_valist (libgobject-2.0.so.0 + 0x1c378)
#5 0x00007f87ae4e26cd g_object_new (libgobject-2.0.so.0 + 0x1c6cd)
#6 0x00007f87ab5e10c6 fp_print_deserialize (libfprint-2.so.2 + 0x110c6)
#7 0x000055ecf7624a82 load_from_file (fprintd + 0x11a82)
#8 0x000055ecf76265e3 load_user_prints (fprintd + 0x135e3)
#9 0x000055ecf7626694 load_all_prints (fprintd + 0x13694)
#10 0x000055ecf762a418 fprint_device_enroll_start (fprintd + 0x17418)
#11 0x00007f87ab255ff5 n/a (libffi.so.7 + 0x6ff5)
#12 0x00007f87ab25540a n/a (libffi.so.7 + 0x640a)
#13 0x00007f87ae4db30d g_cclosure_marshal_generic (libgobject-2.0.so.0 + 0x1530d)
#14 0x00007f87ae4da802 g_closure_invoke (libgobject-2.0.so.0 + 0x14802)
#15 0x00007f87ae4edf96 n/a (libgobject-2.0.so.0 + 0x27f96)
#16 0x00007f87ae4f8a57 g_signal_emitv (libgobject-2.0.so.0 + 0x32a57)
#17 0x000055ecf762193c _fprint_dbus_device_skeleton_handle_method_call (fprintd + 0xe93c)
#18 0x00007f87ae64d92b n/a (libgio-2.0.so.0 + 0x12792b)
#19 0x00007f87ae75904e g_main_context_dispatch (libglib-2.0.so.0 + 0x5204e)
#20 0x00007f87ae759400 n/a (libglib-2.0.so.0 + 0x52400)
#21 0x00007f87ae7596f3 g_main_loop_run (libglib-2.0.so.0 + 0x526f3)
#22 0x000055ecf761dec8 main (fprintd + 0xaec8)
#23 0x00007f87ab3bd083 __libc_start_main (libc.so.6 + 0x24083)
#24 0x000055ecf761e15e _start (fprintd + 0xb15e)
Stack trace of thread 4403:
#0 0x00007f87ab4b173d syscall (libc.so.6 + 0x11873d)
#1 0x00007f87ae7a6746 g_cond_wait_until (libglib-2.0.so.0 + 0x9f746)
#2 0x00007f87ae729581 n/a (libglib-2.0.so.0 + 0x22581)
#3 0x00007f87ae7834ca n/a (libglib-2.0.so.0 + 0x7c4ca)
#4 0x00007f87ae782ad1 n/a (libglib-2.0.so.0 + 0x7bad1)
#5 0x00007f87ab593609 start_thread (libpthread.so.0 + 0x8609)
#6 0x00007f87ab4b8133 __clone (libc.so.6 + 0x11f133)
Stack trace of thread 4228:
#0 0x00007f87ab4ab99f __GI___poll (libc.so.6 + 0x11299f)
#1 0x00007f87ae75936e n/a (libglib-2.0.so.0 + 0x5236e)
#2 0x00007f87ae7596f3 g_main_loop_run (libglib-2.0.so.0 + 0x526f3)
#3 0x00007f87ae644f8a n/a (libgio-2.0.so.0 + 0x11ef8a)
#4 0x00007f87ae782ad1 n/a (libglib-2.0.so.0 + 0x7bad1)
#5 0x00007f87ab593609 start_thread (libpthread.so.0 + 0x8609)
#6 0x00007f87ab4b8133 __clone (libc.so.6 + 0x11f133)
Stack trace of thread 4227:
#0 0x00007f87ab4ab99f __GI___poll (libc.so.6 + 0x11299f)
#1 0x00007f87ae75936e n/a (libglib-2.0.so.0 + 0x5236e)
#2 0x00007f87ae7594a3 g_main_context_iteration (libglib-2.0.so.0 + 0x524a3)
#3 0x00007f87ae7594f1 n/a (libglib-2.0.so.0 + 0x524f1)
#4 0x00007f87ae782ad1 n/a (libglib-2.0.so.0 + 0x7bad1)
#5 0x00007f87ab593609 start_thread (libpthread.so.0 + 0x8609)
#6 0x00007f87ab4b8133 __clone (libc.so.6 + 0x11f133)
Stack trace of thread 4230:
#0 0x00007f87ab4ab99f __GI___poll (libc.so.6 + 0x11299f)
#1 0x00007f87aaf4340d n/a (libusb-1.0.so.0 + 0xa40d)
#2 0x00007f87aaf4465c libusb_handle_events_timeout_completed (libusb-1.0.so.0 + 0xb65c)
#3 0x00007f87ab24376e n/a (libgusb.so.2 + 0x676e)
#4 0x00007f87ae782ad1 n/a (libglib-2.0.so.0 + 0x7bad1)
#5 0x00007f87ab593609 start_thread (libpthread.so.0 + 0x8609)
#6 0x00007f87ab4b8133 __clone (libc.so.6 + 0x11f133)
Stack trace of thread 4229:
#0 0x00007f87ab4ab99f __GI___poll (libc.so.6 + 0x11299f)
#1 0x00007f87aaf4a1a2 n/a (libusb-1.0.so.0 + 0x111a2)
#2 0x00007f87ab593609 start_thread (libpthread.so.0 + 0x8609)
#3 0x00007f87ab4b8133 __clone (libc.so.6 + 0x11f133)
sudo gdb /usr/libexec/fprintd
core.fprintd.0.f9460de1a8964a238e8ae899957adccd.4226.1669881362000000000000
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/libexec/fprintd...
[New LWP 4226]
[New LWP 4403]
[New LWP 4228]
[New LWP 4227]
[New LWP 4230]
[New LWP 4229]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/libexec/fprintd'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f87ae77762d in g_slice_alloc () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
[Current thread is 1 (Thread 0x7f87aad72180 (LWP 4226))]
(gdb) bt full
#0 0x00007f87ae77762d in g_slice_alloc () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1 0x00007f87ae77851a in g_slist_prepend () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007f87ae4df69c in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007f87ae4e0728 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007f87ae4e2378 in g_object_new_valist () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007f87ae4e26cd in g_object_new () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 0x00007f87ab5e10c6 in fp_print_deserialize (data=<optimized out>, length=<optimized out>, error=error@entry=0x7ffea0189a30) at ../libfprint/fp-print.c:877
fp_data = 0x55ecf8179520
result = 0x0
raw_value = 0x55ecf815f760
value = 0x55ecf815f760
print_data = 0x55ecf8144960
date = 0x0
aligned_data = <optimized out>
finger_int8 = 4 '\004'
finger = FP_FINGER_LEFT_RING
username = 0x55ecf8182520 "fpc"
description = 0x55ecf817af50 "FP1-20221201-4-6CD8FF28-fpc"
julian_date = 738490
type = FPI_PRINT_RAW
driver = 0x55ecf8185cf4 "fpcmoc"
device_id = 0x55ecf8185cfb "0"
device_stored = 1
__func__ = "fp_print_deserialize"
#7 0x000055ecf7624a82 in load_from_file (print=<synthetic pointer>, path=0x55ecf81822c0 "/var/lib/fprint/fpc/fpcmoc/0/4") at ../src/file_storage.c:191
err = 0x0
length = 100
contents = 0x55ecf816d380 "FP3\001"
new = <optimized out>
path = 0x55ecf81822c0 "/var/lib/fprint/fpc/fpcmoc/0/4"
base_store = 0x55ecf8182570 "/var/lib/fprint/fpc"
new = 0x0
r = <optimized out>
#8 file_storage_print_data_load (dev=0x55ecf8170190, finger=FP_FINGER_LEFT_RING, username=0x55ecf8169060 "fpc", print=0x7ffea0189aa0) at ../src/file_storage.c:217
path = 0x55ecf81822c0 "/var/lib/fprint/fpc/fpcmoc/0/4"
base_store = 0x55ecf8182570 "/var/lib/fprint/fpc"
new = 0x0
r = <optimized out>
#9 0x000055ecf76265e3 in load_user_prints (rdev=rdev@entry=0x55ecf81728e0, username=0x55ecf8169060 "fpc") at ../src/device.c:1209
print = 0x0
res = 0x7f879c002340
fingers = 0x55ecf816fd20
priv = 0x55ecf8172820
l = Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0x8:
#10 0x000055ecf7626694 in load_all_prints (rdev=rdev@entry=0x55ecf81728e0) at ../src/device.c:1235
username = <optimized out>
prints = <optimized out>
res = 0x7f8794003ce0
user = 0x55ecf816fb90 = {0x55ecf8169060}
users = 0x55ecf816fb90 = {0x55ecf8169060}
i = <optimized out>
#11 0x000055ecf762a418 in fprint_device_enroll_start (dbus_dev=0x55ecf81728e0, invocation=0x7f87880039e0, finger_name=<optimized out>) at ../src/device.c:2225
all_prints = <optimized out>
error = 0x0
existing_print = 0x0
session = 0x55ecf816d940
rdev = 0x55ecf81728e0
priv = <optimized out>
finger = <optimized out>
#12 0x00007f87ab255ff5 in () at /lib/x86_64-linux-gnu/libffi.so.7
#13 0x00007f87ab25540a in () at /lib/x86_64-linux-gnu/libffi.so.7
#14 0x00007f87ae4db30d in g_cclosure_marshal_generic () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007f87ae4da802 in g_closure_invoke () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#16 0x00007f87ae4edf96 in () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x00007f87ae4f8a57 in g_signal_emitv () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#18 0x000055ecf762193c in _fprint_dbus_device_skeleton_handle_method_call
(connection=<optimized out>, sender=<optimized out>, object_path=<optimized out>, interface_name=0x7f879c010990 "net.reactivated.Fprint.Device", method_name=0x7f879c013bd0 "EnrollStart", parameters=<optimized out>, invocation=0x7f87880039e0, user_data=0x55ecf81728e0) at src/fprintd-dbus-interactive.c:2995
skeleton = <optimized out>
info = <optimized out>
iter = {x = {94476262878720, 1, 1, 0, 140220723157312, 140220079028704, 94476262826976, 3579507750, 140220079028704, 94476262826976, 94476251043712, 94476262823104, 140220280356864, 31, 140220414594784, 140220724379282}}
child = 0x0
paramv = 0x55ecf816b480
num_params = <optimized out>
n = <optimized out>
signal_id = 29
return_value = Python Exception <class 'ValueError'> Variable 'static_fundamental_type_nodes' not found.:
{g_type = , 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__ = "_fprint_dbus_device_skeleton_handle_method_call"
#19 0x00007f87ae64d92b in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#20 0x00007f87ae75904e in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007f87ae759400 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007f87ae7596f3 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x000055ecf761dec8 in main (argc=<optimized out>, argv=<optimized out>) at ../src/main.c:220
context = 0x55ecf8141350
loop = 0x55ecf815fa30
error = 0x0
manager = 0x55ecf8151a80
connection = 0x55ecf8152040
request_name_ret = 1
(gdb) q