Debian Bookworm - Crash alla chiusura di LibreOffice

In alcune applicazioni si verificano dei crash nella libreria libcie-pkcs11.so; in particolare ho problemi con LibreOffice, che da diverso tempo crasha ogni volta alla chiusura:

#4  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#5  0x00007f6c854a9d2f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#6  0x00007f6c8545aef2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#7  0x00007f6c85445472 in __GI_abort () at ./stdlib/abort.c:79
#8  0x00007f6c8549e2d0 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7f6c855b8459 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#9  0x00007f6c854b364a in malloc_printerr (str=str@entry=0x7f6c855bb0d0 "double free or corruption (fasttop)") at ./malloc/malloc.c:5660
#10 0x00007f6c854b5362 in _int_free (av=0x7f6c855f1c60 <main_arena>, p=0x561fab8b9760, have_lock=have_lock@entry=0) at ./malloc/malloc.c:4535
#11 0x00007f6c854b7d2f in __GI___libc_free (mem=<optimized out>) at ./malloc/malloc.c:3385
#12 0x00007f6ba12aaecf in CLog::~CLog (this=0x7f6ba1e401e0 <Log>, __in_chrg=<optimized out>) at ../cie-pkcs11/Util/log.cpp:120
#13 0x00007f6c8545d435 in __run_exit_handlers (status=0, listp=0x7f6c855f1820 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at ./stdlib/exit.c:113
#14 0x00007f6c8545d5aa in __GI_exit (status=<optimized out>) at ./stdlib/exit.c:143
#15 0x00007f6c85446191 in __libc_start_call_main (main=main@entry=0x561fa1019070, argc=argc@entry=3, argv=argv@entry=0x7ffc798d76f8) at ../sysdeps/nptl/libc_start_call_main.h:74
#16 0x00007f6c85446245 in __libc_start_main_impl (main=0x561fa1019070, argc=3, argv=0x7ffc798d76f8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffc798d76e8) at ../csu/libc-start.c:381
#17 0x0000561fa10190b1 in ?? ()

A parte che non capisco il motivo per il quale LibreOffice carichi quella libreria, eliminandola il crash non avviene più e l’applicazione si chiude correttamente.

LibreOffice in teoria potrebbe essere usato per firmare digitalmente documenti attraverso le funzionalità dello standard (API) PKCS #11. Se si riuscisse a raggiungere questo livello con la CIE sarebbe meraviglioso.

Forse in qualche modo la libreria middleware .so per la CIE viene captata dal sistema operativo o da LibreOffice.

Sì, probabile. Appena crashato per la stessa ragione anche Okular, nello stesso modo:

#4  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#5  0x00007f02f38a9d2f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#6  0x00007f02f385aef2 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#7  0x00007f02f3845472 in __GI_abort () at ./stdlib/abort.c:79
#8  0x00007f02f389e2d0 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7f02f39b8459 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#9  0x00007f02f38b364a in malloc_printerr (str=str@entry=0x7f02f39bb0d0 "double free or corruption (fasttop)") at ./malloc/malloc.c:5660
#10 0x00007f02f38b5362 in _int_free (av=0x7f02f39f1c60 <main_arena>, p=0x56296ed508a0, have_lock=have_lock@entry=0) at ./malloc/malloc.c:4535
#11 0x00007f02f38b7d2f in __GI___libc_free (mem=<optimized out>) at ./malloc/malloc.c:3385
#12 0x00007f02ab0abecf in CLog::~CLog (this=0x7f02abc4e2a0 <Log>, __in_chrg=<optimized out>) at ../cie-pkcs11/Util/log.cpp:120
#13 0x00007f02f385d435 in __run_exit_handlers (status=0, listp=0x7f02f39f1820 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at ./stdlib/exit.c:113
#14 0x00007f02f385d5aa in __GI_exit (status=<optimized out>) at ./stdlib/exit.c:143
#15 0x00007f02f3846191 in __libc_start_call_main (main=main@entry=0x56296ce05a50, argc=argc@entry=2, argv=argv@entry=0x7ffe815ba7f8) at ../sysdeps/nptl/libc_start_call_main.h:74
#16 0x00007f02f3846245 in __libc_start_main_impl (main=0x56296ce05a50, argc=2, argv=0x7ffe815ba7f8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe815ba7e8) at ../csu/libc-start.c:381
#17 0x000056296ce071f1 in ?? ()
[Inferior 1 (process 45725) detached]

Settando i log della libreria su debug nel log CIEPKI_YYYY-MM-DD,log dopo un crash trovo questo:

[...]
2023-02-03 14:26:45:939  [INFO] [PKCS11] C_GetFunctionList
2023-02-03 14:26:45:939  [INFO] [PKCS11] C_Initialize
2023-02-03 14:26:45:939  [ERROR] :11ef1560
2023-02-03 14:26:45:939  [ERROR] [PKCS11] EXC: :11ef1560
2023-02-03 14:26:45:939  [ERROR] [PKCS11] P11Error: a
2023-02-03 14:26:45:939  [INFO] [PKCS11] C_Initialize
2023-02-03 14:26:45:940  [INFO] [PKCS11] C_Initialize success
2023-02-03 14:26:45:940  [INFO] [PKCS11] C_GetInfo
2023-02-03 14:26:45:940  [INFO] [PKCS11] C_GetSlotList
2023-02-03 14:26:45:940  [INFO] [PKCS11] C_GetSlotList
[...]

Come hai settato i log della libreria? Ho assunto che ci fosse un config file in $HOME, ma nel mio caso in ~/.CIEPKI vedo solo un blob con estensione .cache.

Da qui, applicazione CIE-ID:

Premi modifica, imposti quello che ti serve e salvi. Verrà generato un file ~/.CIEPKI/config contenente le impostazioni.

Aggiungo ulteriori informazioni: il problema NON si presenta fino alla v1.4.1 del pacchetto CIE-Middleware; tutte le versioni successive, compresa l’ultima v1.4.3-3, sono affette.

Problema noto e segnalato da tempo: