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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs