# Debian Bookworm - Crash alla chiusura di LibreOffice

**URL:** <https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706>\
**Category:** CIE\
**Created:** [3 Febbraio 2023, 12:28pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706 "2023-02-03T12:28:43Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![mavoga](https://forum.italia.it/user_avatar/forum.italia.it/mavoga/32/8665_2.png) [@mavoga](https://forum.italia.it/u/mavoga)\
**Post date:** [3 Febbraio 2023, 12:28pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706/1 "2023-02-03T12:28:43Z")

</div>

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:

```auto
#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.

---

<div class="post-metadata">

**Author:** ![tappoz](https://forum.italia.it/user_avatar/forum.italia.it/tappoz/32/8486_2.png) [@tappoz](https://forum.italia.it/u/tappoz)\
**Post date:** [3 Febbraio 2023, 1:03pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706/2 "2023-02-03T13:03:16Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![mavoga](https://forum.italia.it/user_avatar/forum.italia.it/mavoga/32/8665_2.png) [@mavoga](https://forum.italia.it/u/mavoga)\
**Post date:** [3 Febbraio 2023, 1:46pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706/3 "2023-02-03T13:46:27Z")

</div>

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

```auto
#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]

```

---

<div class="post-metadata">

**Author:** ![mavoga](https://forum.italia.it/user_avatar/forum.italia.it/mavoga/32/8665_2.png) [@mavoga](https://forum.italia.it/u/mavoga)\
**Post date:** [3 Febbraio 2023, 2:33pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706/4 "2023-02-03T14:33:01Z")

</div>

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

```auto
[...]
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
[...]

```

---

<div class="post-metadata">

**Author:** ![tappoz](https://forum.italia.it/user_avatar/forum.italia.it/tappoz/32/8486_2.png) [@tappoz](https://forum.italia.it/u/tappoz)\
**Post date:** [3 Febbraio 2023, 3:04pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706/5 "2023-02-03T15:04:06Z")

</div>

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`.

---

<div class="post-metadata">

**Author:** ![mavoga](https://forum.italia.it/user_avatar/forum.italia.it/mavoga/32/8665_2.png) [@mavoga](https://forum.italia.it/u/mavoga)\
**Post date:** [3 Febbraio 2023, 3:21pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706/6 "2023-02-03T15:21:23Z")

</div>

Da qui, applicazione CIE-ID:

 ![Screenshot_20230203_161741](https://forum.italia.it/uploads/default/original/2X/1/136ddd98971c92386b9eb021771e3dbca10ff065.png)

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

---

<div class="post-metadata">

**Author:** ![mavoga](https://forum.italia.it/user_avatar/forum.italia.it/mavoga/32/8665_2.png) [@mavoga](https://forum.italia.it/u/mavoga)\
**Post date:** [3 Febbraio 2023, 7:51pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706/7 "2023-02-03T19:51:55Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![mavoga](https://forum.italia.it/user_avatar/forum.italia.it/mavoga/32/8665_2.png) [@mavoga](https://forum.italia.it/u/mavoga)\
**Post date:** [3 Febbraio 2023, 11:24pm UTC](https://forum.italia.it/t/debian-bookworm-crash-alla-chiusura-di-libreoffice/32706/8 "2023-02-03T23:24:56Z")

</div>

Problema noto e segnalato da tempo:

> <https://github.com/italia/cie-middleware-linux/issues/40>
>
> Eseguendo il test, anche dando 20 come primo input, il programma esce abortendo …a causa di un \`double free\`. Si tratta di \`CLog::~CLog()\` come si vede lanciando il test sotto gdb:
> 
> \`\`\`gdb
> Insert the test number:
> 20
> \---------------------------------------------------------
> Bye Bye
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> \---------------------------------------------------------
> free(): double free detected in tcache 2
> 
> Program received signal SIGABRT, Aborted.
> \_\_GI\_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
> Download failed: Invalid argument. Continuing without source file ./signal/../sysdeps/unix/sysv/linux/raise.c.
> 50	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
> (gdb) bt
> \#0 \_\_GI\_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
> \#1 0x00007ffff7bd7537 in \_\_GI\_abort () at abort.c:79
> \#2 0x00007ffff7c30768 in \_\_libc\_message (action=action@entry=do\_abort, fmt=fmt@entry=0x7ffff7d3ee2d "%s\\n") at ../sysdeps/posix/libc\_fatal.c:155
> \#3 0x00007ffff7c37a5a in malloc\_printerr (str=str@entry=0x7ffff7d41170 "free(): double free detected in tcache 2") at malloc.c:5347
> \#4 0x00007ffff7c39055 in \_int\_free (av=0x7ffff7d70b80 \<main\_arena\>, p=0x55555557bc70, have\_lock=0) at malloc.c:4201
> \#5 0x00007ffff79e479f in CLog::~CLog (this=0x7ffff7a66020 \<Log\>, \_\_in\_chrg=\<optimized out\>) at ../cie-pkcs11/Util/log.cpp:120
> \#6 0x00007ffff7bf04d7 in \_\_run\_exit\_handlers (status=0, listp=0x7ffff7d70718 \<\_\_exit\_funcs\>, run\_list\_atexit=run\_list\_atexit@entry=true, 
> run\_dtors=run\_dtors@entry=true) at exit.c:108
> \#7 0x00007ffff7bf067a in \_\_GI\_exit (status=\<optimized out\>) at exit.c:139
> \#8 0x00007ffff7bd8d11 in \_\_libc\_start\_main (main=0x555555558c10 \<main(int, char\*\*)\>, argc=2, argv=0x7fffffffe078, init=\<optimized out\>, 
> fini=\<optimized out\>, rtld\_fini=\<optimized out\>, stack\_end=0x7fffffffe068) at ../csu/libc-start.c:342
> \#9 0x000055555555632a in \_start ()
> 
> \`\`\`
> In effetti, la definizione \`CLog Log;\` è stata spostata in \`defines.h\`. Non mi è chiaro se gcc tenta di considerarlo un unico oggetto.
> 
> Forse dovrebbe essere dichiarato \`static\` cosicché ognuno abbia la sua copia di Log, oppure costruirlo come singleton in modo da condividere un'unica copia.
> 
> Peraltro, c'è un altro \`log.cpp\` in \`cie\_sign\_sdk/src/Util\`, leggermente diverso. C'è una ragione per tenerne due copie?
> 
> Già che ci sono, posso chiedere se questo repository viene usato anche per WIN32?
