Thank you for taking the time to report this bug and helping to make Ubuntu 
better. Please execute the following command only once, as it will 
automatically gather debugging information, in a terminal:
apport-collect 1906091

When reporting bugs in the future please use apport by using 'ubuntu-
bug' and the name of the package affected. You can learn more about this
functionality at https://wiki.ubuntu.com/ReportingBugs.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to x264 in Ubuntu.
https://bugs.launchpad.net/bugs/1906091

Title:
  libx264-148 libx264-152 conflict segmentation fault SIGSEGV

Status in x264 package in Ubuntu:
  New

Bug description:
  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!

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/x264/+bug/1906091/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to