saturneric / GpgFrontend

A free, open-source, robust yet user-friendly, compact and cross-platform tool for OpenPGP encryption. It stands out as an exceptional GUI frontend for the modern GnuPG (gpg).
https://gpgfrontend.bktus.com
GNU General Public License v3.0
450 stars 43 forks source link

Crashes when performing actions such as encrypting and decrypting #158

Open h3mhFs7bjD opened 2 weeks ago

h3mhFs7bjD commented 2 weeks ago

Software version: 2.1.3-qt6 appimage OS: Fedora 39 in a VM

Randomly, when decrypting the software closes. It does not happen every time, but often enough to be reproducible. I can keep pressing Encrypt or Decrypt and it'll crash after several times, consistently.

Trace/debug around the time it occurs:

[13:02:44.180] [T:3250] [ core ] [ debug  ] [SettingsObject.cpp:38] [SettingsObject] -> loading settings from: WaitingDialog_dialog_state (+4734046us)
[13:02:44.181] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:105] [GetDataObject] -> try to get data object from disk, key: WaitingDialog_dialog_state (+782us)
[13:02:44.181] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:127] [GetDataObject] -> data object has been decoded, key: WaitingDialog_dialog_state, data: {
    "height": 42,
    "width": 240,
    "window_save": true,
    "window_state_data": "",
    "x": 730,
    "y": 523
}
 (+167us)
[13:02:44.181] [T:3250] [ core ] [ debug  ] [SettingsObject.cpp:43] [SettingsObject] -> settings object: WaitingDialog_dialog_state loaded. (+362us)
[13:02:44.182] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:55] [slot_restore_settings] -> stored dialog pos, x: 730, y: 523 (+5132570us)
[13:02:44.182] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:59] [slot_restore_settings] -> relative dialog pos, x: 730, y: 523 (+83us)
[13:02:44.182] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:64] [slot_restore_settings] -> stored dialog size, width: 240, height: 42 (+123us)
[13:02:44.182] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:68] [slot_restore_settings] -> dialog stored target rect, width: 240, height: 42 (+177us)
[13:02:44.182] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:88] [SaveDataObj] -> saving data object a82f88c257423e3396c842657d7dce2bf5260829614b0f3f4da4a83d323f6d95 to disk /home/user/.local/share/GpgFrontend-2.1.3-qt6-linux-x86_64.AppImage/data_objs/a82f88c257423e3396c842657d7dce2bf5260829614b0f3f4da4a83d323f6d95 , size: 128 bytes (+569us)
[13:02:44.193] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:135] [movePosition2CenterOfParent] -> parent pos x: 321 y: 254 (+10609us)
[13:02:44.193] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:136] [movePosition2CenterOfParent] -> parent size width: 1689, height: 1004 (+150us)
[13:02:44.193] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:138] [movePosition2CenterOfParent] -> parent center pos x: 1165, y: 755 (+119us)
[13:02:44.193] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:140] [movePosition2CenterOfParent] -> dialog pos x: 1051 y: 777 (+72us)
[13:02:44.193] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:141] [movePosition2CenterOfParent] -> dialog size width: 240 height: 42 (+57us)
[13:02:44.193] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:152] [movePosition2CenterOfParent] -> update position to parent's center, target pos, x:1045, y: 734 (+71us)
[13:02:44.196] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:210] [showEvent] -> General Dialog named WaitingDialog is about to show, caught show event (+2913us)
[13:02:44.263] [T:3250] [ core ] [ debug  ] [AsyncUtils.cpp:45] [RunGpgOperaAsync] -> got gnupg version from rt: 2.4.4, operation: gpgme_op_encrypt (+80524us)
[13:02:44.263] [T:3250] [ core ] [ trace  ] [Task.cpp:68] [Impl] -> task {a0b173bc-58b0-4c67-875c-469eb0ed08d0}/gpgme_op_encrypt created with runnable and callback, callback_thread_: 0x55f560c0d00 (+156us)
[13:02:44.263] [T:3250] [ core ] [ trace  ] [Task.cpp:140] [init] -> task gpgme_op_encrypt created, parent: 0x55f5761f720, impl: 0x55f56c14600 (+45us)
[13:02:44.263] [T:3250] [ core ] [ trace  ] [TaskRunner.cpp:68] [RegisterTask] -> runner starts task: {a0b173bc-58b0-4c67-875c-469eb0ed08d0}/gpgme_op_encrypt at thread: 0x72898fbb1cc0 (+40us)
[13:02:44.263] [T:3284] [ core ] [ trace  ] [Task.cpp:241] [slot_exception_safe_run] -> task runnable {a0b173bc-58b0-4c67-875c-469eb0ed08d0}/gpgme_op_encrypt is starting... (+104us)
[13:02:44.263] [T:3284] [ core ] [ trace  ] [Task.cpp:98] [Run] -> task {a0b173bc-58b0-4c67-875c-469eb0ed08d0}/gpgme_op_encrypt is in classical runnable and callback mode (+3us)
[*** LOG ERROR #0015 ***] [2024-06-20 13:02:44] [core] {argument not found}
[13:02:44.273] [T:3250] [ core ] [ trace  ] [Task.cpp:159] [operator()] -> task callback {a0b173bc-58b0-4c67-875c-469eb0ed08d0}/gpgme_op_encrypt is starting with runnerable rtn: 0 (+9739us)
[13:02:44.273] [T:3250] [  ui  ] [ debug  ] [UserInterfaceUtils.cpp:235] [operator()] -> called operating waiting cb, dialog: 0x55f56c1e080 (+76788us)
[13:02:44.274] [T:3250] [ core ] [ debug  ] [SettingsObject.cpp:38] [SettingsObject] -> loading settings from: WaitingDialog_dialog_state (+1580us)
[13:02:44.274] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:105] [GetDataObject] -> try to get data object from disk, key: WaitingDialog_dialog_state (+167us)
[13:02:44.275] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:127] [GetDataObject] -> data object has been decoded, key: WaitingDialog_dialog_state, data: {
    "height": 42,
    "width": 240,
    "window_save": true,
    "window_state_data": "",
    "x": 730,
    "y": 523
}
 (+207us)
[13:02:44.275] [T:3250] [ core ] [ debug  ] [SettingsObject.cpp:43] [SettingsObject] -> settings object: WaitingDialog_dialog_state loaded. (+233us)
[13:02:44.276] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:89] [slot_save_settings] -> dialog pos, x: 1051, y: 777 (+2945us)
[13:02:44.276] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:90] [slot_save_settings] -> dialog size, width: 240, height: 42 (+200us)
[13:02:44.276] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:95] [slot_save_settings] -> store dialog pos, x: 730, y: 523 (+108us)
[13:02:44.276] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:88] [SaveDataObj] -> saving data object a82f88c257423e3396c842657d7dce2bf5260829614b0f3f4da4a83d323f6d95 to disk /home/user/.local/share/GpgFrontend-2.1.3-qt6-linux-x86_64.AppImage/data_objs/a82f88c257423e3396c842657d7dce2bf5260829614b0f3f4da4a83d323f6d95 , size: 128 bytes (+1251us)
[13:02:44.276] [T:3250] [ core ] [ debug  ] [SettingsObject.cpp:38] [SettingsObject] -> loading settings from: WaitingDialog_dialog_state (+231us)
[13:02:44.276] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:105] [GetDataObject] -> try to get data object from disk, key: WaitingDialog_dialog_state (+152us)
[13:02:44.277] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:127] [GetDataObject] -> data object has been decoded, key: WaitingDialog_dialog_state, data: {
    "height": 42,
    "width": 240,
    "window_save": true,
    "window_state_data": "",
    "x": 730,
    "y": 523
}
 (+131us)
[13:02:44.277] [T:3250] [ core ] [ debug  ] [SettingsObject.cpp:43] [SettingsObject] -> settings object: WaitingDialog_dialog_state loaded. (+103us)
[13:02:44.277] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:89] [slot_save_settings] -> dialog pos, x: 1051, y: 777 (+799us)
[13:02:44.277] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:90] [slot_save_settings] -> dialog size, width: 240, height: 42 (+61us)
[13:02:44.277] [T:3250] [  ui  ] [ debug  ] [GeneralDialog.cpp:95] [slot_save_settings] -> store dialog pos, x: 730, y: 523 (+92us)
[13:02:44.277] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:88] [SaveDataObj] -> saving data object a82f88c257423e3396c842657d7dce2bf5260829614b0f3f4da4a83d323f6d95 to disk /home/user/.local/share/GpgFrontend-2.1.3-qt6-linux-x86_64.AppImage/data_objs/a82f88c257423e3396c842657d7dce2bf5260829614b0f3f4da4a83d323f6d95 , size: 128 bytes (+325us)
[13:02:44.278] [T:3250] [ core ] [ debug  ] [SettingsObject.cpp:38] [SettingsObject] -> loading settings from: general_settings_state (+520us)
[13:02:44.278] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:105] [GetDataObject] -> try to get data object from disk, key: general_settings_state (+60us)
[13:02:44.278] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:127] [GetDataObject] -> data object has been decoded, key: general_settings_state, data: {
    "info_board_font_size": 12,
    "save_window_state": true,
    "text_editor_font_size": 12,
    "tool_bar_button_style": 3,
    "tool_bar_icon_height": 24,
    "tool_bar_icon_width": 24
}
 (+173us)
[13:02:44.278] [T:3250] [ core ] [ debug  ] [SettingsObject.cpp:43] [SettingsObject] -> settings object: general_settings_state loaded. (+54us)
[13:02:44.278] [T:3250] [ core ] [ trace  ] [DataObjectOperator.cpp:88] [SaveDataObj] -> saving data object fb286542de303073ec2a0f37cdd03f9eac01f3e8d4d852d66f9b668bd26bab0a to disk /home/user/.local/share/GpgFrontend-2.1.3-qt6-linux-x86_64.AppImage/data_objs/fb286542de303073ec2a0f37cdd03f9eac01f3e8d4d852d66f9b668bd26bab0a , size: 208 bytes (+48us)
[13:02:44.279] [T:3250] [ core ] [ trace  ] [Task.cpp:164] [operator()] -> task callback {a0b173bc-58b0-4c67-875c-469eb0ed08d0}/gpgme_op_encrypt finished, rtn: 0 (+1103us)
[13:02:44.279] [T:3284] [ core ] [ trace  ] [Task.cpp:74] [~Impl] -> task {a0b173bc-58b0-4c67-875c-469eb0ed08d0}/gpgme_op_encrypt destroyed (+134us)
bash: Job 1, './GpgFrontend-2.1.3-qt6-linux-x…' terminated by signal SIGSEGV (Address boundary error)
saturneric commented 2 weeks ago

I'm currently developing under macOS, a platform that may not be very sensitive to memory issues. Theoretically memory issues are intolerable, so I think it's time to test the normality of memory usage under the Linux platform, although it's a tough job. :)