[grisbi-bugs] [Grisbi 0002374]: Mon fichier de compte cause une erreur de segmentation à l'ouverture.
Grisbi Bug Tracker
bugtracker at grisbi.org
Dim 15 Fév 16:37:39 CET 2026
Issue 0002374 is now monitored by user sanchezb.
======================================================================
https://www.grisbi.org/bugsreports/view.php?id=2374
======================================================================
Reported By: brochignac
Assigned To:
======================================================================
Project: Grisbi
Issue ID: 2374
Category: Main
Reproducibility: always
Severity: major
Priority: normal
Status: new
OS: Ubuntu
Version exact Grisbi: 3.92.0
Version OS: 24.04
Version GTK: 3.24.41
======================================================================
Date Submitted: 2026-02-06 18:16 CET
Last Modified: 2026-02-15 16:37 CET
======================================================================
Summary: Mon fichier de compte cause une erreur de
segmentation à l'ouverture.
Description:
Mon fichier de compte (~ 35 450 opérations) fait crasher Grisbi branche
"master".
Si j'ouvre le fichier "Example_3.0-fr.gsb", je n'ai pas de crash.
La branche "grisbi-3.0.x" ouvre normalement mon fichier de compte.
Grisbi version: 3.92.0
~/grisbi-dev/master/bin/grisbi(+0x5ce69) [0x5e1696120e69]
~/grisbi-dev/master/bin/grisbi(+0x5d465) [0x5e1696121465]
/lib/x86_64-linux-gnu/libc.so.6(+0x45330) [0x7fae96445330]
~/grisbi-dev/master/bin/grisbi(+0xadfb2) [0x5e1696171fb2]
~/grisbi-dev/master/bin/grisbi(+0xc6cb1) [0x5e169618acb1]
~/grisbi-dev/master/bin/grisbi(+0xd6f17) [0x5e169619af17]
~/grisbi-dev/master/bin/grisbi(+0xd7914) [0x5e169619b914]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x61f4c) [0x7fae96ff1f4c]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_markup_parse_context_parse+0x10c9)
[0x7fae96ff5209]
~/grisbi-dev/master/bin/grisbi(+0xd801d) [0x5e169619c01d]
~/grisbi-dev/master/bin/grisbi(+0xcc2cd) [0x5e16961902cd]
~/grisbi-dev/master/bin/grisbi(+0x1233a3) [0x5e16961e73a3]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_closure_invoke+0x14a)
[0x7fae970ee2fa]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x4490c) [0x7fae9711d90c]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x35591) [0x7fae9710e591]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit_valist+0x41)
[0x7fae9710e7c1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit+0x93) [0x7fae9710e883]
/lib/x86_64-linux-gnu/libgio-2.0.so.0(+0xeec05) [0x7fae9722ac05]
/lib/x86_64-linux-gnu/libgio-2.0.so.0(g_action_activate+0x5f) [0x7fae9721e5df]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0xd978f) [0x7fae976d978f]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x356bd) [0x7fae9710e6bd]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit_valist+0x41)
[0x7fae9710e7c1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit+0x93) [0x7fae9710e883]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0xdaf08) [0x7fae976daf08]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x356bd) [0x7fae9710e6bd]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit_valist+0x41)
[0x7fae9710e7c1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit+0x93) [0x7fae9710e883]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0xdaccd) [0x7fae976daccd]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x99b43) [0x7fae97699b43]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x356bd) [0x7fae9710e6bd]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit_valist+0x41)
[0x7fae9710e7c1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit+0x93) [0x7fae9710e883]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x1b62f3) [0x7fae977b62f3]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_cclosure_marshal_VOID__BOXEDv+0x9a)
[0x7fae970f28da]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x356bd) [0x7fae9710e6bd]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit_valist+0x41)
[0x7fae9710e7c1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit+0x93) [0x7fae9710e883]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x1adf5c) [0x7fae977adf5c]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x1b5ccb) [0x7fae977b5ccb]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x1b95ca) [0x7fae977b95ca]
/lib/x86_64-linux-gnu/libgtk-3.so.0(gtk_event_controller_handle_event+0x73)
[0x7fae97778ab3]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x35e6d8) [0x7fae9795e6d8]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x982f7) [0x7fae976982f7]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(+0x356bd) [0x7fae9710e6bd]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit_valist+0x41)
[0x7fae9710e7c1]
/lib/x86_64-linux-gnu/libgobject-2.0.so.0(g_signal_emit+0x93) [0x7fae9710e883]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x366bf4) [0x7fae97966bf4]
/lib/x86_64-linux-gnu/libgtk-3.so.0(+0x203390) [0x7fae97803390]
/lib/x86_64-linux-gnu/libgtk-3.so.0(gtk_main_do_event+0xa3a) [0x7fae97803f2a]
/lib/x86_64-linux-gnu/libgdk-3.so.0(+0x3a407) [0x7fae9753f407]
======================================================================
----------------------------------------------------------------------
(0007449) LudovicRousseau (administrator) - 2026-02-06 21:20
https://www.grisbi.org/bugsreports/view.php?id=2374#c7449
----------------------------------------------------------------------
Est-ce que c'est reproductible avec le fichier de compte anonymisé ?
----------------------------------------------------------------------
(0007450) brochignac (reporter) - 2026-02-06 21:44
https://www.grisbi.org/bugsreports/view.php?id=2374#c7450
----------------------------------------------------------------------
Oui.
Le fichier anonymisé joint, avec la même erreur de segmentation.
----------------------------------------------------------------------
(0007451) LudovicRousseau (administrator) - 2026-02-06 23:26
https://www.grisbi.org/bugsreports/view.php?id=2374#c7451
----------------------------------------------------------------------
Le fichier semble corrompu
La transaction 26790 n'est pas correcte.
<Transaction Ac="-2" Nb="26790" Id="(null)" Dt="02/28/2018" Dv="(null)" Cu="1"
Am="0.00" Exb="0" Exr="0.00" Exf="0.00" Pa="600" Ca="2" Sca="1" Br="0"
No="(null)" Pn="26" Pc="(null)" Ma="0" Ar="1" Au="1" Re="0" Fi="-2" Bu="0"
Sbu="0" Vo="(null)" Ba="(null)" Trt="0" Mo="0" />
Elle utilise le compte numéro -2 et ça fait planter Grisbi.
Si je modifie le fichier pour utiliser Ac="1" ça ne plante plus mais c'est pas
forcement la bonne correction.
----------------------------------------------------------------------
(0007453) LudovicRousseau (administrator) - 2026-02-07 11:27
https://www.grisbi.org/bugsreports/view.php?id=2374#c7453
----------------------------------------------------------------------
Idéalement il faudrait un code de chargement de fichier .gsb qui soit robuste
et qui indique clairement le problème quand il y en a un.
Mais ça va être très compliqué.
Il faudrait comprendre pourquoi/comment ton fichier s'est retrouvé avec Ac="-2"
Il y a aussi le problème dans les fichiers de sauvegardes ?
----------------------------------------------------------------------
(0007454) brochignac (reporter) - 2026-02-07 12:53
https://www.grisbi.org/bugsreports/view.php?id=2374#c7454
----------------------------------------------------------------------
J'ai testé mes fichiers de sauvegarde jusqu'en 2018 :
- erreur de segmentation avec la version git "master"
- ouverture du fichier avec la version 3.90.1 "officielle" et la version git
"grisbi-3.0.x" sans problème.
Je n'ai pas pu testé avant 2018 pour cause de changement de chiffrement (il
faudrait que je réinstalle une ancienne version).
J'ai retrouvé l'opération fautive du 28/02/2018, avec Ac="-2"
Mon fichier a cette erreur (Ac="-2") depuis 2018.
Pourquoi, je ne saurait le dire.
J'ai débogué mon fichier, mais sans détection d'incohérence.
Deux questions :
- comment ce fait-il que seule, la version "master" à une erreur de
segmentation ?
- où peut-on trouver un descriptif des différents champs du fichier Grisbi
quand on l'ouvre avec un éditeur de texte ?
Merci
----------------------------------------------------------------------
(0007455) brochignac (reporter) - 2026-02-07 13:23
https://www.grisbi.org/bugsreports/view.php?id=2374#c7455
----------------------------------------------------------------------
J'ai trouvé le descriptif du format du fichier sur sourceforge.net :
https://sourceforge.net/projects/grisbi/files/Documentation/Format-fichier-grisbi/
----------------------------------------------------------------------
(0007456) brochignac (reporter) - 2026-02-07 13:44
https://www.grisbi.org/bugsreports/view.php?id=2374#c7456
----------------------------------------------------------------------
J'ai trouvé les "presque" deux mêmes opérations avec le même montant à la
même date :
<Transaction Ac="-2" Nb="26790" Id="(null)" Dt="02/28/2018" Ma="0" Au="1"
Re="0" Fi="-2" />
<Transaction Ac="6" Nb="26811" Id="(null)" Dt="02/28/2018" Ma="3" Au="0"
Re="999" Fi="0" />
Peut-on supprimer "à la main" la transaction incorrecte, ou cela fera-t-il un
trou dans les Nb de transactions ?
----------------------------------------------------------------------
(0007457) LudovicRousseau (administrator) - 2026-02-07 16:43
https://www.grisbi.org/bugsreports/view.php?id=2374#c7457
----------------------------------------------------------------------
je pense que tu peux supprimer la ligne à problème.
Passe un coup de "Déboguer le fichier de comptes" pour vérifier que tout va
bien.
Pierre est plus expert que moi sur ces questions.
----------------------------------------------------------------------
(0007459) LudovicRousseau (administrator) - 2026-02-08 22:53
https://www.grisbi.org/bugsreports/view.php?id=2374#c7459
----------------------------------------------------------------------
ça plante depuis le commit
https://github.com/grisbi/grisbi/commit/55a5aaf18f0b5f40d6769c3e6c0501fa81eb821d
qui à remplacé l'utilisation de gsb_data_account_set_balances_are_dirty() par
la toute nouvelle fonction
gsb_data_account_set_marked_balance_from_transaction() introduite dans le commit
précédent.
Dans l'ancienne fonction on a ce code :
gboolean gsb_data_account_set_balances_are_dirty (gint account_number)
{
AccountStruct *account;
account = gsb_data_account_get_structure (account_number);
if (!account)
return FALSE;
account->balances_are_dirty = TRUE;
return TRUE;
}
Si account_number vaut -2 alors le compte n'est pas trouvé et account est NULL.
La fonction retourne FALSE et le code n'essaie pas de déréférencer
account->balances_are_dirty qui ferait crashé tout autant.
Peut-être que c'est pas plus mal que Grisbi plante, pour inciter à corriger le
fichier de compte.
----------------------------------------------------------------------
(0007460) brochignac (reporter) - 2026-02-09 18:43
https://www.grisbi.org/bugsreports/view.php?id=2374#c7460
----------------------------------------------------------------------
<<Passe un coup de "Déboguer le fichier de comptes" pour vérifier que tout va
bien.>>
C'est ce que j'ai fais, sans que Grisbi y trouve une incohérence même avec
Ac="-2" (c'est là depuis 2018).
Comment as-tu fais pour trouver l'opération fautive ?
----------------------------------------------------------------------
(0007461) LudovicRousseau (administrator) - 2026-02-09 22:03
https://www.grisbi.org/bugsreports/view.php?id=2374#c7461
----------------------------------------------------------------------
Avec un debugger.
Le programme s'est arrêté sur le code qui fait planter et c'est alors facile
de comprendre ce qui ne va pas.
Mais c'est pas du tout user-friendly.
----------------------------------------------------------------------
(0007462) brochignac (reporter) - 2026-02-11 20:24
https://www.grisbi.org/bugsreports/view.php?id=2374#c7462
----------------------------------------------------------------------
Merci.
J'ai testé 2 méthodes pour annuler cette opération :
1 - suppression de la ligne dans un éditeur de texte (Kate),
2.1 - modification du <<Ac="-2">> par <<Ac="6">>, toujours dans l'éditeur de
texte,
2.2 - ouverture du fichier (modifié) avec Grisbi
2.3 - suppression de l'opération.
Pas de problèmes avec le fichier par la suite.
----------------------------------------------------------------------
(0007463) pbiava (administrator) - 2026-02-12 17:08
https://www.grisbi.org/bugsreports/view.php?id=2374#c7463
----------------------------------------------------------------------
Le problème posé par la correction de cette erreur c'est de savoir où la
faire sans trop augmenter le temps d'exécution. je regarde ça
----------------------------------------------------------------------
(0007465) brochignac (reporter) - 2026-02-15 16:28
https://www.grisbi.org/bugsreports/view.php?id=2374#c7465
----------------------------------------------------------------------
Le commit e0ecc32 / branch master créé systématiquement sur tous les comptes
l'avertissement de N° compte=-1 (voir capture d'écran) alors qu'il n'y a aucun
compte = -1.
De plus, petite coquille dans le texte "... account =-1s <=0 ...".
Issue History
Date Modified Username Field Change
======================================================================
2026-02-06 18:16 brochignac New Issue
2026-02-06 21:20 LudovicRousseauNote Added: 0007449
2026-02-06 21:44 brochignac Note Added: 0007450
2026-02-06 21:44 brochignac File Added: 2007-2026-obfuscated.gsb
2026-02-06 23:26 LudovicRousseauNote Added: 0007451
2026-02-07 11:27 LudovicRousseauNote Added: 0007453
2026-02-07 12:53 brochignac Note Added: 0007454
2026-02-07 13:23 brochignac Note Added: 0007455
2026-02-07 13:44 brochignac Note Added: 0007456
2026-02-07 16:43 LudovicRousseauNote Added: 0007457
2026-02-08 22:53 LudovicRousseauNote Added: 0007459
2026-02-09 18:43 brochignac Note Added: 0007460
2026-02-09 22:03 LudovicRousseauNote Added: 0007461
2026-02-11 20:24 brochignac Note Added: 0007462
2026-02-12 17:08 pbiava Note Added: 0007463
2026-02-15 16:28 brochignac Note Added: 0007465
2026-02-15 16:28 brochignac File Added: N_compte_inf<0.png
======================================================================
Plus d'informations sur la liste de diffusion bugsreports