manisandro / gImageReader

A Gtk/Qt front-end to tesseract-ocr.
GNU General Public License v3.0
1.6k stars 188 forks source link

Crash of gimagereader-gtk when deleting an image #540

Closed mikhailnov closed 2 years ago

mikhailnov commented 3 years ago

Hello

I have built and installed gImageReader gtk from current git master (commit d3cdd00b3e848867d95db28354afc41814d5dd0c). It works well, but I have caught a crash when I tried to delete one of the added images, if I remmeber correctly, but could not reproduce it, unfortunately, it did not crash anymore.

Let me provide a coredump, maybe it will help.

Coredump itself: dump1.xz https://file-store.rosalinux.ru/download/908c545fa8d5f9ba5b98837351e2cb66e63b1f18

Binary builds (from https://abf.io/build_lists/3863110): gimagereader-gtk-3.3.1-2.gitd3cdd.1-rosa2021.1.x86_64.rpm https://file-store.rosalinux.ru/api/v1/file_stores/9d644f679298d596dd7d83d40d08b910924e03da gimagereader-common-3.3.1-2.gitd3cdd.1-rosa2021.1.noarch.rpm https://file-store.rosalinux.ru/api/v1/file_stores/8da838499e717131bb8217fc718ab85e004b61ba

Debuginfo (stripped from the binary build above): gimagereader-debuginfo-3.3.1-2.gitd3cdd.1-rosa2021.1.x86_64.rpm https://file-store.rosalinux.ru/api/v1/file_stores/11e927b1d4358dfc305f719bfc3f7e8088c29e47 gimagereader-debugsource-3.3.1-2.gitd3cdd.1-rosa2021.1.x86_64.rpm https://file-store.rosalinux.ru/api/v1/file_stores/a29ec7ae3dec9f6da7800db63a96dff7128b3a58 gimagereader-gtk-debuginfo-3.3.1-2.gitd3cdd.1-rosa2021.1.x86_64.rpm https://file-store.rosalinux.ru/api/v1/file_stores/40f7aded59f33f62123f0edcb1d5fec79b586d86

For case those links go offline, here is a zip archive with all those files: gimagereader-crash.zip https://file-store.rosalinux.ru/download/a4d1037d5ba65fb0e63e528fe782df0505ba1fae

$ coredumpctl gdb <PID>
<...>
Core was generated by `gimagereader-gtk'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007f1fbac10407 in raise () from /lib64/libpthread.so.0
[Current thread is 1 (Thread 0x7f1fb8528c00 (LWP 5970))]
(gdb) 
(gdb) bt
#0  0x00007f1fbac10407 in raise () at /lib64/libpthread.so.0
#1  0x0000000000491de4 in MainWindow::signalHandlerExec(int, bool) (sig=6, tesseractCrash=<optimized out>) at /usr/src/debug/gimagereader-3.3.1-2.gitd3cdd.1.x86_64/gtk/src/MainWindow.cc:96
#2  0x0000000000492449 in terminateHandler() () at /usr/src/debug/gimagereader-3.3.1-2.gitd3cdd.1.x86_64/gtk/src/MainWindow.cc:114
#3  0x00007f1fbae7104a in __cxxabiv1::__terminate(void (*)()) () at /lib64/libstdc++.so.6
#4  0x00007f1fbae700a9 in  () at /lib64/libstdc++.so.6
#5  0x00007f1fbae707d7 in __gxx_personality_v0 () at /lib64/libstdc++.so.6
#6  0x00007f1fbac2f194 in _Unwind_RaiseException_Phase2 (exc=0x4fd2560, context=0x7ffd273dd770, frames_p=0x7ffd273dd860) at ../../../libgcc/unwind.inc:64
#7  0x00007f1fbac2f831 in _Unwind_RaiseException (exc=0x4fd2560) at ../../../libgcc/unwind.inc:136
#8  0x00007f1fbae7133b in __cxa_throw () at /lib64/libstdc++.so.6
#9  0x00007f1fbca66fc9 in Gio::Error::throw_func(_GError*) () at /usr/lib64/libgiomm-2.4.so.1
#10 0x00007f1fbbdd4858 in Glib::Error::throw_exception(_GError*) () at /usr/lib64/libglibmm-2.4.so.1
#11 0x00007f1fbcaaac8a in Gio::File::remove() () at /usr/lib64/libgiomm-2.4.so.1
#12 0x00000000004cc669 in Source::~Source() (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/glibmm-2.4/glibmm/refptr.h:259
#13 Source::~Source() (this=0x4f9c060, __in_chrg=<optimized out>) at /usr/src/debug/gimagereader-3.3.1-2.gitd3cdd.1.x86_64/gtk/src/SourceManager.hh:40
#14 0x000000000048b9f2 in FileTreeModel::FileNode::~FileNode() (this=0x169a130, __in_chrg=<optimized out>) at /usr/include/c++/11.1.0/ext/new_allocator.h:89
#15 FileTreeModel::FileNode::~FileNode() (this=0x169a130, __in_chrg=<optimized out>) at /usr/src/debug/gimagereader-3.3.1-2.gitd3cdd.1.x86_64/gtk/src/FileTreeModel.hh:99
#16 FileTreeModel::DirNode::~DirNode() (this=0x4f13770, __in_chrg=<optimized out>) at /usr/src/debug/gimagereader-3.3.1-2.gitd3cdd.1.x86_64/gtk/src/FileTreeModel.hh:110
#17 0x0000000000487a59 in FileTreeModel::DirNode::~DirNode() (this=0x4f13770, __in_chrg=<optimized out>)
    at /usr/src/debug/gimagereader-3.3.1-2.gitd3cdd.1.x86_64/gtk/src/FileTreeModel.hh:105
#18 FileTreeModel::removeIndex(Gtk::TreeIter const&) (this=0x15612b0, index=...) at /usr/src/debug/gimagereader-3.3.1-2.gitd3cdd.1.x86_64/gtk/src/FileTreeModel.cc:265
#19 0x00000000004c5af6 in SourceManager::removeSource(bool) (this=0x16a02e0, deleteFile=true) at /usr/include/glibmm-2.4/glibmm/refptr.h:259
#20 0x00007f1fbbddbfe8 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) () at /usr/lib64/libglibmm-2.4.so.1
#21 0x00007f1fbba4964f in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#22 0x00007f1fbba5bb21 in signal_emit_unlocked_R () at /usr/lib64/libgobject-2.0.so.0
#23 0x00007f1fbba61d61 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#24 0x00007f1fbba6230f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#25 0x00007f1fbc24f390 in gtk_real_button_released () at /usr/lib64/libgtk-3.so.0
#26 0x00007f1fbcf4ab6e in Gtk::Button_Class::released_callback(_GtkButton*) () at /usr/lib64/libgtkmm-3.0.so.1
#27 0x00007f1fbba4964f in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#28 0x00007f1fbba5b5a5 in signal_emit_unlocked_R () at /usr/lib64/libgobject-2.0.so.0
#29 0x00007f1fbba61d61 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#30 0x00007f1fbba6230f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#31 0x00007f1fbc24e4d3 in multipress_released_cb () at /usr/lib64/libgtk-3.so.0
#32 0x00007f1fbc208f0b in _gtk_marshal_VOID__INT_DOUBLE_DOUBLEv () at /usr/lib64/libgtk-3.so.0
#33 0x00007f1fbba49879 in _g_closure_invoke_va () at /usr/lib64/libgobject-2.0.so.0
#34 0x00007f1fbba620e9 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#35 0x00007f1fbba6230f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#36 0x00007f1fbc32d06c in gtk_gesture_multi_press_end () at /usr/lib64/libgtk-3.so.0
#37 0x00007f1fbba4c69b in g_cclosure_marshal_VOID__BOXEDv () at /usr/lib64/libgobject-2.0.so.0
#38 0x00007f1fbba49879 in _g_closure_invoke_va () at /usr/lib64/libgobject-2.0.so.0
#39 0x00007f1fbba620e9 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#40 0x00007f1fbba6230f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#41 0x00007f1fbc3299e7 in _gtk_gesture_check_recognized () at /usr/lib64/libgtk-3.so.0
#42 0x00007f1fbc32b1a3 in gtk_gesture_handle_event () at /usr/lib64/libgtk-3.so.0
#43 0x00007f1fbc32e848 in gtk_gesture_single_handle_event () at /usr/lib64/libgtk-3.so.0
#44 0x00007f1fbc2ee20c in gtk_event_controller_handle_event () at /usr/lib64/libgtk-3.so.0
#45 0x00007f1fbc4dc20d in _gtk_widget_run_controllers () at /usr/lib64/libgtk-3.so.0
#46 0x00007f1fbd001ee5 in Gtk::Widget::on_button_release_event(_GdkEventButton*) () at /usr/lib64/libgtkmm-3.0.so.1
#47 0x00007f1fbd003f95 in Gtk::Widget_Class::button_release_event_callback(_GtkWidget*, _GdkEventButton*) () at /usr/lib64/libgtkmm-3.0.so.1
--Type <RET> for more, q to quit, c to continue without paging--
#48 0x00007f1fbc202d94 in _gtk_marshal_BOOLEAN__BOXEDv () at /usr/lib64/libgtk-3.so.0
#49 0x00007f1fbba49879 in _g_closure_invoke_va () at /usr/lib64/libgobject-2.0.so.0
#50 0x00007f1fbba6144b in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#51 0x00007f1fbba6230f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#52 0x00007f1fbc4ddd64 in gtk_widget_event_internal.part () at /usr/lib64/libgtk-3.so.0
#53 0x00007f1fbc37ac90 in propagate_event () at /usr/lib64/libgtk-3.so.0
#54 0x00007f1fbc37c745 in gtk_main_do_event () at /usr/lib64/libgtk-3.so.0
#55 0x00007f1fbc0a4b15 in _gdk_event_emit () at /usr/lib64/libgdk-3.so.0
#56 0x00007f1fbc0fc4a2 in gdk_event_source_dispatch () at /usr/lib64/libgdk-3.so.0
#57 0x00007f1fbb9554db in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#58 0x00007f1fbb955788 in g_main_context_iterate.constprop () at /usr/lib64/libglib-2.0.so.0
#59 0x00007f1fbb95583f in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#60 0x00007f1fbbf19755 in g_application_run () at /usr/lib64/libgio-2.0.so.0
#61 0x000000000044b6bf in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/gimagereader-3.3.1-2.gitd3cdd.1.x86_64/gtk/src/main.cc:124
(gdb) 

Additional compiler flags used to build it: $ rpm -E %optflags -O2 -fomit-frame-pointer -gdwarf-4 -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-strong --param=ssp-buffer-size=4 -m64 -mtune=generic

manisandro commented 2 years ago

Should be fixed by https://github.com/manisandro/gImageReader/commit/cdffc4781939083c316d7bc832dc36893c0ea174

mikhailnov commented 2 years ago

Thanks!