【问题标题】:Custom filter crashes on Kurento 6.4.0 for Chrome Version 49.0.2623.75 (64-bit)Chrome 版本 49.0.2623.75(64 位)的 Kurento 6.4.0 上的自定义过滤器崩溃
【发布时间】:2016-04-11 13:40:21
【问题描述】:

我正在使用 Kurento 6.4.0 和自定义过滤器。我正在尝试修改版本的群呼示例,它在 Firefox 浏览器上运行良好,但在连接 Chrome 浏览器版本 49.0.2623.75(64 位)时 KMS 崩溃。

以下是日志文件中的错误:

(kurento-media-server:13579): GStreamer-CRITICAL **: gst_debug_log_valist: assertion 'category != NULL' failed
[31;1mSegmentation fault [0m (thread  [33;1m140298602628864 [0m, pid  [33;1m13579 [0m)
Stack trace:
 [34;1m[gst_mini_object_unref] [0m
/usr/lib/x86_64-linux-gnu/libgstreamer-1.5.so.0 [32;1m:0x6A230 [0m
 [34;1m[kurento::module::vadcustomfilter::VADCustomFilterImpl::~VADCustomFilterImpl()] [0m
/usr/lib/x86_64-linux-gnu/libkmsvadcustomfilterimpl.so.0 [32;1m:0x140EA [0m
 [34;1m[kurento::module::vadcustomfilter::VADCustomFilterImpl::~VADCustomFilterImpl()] [0m
/usr/lib/x86_64-linux-gnu/libkmsvadcustomfilterimpl.so.0 [32;1m:0x14439 [0m
 [34;1m[std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()] [0m
/usr/lib/x86_64-linux-gnu/libkmscoreimpl.so.6 [32;1m:0x8E279 [0m
 [34;1m[std::_Function_handler<void (), std::_Bind<void (*(kurento::MediaObjectImpl*, std::string))(kurento::MediaObjectImpl*, std::string)> >::_M_invoke(std::_Any_data const&)] [0m
/usr/lib/x86_64-linux-gnu/libkmscoreimpl.so.6 [32;1m:0x94449 [0m
 [34;1m[boost::asio::detail::completion_handler<std::function<void ()> >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long)] [0m
/usr/lib/x86_64-linux-gnu/libkmscoreimpl.so.6 [32;1m:0x94BF0 [0m
 [34;1m[boost::asio::detail::task_io_service::run(boost::system::error_code&)] [0m
/usr/lib/x86_64-linux-gnu/libkmscoreimpl.so.6 [32;1m:0xA1C9F [0m
 [34;1m[kurento::WorkerPool::StaticConstructor::StaticConstructor()] [0m
/usr/lib/x86_64-linux-gnu/libkmscoreimpl.so.6 [32;1m:0x9C6AB [0m
 [34;1m[std::thread::_Impl<std::_Bind_simple<std::_Bind<void (*(boost::shared_ptr<boost::asio::io_service>))(boost::shared_ptr<boost::asio::io_service>)> ()> >::_M_run()] [0m
/usr/lib/x86_64-linux-gnu/libkmscoreimpl.so.6 [32;1m:0xA04B8 [0m
 [34;1m[std::this_thread::__sleep_for(std::chrono::duration<long, std::ratio<1l, 1l> >, std::chrono::duration<long, std::ratio<1l, 1000000000l> >)] [0m
/usr/lib/x86_64-linux-gnu/libstdc++.so.6 [32;1m:0xB1A40 [0m
 [34;1m[start_thread] [0m
/build/buildd/eglibc-2.19/nptl/pthread_create.c [32;1m:312 (discriminator 2) [0m
 [34;1m[clone] [0m
sysdeps/unix/sysv/linux/x86_64/clone.S [32;1m:113 [0m

浏览器版本有问题还是我的 KMS 过滤器有问题导致此崩溃?

编辑 1:

浏览器控制台出错:

local candidate{"candidate":"candidate:2695668549 1 tcp 1518280447 172.24.12.10 9 typ host tcptype active generation 0 ufrag K1UwPCWKobEHgN2y","sdpMid":"audio","sdpMLineIndex":0}

conferenceroom.js:398 Senging message: {"id":"onIceCandidate","candidate":{"candidate":"candidate:2695668549 1 tcp 1518280447 172.24.12.10 9 typ host tcptype active generation 0 ufrag K1UwPCWKobEHgN2y","sdpMid":"audio","sdpMLineIndex":0},"name":"someone"}

conferenceroom.js:399 WebSocket is already in CLOSING or CLOSED state.sendMessage @ conferenceroom.js:399Participant.onIceCandidate @ participant.js:198EventEmitter.emit @ kurento-utils.js:531(anonymous function) @ kurento-utils.js:166

【问题讨论】:

    标签: kurento


    【解决方案1】:

    似乎问题出在您的 VADCustomFilterImpl 的析构函数上,它试图取消引用可能已经发布的内容。

    编辑:

    如果您正在存储缓冲区以供将来处理,则应在存储时调用gst_buffer_ref,并在完成后调用gst_buffer_unref 以释放它。

    【讨论】:

    • 检查了析构函数,看起来有竞争条件。我正在处理获取 unref/NULL 的 gst_buffer。有什么办法可以避免比赛条件?
    • 取决于您如何使用缓冲区。一般来说,如果你要保留一个缓冲区,你应该增加一个参考。
    • 好的,有什么方法可以用来获取 gst_buffer 的引用计数吗?
    • 在询问之前尝试自己搜索一下。谷歌搜索“gst_buffer ref”我发现gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/…
    • 是的,我正在调查developer.gnome.org/gstreamer/stable/gstreamer-GstBuffer.html,我说的是有什么方法可以获得整数引用计数吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2011-12-04
    • 1970-01-01
    相关资源
    最近更新 更多