Bug 214509

Summary: graphics/rawtherapee dumps core on exit
Product: Ports & Packages Reporter: freebsd
Component: Individual Port(s)Assignee: Matthias Andree <mandree>
Status: Closed Unable to Reproduce    
Severity: Affects Only Me Flags: mandree: maintainer-feedback+
Priority: ---    
Version: Latest   
Hardware: Any   
OS: Any   
See Also: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=202250
Description Flags
cd /usr/ports/graphics/rawtherapee; make showconfig-recursive
debug run of rawtherapee with traceback segv none

Description freebsd 2016-11-14 16:48:15 UTC
Created attachment 176999 [details]
cd /usr/ports/graphics/rawtherapee; make showconfig-recursive

10.3-RELEASE-p7 FreeBSD 10.3-RELEASE-p7 #0: Thu Aug 11 18:38:15 UTC 2016     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

simply starting rawtherapee and exiting wia the window manager close icon dumps core.  Otherwise it seems to behave normally.

On startup:
(rawtherapee:73714): Gtk-WARNING **: Unable to locate theme engine in module_path: "clearlooks",

Upon exit:
GLib (gthread-posix.c): Unexpected error from C library during 'pthread_mutex_lock': Invalid argument.  Aborting.
Abort trap (core dumped)

I have the following gtk stuff installed; don't know if the gtk error is related to the core dump or not:

$ pkg info | grep gtk
gtk-doc-1.24                   Code documentation system, originally for GTK+
gtk-update-icon-cache-2.24.29  Gtk-update-icon-cache utility from the Gtk+ toolkit
gtk-xfce-engine-3.2.0          Xfce GTK2 theme engine
gtk2-2.24.29_2                 Gimp Toolkit for X11 GUI (previous stable version)
gtk3-3.18.8_3                  Gimp Toolkit for X11 GUI (current stable version)
gtkglext-1.2.0_18              OpenGL extension to GTK+
gtkimageview-1.6.4_5           Simple image viewer widget
gtkmm24-2.24.4_2               C++ wrapper for Gtk+
libcanberra-gtk3-0.30_3        Implementation of the Freedesktop sound theme spec
py27-gtk2-2.24.0_4             Set of Python bindings for GTK+
webkit-gtk2-2.4.11_4           Opensource browser engine using the GTK+ 2 toolkit
wx30-gtk2-3.0.2_4              The wxWidgets GUI toolkit with GTK+ bindings

$ ldd /usr/local/bin/rawtherapee
        libthr.so.3 => /lib/libthr.so.3 (0x801119000)
        libjpeg.so.8 => /usr/local/lib/libjpeg.so.8 (0x80133e000)
        libpng16.so.16 => /usr/local/lib/libpng16.so.16 (0x8015a9000)
        libz.so.6 => /lib/libz.so.6 (0x8017df000)
        libtiff.so.5 => /usr/local/lib/libtiff.so.5 (0x8019f5000)
        libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x801c67000)
        libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x801eaf000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x8021b5000)
        libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x8023c0000)
        libglibmm-2.4.so.1 => /usr/local/lib/libglibmm-2.4.so.1 (0x8025c1000)
        libsigc-2.0.so.0 => /usr/local/lib/libsigc-2.0.so.0 (0x802843000)
        libgtk-x11-2.0.so.0 => /usr/local/lib/libgtk-x11-2.0.so.0 (0x802c00000)
        libgdk-x11-2.0.so.0 => /usr/local/lib/libgdk-x11-2.0.so.0 (0x80322f000)
        libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0 (0x8034df000)
        libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0 (0x8036ec000)
        libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x803915000)
        libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0 (0x803c2b000)
        libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0 (0x803e4a000)
        libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0 (0x8041b5000)
        libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0 (0x8043ca000)
        libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x804619000)

        libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x80485e000)
        libgtkmm-2.4.so.1 => /usr/local/lib/libgtkmm-2.4.so.1 (0x804c00000)
        libatkmm-1.6.so.1 => /usr/local/lib/libatkmm-1.6.so.1 (0x8052b9000)
        libgdkmm-2.4.so.1 => /usr/local/lib/libgdkmm-2.4.so.1 (0x80550b000)
        libgiomm-2.4.so.1 => /usr/local/lib/libgiomm-2.4.so.1 (0x805761000)
        libpangomm-1.4.so.1 => /usr/local/lib/libpangomm-1.4.so.1 (0x805b30000)
        libcairomm-1.0.so.1 => /usr/local/lib/libcairomm-1.0.so.1 (0x805d5f000)
        liblcms2.so.2 => /usr/local/lib/liblcms2.so.2 (0x805f86000)
        libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x8061df000)
        libfftw3f.so.3 => /usr/local/lib/libfftw3f.so.3 (0x806406000)
        libiptcdata.so.0 => /usr/local/lib/libiptcdata.so.0 (0x806766000)
        libcanberra-gtk.so.0 => /usr/local/lib/libcanberra-gtk.so.0 (0x806971000)
        libX11.so.6 => /usr/local/lib/libX11.so.6 (0x806b75000)
        libcanberra.so.0 => /usr/local/lib/libcanberra.so.0 (0x806ead000)
        libbz2.so.4 => /usr/lib/libbz2.so.4 (0x8070bc000)
        libc++.so.1 => /usr/lib/libc++.so.1 (0x8072ce000)
        libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x80758d000)
        libm.so.5 => /lib/libm.so.5 (0x8077aa000)
        libgomp.so.1 => /usr/local/lib/gcc48/libgomp.so.1 (0x8079d3000)
        libgcc_s.so.1 => /usr/local/lib/gcc48/libgcc_s.so.1 (0x807be1000)
        libc.so.7 => /lib/libc.so.7 (0x807df7000)
        liblzma.so.5 => /usr/lib/liblzma.so.5 (0x8081a4000)
        libjbig.so.2 => /usr/local/lib/libjbig.so.2 (0x8083cd000)
        libffi.so.6 => /usr/local/lib/libffi.so.6 (0x8085da000)
        libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x8087e1000)
        libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x808adb000)
        libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x808d54000)
        libXrender.so.1 => /usr/local/lib/libXrender.so.1 (0x808f57000)
        libXinerama.so.1 => /usr/local/lib/libXinerama.so.1 (0x809160000)
        libXi.so.6 => /usr/local/lib/libXi.so.6 (0x809362000)
        libXrandr.so.2 => /usr/local/lib/libXrandr.so.2 (0x809570000)
        libXcursor.so.1 => /usr/local/lib/libXcursor.so.1 (0x809779000)
        libXext.so.6 => /usr/local/lib/libXext.so.6 (0x809983000)
        libXcomposite.so.1 => /usr/local/lib/libXcomposite.so.1 (0x809b94000)
        libXdamage.so.1 => /usr/local/lib/libXdamage.so.1 (0x809d96000)
        libXfixes.so.3 => /usr/local/lib/libXfixes.so.3 (0x809f98000)
        libharfbuzz.so.0 => /usr/local/lib/libharfbuzz.so.0 (0x80a19d000)
        libpixman-1.so.0 => /usr/local/lib/libpixman-1.so.0 (0x80a3f7000)
        libEGL.so.1 => /usr/local/lib/libEGL.so.1 (0x80a69b000)
        libxcb-shm.so.0 => /usr/local/lib/libxcb-shm.so.0 (0x80a8b7000)
        libxcb.so.1 => /usr/local/lib/libxcb.so.1 (0x80aab9000)
        libxcb-render.so.0 => /usr/local/lib/libxcb-render.so.0 (0x80acde000)
        libGL.so.1 => /usr/local/lib/libGL.so.1 (0x80aeea000)
        libvorbisfile.so.3 => /usr/local/lib/libvorbisfile.so.3 (0x80b163000)
        libltdl.so.7 => /usr/local/lib/libltdl.so.7 (0x80b36b000)
        libgraphite2.so.3 => /usr/local/lib/libgraphite2.so.3 (0x80b574000)
        libX11-xcb.so.1 => /usr/local/lib/libX11-xcb.so.1 (0x80b7a7000)
        libxcb-dri2.so.0 => /usr/local/lib/libxcb-dri2.so.0 (0x80b9a8000)
        libxcb-xfixes.so.0 => /usr/local/lib/libxcb-xfixes.so.0 (0x80bbac000)
        libgbm.so.1 => /usr/local/lib/libgbm.so.1 (0x80bdb3000)
        libdrm.so.2 => /usr/local/lib/libdrm.so.2 (0x80bfb9000)
        libXau.so.6 => /usr/local/lib/libXau.so.6 (0x80c1c6000)
        libpthread-stubs.so.0 => /usr/local/lib/libpthread-stubs.so.0 (0x80c3c8000)
        libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x80c5c9000)
        libglapi.so.0 => /usr/local/lib/libglapi.so.0 (0x80c7ce000)
        libxcb-glx.so.0 => /usr/local/lib/libxcb-glx.so.0 (0x80ca37000)
        libXxf86vm.so.1 => /usr/local/lib/libXxf86vm.so.1 (0x80cc50000)
        libvorbis.so.0 => /usr/local/lib/libvorbis.so.0 (0x80ce54000)
        libogg.so.0 => /usr/local/lib/libogg.so.0 (0x80d081000)

Attached is the list of options for dependencies.
Comment 1 Matthias Andree freebsd_committer 2016-11-14 22:50:20 UTC
I have none of those errors in my testing; the clearlooks Gtk engine is part of the gtk-engines2 package on my system:

/usr/local/lib/gtk-2.0/2.10.0/engines/libclearlooks.so was installed by package gtk-engines2-2.20.2_2

Can't say if there's anything related to the XFCE stuff.  If it still fails with clearlooks installed, or Gtk reconfigured to use a theme engine that is actually installed so that you don't get the warning, you may need to reinstall rawtherapee from source whilst running make WITH_DEBUG=yes and obtain a backtrace when it abort()s.

GLib (gthread-posix.c): Unexpected error from C library during 'pthread_mutex_lock': Invalid argument.  Aborting.

Not sure what it wants to lock though - and it looks like sanity checking while shutting down.

If you want to reopen the bug, feel free, but I need a meaningful stack backtrace of all threads then.
Comment 2 freebsd 2016-11-15 02:40:16 UTC
What is the mechanism by which x11-themes/gtk-engines2 port is supposed to be installed?

If rawtherapee has this as a requirement, then it needs to force that or at 
least notify a user when configuring the options for the package.  There is
no such option in the port.   

I looked through the complete set of install configs (in the attachment)
and didn't see any option that looked like themes.

This may well be a config option on my end, but it's not clear to me where themes 
are supposed to be loaded from.

Can you backtrack your gtk2-engines2 and give me the path of ports that gets 
it built?  There's clearly a configuration dependency that's not present in
my install.  Neither gtk20 nor gtk30 have any configuration option regarding
Comment 3 Matthias Andree freebsd_committer 2016-11-15 09:20:46 UTC
I don't say that clearlooks is the missing part, you need to find out first if installing gtk2-engines, or removing gtkrc options (for instance, create a new user account temporarily) helps your situation.

I deinstalled gtk-engines2, and while it caused start-up warnings regarding clearlooks, it did not cause the abort-on-exit that you've reported, so I assume that gtk-engines2 is not the cause for now.

This really wants more debugging to find the cause before we jump to conclusions about uncoded requisites.

Please rebuild rawtherapee from ports with "make WITH_DEBUG=yes clean all deinstall install", install gdb 7.11 (from package is fine), run rawtherapee under gdb, like:

gdb7111 /usr/local/bin/rawtherapee
(do something you normally do, exit it so it would abort)
and then, still inside gdb:

thread apply all backtrace full

and save the output to a file and upload it to this PR.

You may want to install the regular version again after that because the debug build is likely to be MUCH slower.
Comment 4 Matthias Andree freebsd_committer 2016-11-15 09:30:04 UTC
Bug https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205370 reported the same issue, but the author stopped using rawtherapee before we could debug this.
Comment 6 freebsd 2016-11-16 04:40:52 UTC
Created attachment 177052 [details]
debug run of rawtherapee with traceback segv
Comment 7 freebsd 2016-11-16 04:41:37 UTC
Ok, installed devel/gdb, rebuilt rawtherapee with debug, also rebuilt devel/glib20 with debug.

To crash, simply started rawtherapee and hit the "X" window manager kill button.

I don't have the libthr.so compiled debug, but I suspect doing so would bring my system to its knees.  Let me know if you need that and how to do it, as I'm not clear on what's entailed for such a basic system module.