segmentation fault after editing image and then opening another one in Editor tab

Issue #210 new
yatm created an issue

This happens with version 1.9.3 on Manjaro from the aur: https://aur.archlinux.org/packages/art-rawconverter. Attached is a backtrace obtained via gdb:

Thread 1 "ART" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0  0x0000000000000000 in  ()
#1  0x0000555555883c22 in CropHandler::isFullDisplay() ()
#2  0x0000555555894ec5 in CropWindow::expose(Cairo::RefPtr<Cairo::Context>) ()
#3  0x00005555559b5380 in ImageArea::on_draw(Cairo::RefPtr<Cairo::Context> const&) ()
#4  0x00007ffff6f04ba4 in Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) () at /usr/lib/libgtkmm-3.0.so.1
#5  0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#6  0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#7  0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#8  0x00007ffff795025a in  () at /usr/lib/libgtk-3.so.0
#9  0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#10 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#11 0x00007ffff794b631 in  () at /usr/lib/libgtk-3.so.0
#12 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#13 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#14 0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#15 0x00007ffff78768cd in  () at /usr/lib/libgtk-3.so.0
#16 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#17 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#18 0x00007ffff7876c51 in  () at /usr/lib/libgtk-3.so.0
#19 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#20 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#21 0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#22 0x00007ffff78768cd in  () at /usr/lib/libgtk-3.so.0
#23 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#24 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#25 0x00007ffff7876c51 in  () at /usr/lib/libgtk-3.so.0
#26 0x00007ffff6f0a26b in Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) () at /usr/lib/libgtkmm-3.0.so.1
#27 0x00007ffff6f04ba4 in Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) () at /usr/lib/libgtkmm-3.0.so.1
#28 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#29 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#30 0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#31 0x00007ffff78768cd in  () at /usr/lib/libgtk-3.so.0
#32 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#33 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#34 0x00007ffff7876c51 in  () at /usr/lib/libgtk-3.so.0
#35 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#36 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#37 0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#38 0x00007ffff78768cd in  () at /usr/lib/libgtk-3.so.0
#39 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#40 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#41 0x00007ffff7876c51 in  () at /usr/lib/libgtk-3.so.0
#42 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#43 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#44 0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#45 0x00007ffff78768cd in  () at /usr/lib/libgtk-3.so.0
#46 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#47 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#48 0x00007ffff7876c51 in  () at /usr/lib/libgtk-3.so.0
#49 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#50 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#51 0x00007ffff79d6313 in  () at /usr/lib/libgtk-3.so.0
#52 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#53 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
--Type <RET> for more, q to quit, c to continue without paging--c
#54 0x00007ffff79ceb01 in  () at /usr/lib/libgtk-3.so.0
#55 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#56 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#57 0x00007ffff79d6313 in  () at /usr/lib/libgtk-3.so.0
#58 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#59 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#60 0x00007ffff79ceb01 in  () at /usr/lib/libgtk-3.so.0
#61 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#62 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#63 0x00007ffff79d6273 in  () at /usr/lib/libgtk-3.so.0
#64 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#65 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#66 0x00007ffff79ceb01 in  () at /usr/lib/libgtk-3.so.0
#67 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#68 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#69 0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#70 0x00007ffff78768cd in  () at /usr/lib/libgtk-3.so.0
#71 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#72 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#73 0x00007ffff7876c51 in  () at /usr/lib/libgtk-3.so.0
#74 0x00007ffff6f0a26b in Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) () at /usr/lib/libgtkmm-3.0.so.1
#75 0x00007ffff6f04ba4 in Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) () at /usr/lib/libgtkmm-3.0.so.1
#76 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#77 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#78 0x00007ffff79c4cc0 in  () at /usr/lib/libgtk-3.so.0
#79 0x00007ffff78c3ecd in  () at /usr/lib/libgtk-3.so.0
#80 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#81 0x00007ffff787f008 in  () at /usr/lib/libgtk-3.so.0
#82 0x00007ffff78d8174 in  () at /usr/lib/libgtk-3.so.0
#83 0x00007ffff79c4d14 in  () at /usr/lib/libgtk-3.so.0
#84 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#85 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#86 0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#87 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#88 0x00007ffff78cc501 in gtk_container_propagate_draw () at /usr/lib/libgtk-3.so.0
#89 0x00007ffff78cc60e in  () at /usr/lib/libgtk-3.so.0
#90 0x00007ffff6f0a26b in Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) () at /usr/lib/libgtkmm-3.0.so.1
#91 0x00007ffff6f04ba4 in Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) () at /usr/lib/libgtkmm-3.0.so.1
#92 0x00007ffff7aee6a2 in  () at /usr/lib/libgtk-3.so.0
#93 0x00007ffff7afc443 in  () at /usr/lib/libgtk-3.so.0
#94 0x00007ffff799f8f4 in gtk_main_do_event () at /usr/lib/libgtk-3.so.0
#95 0x00007ffff770a643 in  () at /usr/lib/libgdk-3.so.0
#96 0x00007ffff7711fc2 in  () at /usr/lib/libgdk-3.so.0
#97 0x00007ffff771682b in  () at /usr/lib/libgdk-3.so.0
#98 0x00007ffff7716a29 in  () at /usr/lib/libgdk-3.so.0
#99 0x00007ffff768a1c0 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#100 0x00007ffff768a330 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#101 0x00007ffff770e179 in  () at /usr/lib/libgdk-3.so.0
#102 0x00007ffff76fb5dc in  () at /usr/lib/libgdk-3.so.0
#103 0x00007ffff7576a84 in  () at /usr/lib/libglib-2.0.so.0
#104 0x00007ffff75763e5 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#105 0x00007ffff75ca749 in  () at /usr/lib/libglib-2.0.so.0
#106 0x00007ffff7573bc1 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#107 0x00007ffff54a92ee in g_application_run () at /usr/lib/libgio-2.0.so.0
#108 0x0000555555820472 in main ()
(gdb) Quit

Comments (7)

  1. agriggio repo owner

    Hi,

    thanks for reporting. Can you describe in more details the steps to reproduce the problem? Does it happen consistently or only with specific images (or under any other specific circumstance)?

    Thanks!

  2. yatm reporter

    When I edit an image (jpeg or Canon raw image) this always happens. I edit a picture, then I right click on the next slide and choose open. This always results in a SIGSEGV.
    Greeting ytam

  3. agriggio repo owner

    Thanks. Are you able to compile ART yourself and try with a debug build to get some more information? Or maybe try a more recent version (e.g. the current git master)?

  4. yatm reporter

    With a little help I have created and tested the debug build for 1.9.3 and the current master. The error can be caused in both versions by quickly changing the slide even without editing.

    cmake

    cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr
    

    tag 1.9.3 (back trace)

    Thread 1 "ART" received signal SIGSEGV, Segmentation fault.
    operator() (__closure=0x7ffee007cd08) at /home/xxxx/workspace/art/rtgui/editorpanel.cc:2591
    2591                    navigator->setInvalid(ipc->getFullWidth(), ipc->getFullHeight());
    (gdb) bt
    #0  operator()() const (__closure=0x7ffee007cd08) at /home/xxxx/workspace/art/rtgui/editorpanel.cc:2591
    #1  0x0000555555dbe5c8 in std::__invoke_impl<bool, EditorPanel::sizeChanged(int, int, int, int)::<lambda()>&>(std::__invoke_other, struct {...} &)
        (__f=...) at /usr/include/c++/11.1.0/bits/invoke.h:61
    #2  0x0000555555dbdd40 in std::__invoke_r<bool, EditorPanel::sizeChanged(int, int, int, int)::<lambda()>&>(struct {...} &) (__fn=...)
        at /usr/include/c++/11.1.0/bits/invoke.h:142
    #3  0x0000555555dbd3af in std::_Function_handler<bool(), EditorPanel::sizeChanged(int, int, int, int)::<lambda()> >::_M_invoke(const std::_Any_data &)
        (__functor=...) at /usr/include/c++/11.1.0/bits/std_function.h:291
    #4  0x0000555555ea3b72 in std::function<bool ()>::operator()() const (this=0x7ffee007cd08) at /usr/include/c++/11.1.0/bits/std_function.h:560
    #5  0x0000555555e94431 in operator()(gpointer) const (__closure=0x0, data=0x7ffee007cd00) at /home/xxxx/workspace/art/rtgui/guiutils.cc:59
    #6  0x0000555555e944d7 in _FUN(gpointer) () at /home/xxxx/workspace/art/rtgui/guiutils.cc:69
    #7  0x00007ffff75ba5dc in  () at /usr/lib/libgdk-3.so.0
    #8  0x00007ffff6f9e3e5 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
    #9  0x00007ffff6ff2749 in  () at /usr/lib/libglib-2.0.so.0
    #10 0x00007ffff6f9bbc1 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
    #11 0x00007ffff71b12ee in g_application_run () at /usr/lib/libgio-2.0.so.0
    #12 0x0000555555f5031e in main(int, char**) (argc=1, argv=0x7fffffffdeb8) at /home/xxxx/workspace/art/rtgui/main.cc:570
    

    master/head cc05110974fda1c612077ce81591a5df0af7a518 (HEAD -> master, origin/master, origin/HEAD)

    • Since the desktop crashes reproducibly I created a core dump.
    • The core dump is available

    Back trace of the core dump

    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/usr/lib/libthread_db.so.1".
    Core was generated by `rtgui/ART'.
    Program terminated with signal SIGSEGV, Segmentation fault.
    #0  0x0000555ba1d92792 in operator() (__closure=0x555ba92659e0) at /home/xxxx/workspace/art/rtgui/crophandler.cc:272
    272                 if (needsFullRefresh && !ipc->getHighQualComputed()) {
    [Current thread is 1 (Thread 0x7fd3447c2240 (LWP 1933))]
    (gdb) bt
    #0  0x0000555ba1d92792 in operator()() const (__closure=0x555ba92659e0) at /home/xxxx/workspace/art/rtgui/crophandler.cc:272
    #1  0x0000555ba1d956fe in sigc::adaptor_functor<CropHandler::setZoom(int, int, int)::<lambda()> >::operator()(void) const (this=0x555ba92659e0)
        at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
    #2  0x0000555ba1d954e9 in sigc::internal::slot_call0<CropHandler::setZoom(int, int, int)::<lambda()>, bool>::call_it(sigc::internal::slot_rep *) (rep=0x555ba92659b0)
        at /usr/include/sigc++-2.0/sigc++/functors/slot.h:136
    #3  0x00007fd349924592 in  () at /usr/lib/libglibmm-2.4.so.1
    #4  0x00007fd349dfea84 in  () at /usr/lib/libglib-2.0.so.0
    #5  0x00007fd349dfe3e5 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
    #6  0x00007fd349e52749 in  () at /usr/lib/libglib-2.0.so.0
    #7  0x00007fd349dfbbc1 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
    #8  0x00007fd34a0112ee in g_application_run () at /usr/lib/libgio-2.0.so.0
    #9  0x0000555ba1fa7476 in main(int, char**) (argc=1, argv=0x7ffea72b2e28) at /home/xxxx/workspace/art/rtgui/main.cc:570
    

  5. Log in to comment