When OpenCV and tensorflow both use libgtk, a segmentation fault occurs. I have given below a simple script that creates the problem, relevant hardware and software versions and a stack trace. FWITW, the same versions of opencv, tensorflow, pandas etc worked just fine when I installed it on another machine in March. Not sure exactly what has changed.
How to create the problem
The following script works just fine. Captures and displays the frame as expected
import cv2
cv2.namedWindow('frame')
However, if I add a line "import pandas" or "import tensorflow" anywhere above, I get a segmentation fault. For example..
import tensorflow
import cv2
cv2.namedWindow('frame')
Relevant hardware and software information:
Hardware x86 architecture (Intel I5 core) GPU GTX 1060 OS Linux Mint 18.2
Ubuntu kernel version 4.8.0-53-generic #56~16.04.1-Ubuntu OpenCV version 3.4 Tensorflow version 1.4.1 Pandas version 0.20.1
CUDA 9.1 Nvidia driver 396.26
A few things I have tried 1. Compiling OpenCV with GTK2.4 and GTK3. Same result 2. Changing NVIDIA driver version
I plan to try CUDA 9.0 next, though honestly I don't know what that has to do with anything.
Segmentation fault backtrace (gdb) bt
#0 0x000000000052b88c in ?? ()
#1 0x00000000005653ab in PyErr_WarnEx ()
#2 0x00007fff840f7938 in ?? () from /usr/lib/python2.7/dist-packages/gobject/_gobject.x86_64-linux-gnu.so
#3 0x00007fffd539e9a4 in g_logv () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4 0x00007fffd539ebcf in g_log () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5 0x00007fffd5690d7d in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 0x00007fffd569107b in g_type_register_static () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7 0x00007fffd5691695 in g_type_register_static_simple () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8 0x00007fffd5e173a4 in gdk_display_manager_get_type () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#9 0x00007fffd5e17409 in gdk_display_manager_get () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#10 0x00007fffd62fcc8b in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#11 0x00007fffd62d420b in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#12 0x00007fffd53a2f67 in g_option_context_parse () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007fffd62d3fe8 in gtk_parse_args () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#14 0x00007fffd62d4049 in gtk_init_check () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#15 0x00007fffd62d4099 in gtk_init () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#16 0x00007fffeef176c3 in cvInitSystem () from /usr/local/lib/libopencv_highgui.so.3.4
#17 0x00007fffeef1a764 in cvNamedWindow () from /usr/local/lib/libopencv_highgui.so.3.4
#18 0x00007fffeef1aead in cvShowImage () from /usr/local/lib/libopencv_highgui.so.3.4
#19 0x00007fffeef11349 in cv::imshow(cv::String const&, cv::_InputArray const&) () from /usr/local/lib/libopencv_highgui.so.3.4
#20 0x00007ffff67078d3 in pyopencv_cv_imshow(_object*, _object*, _object*) () from /usr/local/lib/python2.7/dist-packages/cv2.so
#21 0x00000000004bc3fa in PyEval_EvalFrameEx ()
#22 0x00000000004c136f in PyEval_EvalFrameEx ()
#23 0x00000000004c136f in PyEval_EvalFrameEx ()
#24 0x00000000004b9ab6 in PyEval_EvalCodeEx ()
#25 0x00000000004eb30f in ?? ()
#26 0x00000000004e5422 in PyRun_FileExFlags ()
#27 0x00000000004e3cd6 in PyRun_SimpleFileExFlags ()
#28 0x0000000000493ae2 in Py_Main ()
#29 0x00007ffff7810830 in __libc_start_main (main=0x4934c0 <main>, argc=2, argv=0x7fffffffe058, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>,
stack_end=0x7fffffffe048) at ../csu/libc-start.c:291
#30 0x00000000004933e9 in _start ()