Incompatible libpng version in application and library
-
@SGaist - Thanks very much for your help!
I discovered which library is causing the problem. It's a non-Qt library that doesn't directly rely on libpng, but it does rely on 50+ other libraries - apparently one of those does directly or indirectly rely on libpng. Apparently ldd doesn't show recursive dependencies, which surprises me. https://stackoverflow.com/questions/15064685/does-ldd-also-show-dependencies-of-dependencies/15064784#15064784 -
What library was it ?
-
@SGaist - the segfault occurs when I link with /usr/local/lib/libgmt.so.6.0.0, for the Generic Mapping Tools. I built the library from source and installed on this system. Yet when I run 'ldd /usr/local/lib/libgmt.so.6.0.0' it does not display any dependency on libpng - I don't understand why...
-
What is surprising is that you build everything with system dependencies and yet you have two different png libraries.
-
@SGaist - Yes. My app is built by qtcreator as a QtQuick project. The same segfault occurs whether i build the app with distribution-provided Qt (5.9) or with offline-installer-provided Qt 5.14 (Yes, I finally figured out how to switch between those, haha). My app includes QML with a C++ singleton backend. It is the C++ backend that requires libgmt. The fault occurs when the QML attempts to open a FileDialog. If I remove the libgmt stuff from the backend, the FileDialog opens fine. Yet the backtrace doesn't show anything to do with "gmt" - how can this be? From the gdb backtrace it seems the fault happens somewhere in libgtk-3.so.0.
Thread 1 "TEST4" received signal SIGSEGV, Segmentation fault. __longjmp_chk (env=0x0, val=1) at ../setjmp/longjmp.c:32 32 ../setjmp/longjmp.c: No such file or directory. (gdb) bt #0 0x00007ffff54f7b00 in __longjmp_chk (env=0x0, val=1) at ../setjmp/longjmp.c:32 #1 0x00007fff9b5fbc9c in () at /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so #2 0x00007ffff3ba02c7 in png_error (png_ptr=0x55555784b650, error_message=error_message@entry=0x7ffff4130cb8 "Incompatible libpng version in application and library") at libpng/pngerror.c:80 #3 0x00007ffff3ba3685 in png_create_read_struct_2 (user_png_ver=0x7fff9b5fce57 "1.6.34", error_ptr=0x555557801860, error_fn=0x7fff9b5fbc50, warn_fn=0x7fff9b5fcd10, mem_ptr=0x0, malloc_fn=0x7fff9b5fc320, free_fn=0x7fff9b5fafc0) at libpng/pngread.c:150 #4 0x00007fff9b5fbefb in () at /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so #5 0x00007fffda7c508c in () at /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 #6 0x00007fffda7c5955 in gdk_pixbuf_loader_close () at /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 #7 0x00007fffda7c220b in () at /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 #8 0x00007fffda7c323c in gdk_pixbuf_new_from_stream () at /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 #9 0x00007fffdb620142 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #10 0x00007fffdb6202bb in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #11 0x00007fffdb620b46 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #12 0x00007fffdb6184b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #13 0x00007fffdb74eb3a in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #14 0x00007fffdb616faa in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #15 0x00007fffdb5cfbf1 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #16 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #17 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #18 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #19 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #20 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #21 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #22 0x00007fffdb5c0cf4 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 ---Type <return> to continue, or q <return> to quit--- #23 0x00007fffdb61240d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #24 0x00007fffdb617063 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #25 0x00007fffdb5c3601 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #26 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #27 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #28 0x00007fffdb77c1c0 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #29 0x00007fffdb61240d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #30 0x00007fffdb617063 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #31 0x00007fffdb77bd35 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #32 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #33 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #34 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #35 0x00007fffdb5c0cf4 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #36 0x00007fffdb61240d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #37 0x00007fffdb617063 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #38 0x00007fffdb5c3601 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #39 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #40 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #41 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #42 0x00007fffdb750fd7 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #43 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #44 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #45 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #46 0x00007fffdb5c0cf4 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #47 0x00007fffdb61240d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #48 0x00007fffdb617063 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #49 0x00007fffdb5c3601 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #50 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #51 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #52 0x00007fffdb70e820 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #53 0x00007fffdb61240d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #54 0x00007fffdb617063 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #55 0x00007fffdb70e6c1 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #56 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 ---Type <return> to continue, or q <return> to quit--- #57 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #58 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #59 0x00007fffdb5c0cf4 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #60 0x00007fffdb61240d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #61 0x00007fffdb617063 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #62 0x00007fffdb5c3601 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #63 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #64 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #65 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #66 0x00007fffdb5c0cf4 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #67 0x00007fffdb61240d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #68 0x00007fffdb617063 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #69 0x00007fffdb5c3601 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #70 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #71 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #72 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #73 0x00007fffdb5c0cf4 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #74 0x00007fffdb61240d in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #75 0x00007fffdb617063 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #76 0x00007fffdb5c3601 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #77 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #78 0x00007fffdb60d3ca in gtk_container_propagate_draw () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #79 0x00007fffdb60d4b2 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #80 0x00007fffdb8346ef in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #81 0x00007fffdb8268db in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #82 0x00007fffdb82f998 in () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #83 0x00007fffdb6d3859 in gtk_main_do_event () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #84 0x00007fffdb1e4765 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 #85 0x00007fffdb1f47f5 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 #86 0x00007fffdb1f59f6 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 #87 0x00007fffdb1f5bf0 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 #88 0x00007fffd9e0010d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #89 0x00007fffd9e1305e in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 ---Type <return> to continue, or q <return> to quit--- #90 0x00007fffd9e1b715 in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #91 0x00007fffd9e1c12f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #92 0x00007fffdb1edac9 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 #93 0x00007fffdb1d9080 in () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 #94 0x00007fffeef14d03 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #95 0x00007fffeef14285 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #96 0x00007fffeef14650 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #97 0x00007fffeef146dc in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 #98 0x00007ffff609b73c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /home/oreilly/Qt5.14.2/5.14.2/gcc_64/lib/libQt5Core.so.5 #99 0x00007ffff6041662 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /home/oreilly/Qt5.14.2/5.14.2/gcc_64/lib/libQt5Core.so.5 #100 0x00007ffff604a590 in QCoreApplication::exec() () at /home/oreilly/Qt5.14.2/5.14.2/gcc_64/lib/libQt5Core.so.5 #101 0x0000555555557222 in main(int, char**) (argc=<optimized out>, argv=<optimi
-
@SGaist - the very last call in the stack trace before the fault is from library /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so. Running ldd on that library shows dependence on libpng16.so.16. If I find 'libpng*.so*' on /usr/ I get:
/usr/lib/x86_64-linux-gnu/libpng16.so /usr/lib/x86_64-linux-gnu/libpng16.so.16 /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0
So I really don't understand the origin of the libpng version error...
-
Can you try to use a different style ? For example the Fusion style.
-
@SGaist - I solved the problem. One of the third-party libraries (libgdal) also included source code from old libpng v1.2.56. So even though libpng v1.6 was installed, the application would find the libpng functions in that libgdal library first. That older libpng function checks to see if a newer version is installed on the system and if so prints an error message - but in this case the libpng error function pointer was corrupt for some reason (haven't solved that), hence it attempted to print "Incompatible libpng version in application and library" before the SIGSEGV.
gnu gdb eventually led me to discover the problem. Thanks for all your help! -
Glad you found out and thanks for sharing !