Public bug reported: In my app I have segfault due to conflict of libx264-148 vs libx264-152. I use gstreamer and libopencv_videoio in my project. System is Ubuntu 18.04.5
The problem is that versions of libx264 get mixed due to implicit linking. Libraries are linked like this: gstreamer -> x264enc -> libx264-152 libopencv_videoio -> libavcodec-ffmpeg.so.56 -> libx264-148 Both opencv-based code and gstreamer-based code works well if used separately. At the top of backtrace I see: Thread 13 (Thread 0x7f28e2066700 (LWP 26012)): #0 0x00007f290181c853 in x264_add8x8_idct_avx2.skip_prologue () at /usr/lib/x86_64-linux-gnu/libx264.so.152 //!!!! 152 #1 0x00007f2927a93f55 in x264_nal_encode () at /usr/lib/x86_64-linux-gnu/libx264.so.148 //!!!! 148 #2 0x00007f2927af866c in () at /usr/lib/x86_64-linux-gnu/libx264.so.148 #3 0x00007f2927b0143b in x264_encoder_headers () at /usr/lib/x86_64-linux-gnu/libx264.so.148 If I use objdump I can find x264_add8x8_idct_avx2.skip_prologue in both libx264-148 and libx264-152 Here is example code which fails (C++ needed): int main (int argc, char *argv[]) { App *app = &s_app; GError *error = NULL; GstBus *bus; GstCaps *caps; gst_init (&argc, &argv); auto cap = cv::VideoCapture("videoplayback.mp4"); cv::Mat f; cap.read(f); cv::imshow("f", f); GST_DEBUG_CATEGORY_INIT (appsrc_pipeline_debug, "appsrc-pipeline", 0, "appsrc pipeline example"); app->loop = g_main_loop_new (NULL, TRUE); app->timer = g_timer_new(); app->pipeline = gst_parse_launch(R"(filesrc location=videoplayback.mp4 ! decodebin ! videoconvert ! x264enc byte-stream=true threads=1 tune=zerolatency bitrate=4000000 key-int-max=50 option- string="force-cfr=1" ! video/x-h264,profile=baseline,stream- format="byte-stream" ! h264parse ! mpegtsmux ! hlssink location="/tmp/data%06d.ts" max- files=100 playlist-length=10 playlist- location="/tmp/kek" target-duration=10 playlist-root=".")", NULL); g_assert (app->pipeline); bus = gst_pipeline_get_bus (GST_PIPELINE (app->pipeline)); g_assert(bus); gst_bus_add_watch (bus, (GstBusFunc) bus_message, app); caps = gst_caps_new_simple ("video/x-raw-rgb", "bpp",G_TYPE_INT,8, "depth",G_TYPE_INT,8, "width", G_TYPE_INT, 640, "height", G_TYPE_INT, 480, NULL); gst_element_set_state (app->pipeline, GST_STATE_PLAYING); g_main_loop_run (app->loop); GST_DEBUG ("stopping"); gst_element_set_state (app->pipeline, GST_STATE_NULL); gst_object_unref (bus); g_main_loop_unref (app->loop); return 0; } How can I solve this? PLease help! ** Affects: x264 (Ubuntu) Importance: Undecided Status: New ** Tags: gst gstreamer h264 libx264 opencv ** Summary changed: - libx264-148 libx264-152 conflict segmentation failt SIGSEGV + libx264-148 libx264-152 conflict segmentation fault SIGSEGV -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1906091 Title: libx264-148 libx264-152 conflict segmentation fault SIGSEGV To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/x264/+bug/1906091/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs