souphttpclientsink插件崩溃

时间:2017-03-16 20:37:51

标签: ios gstreamer

我正在iOS平台上使用souphttpclient sink插件运行gstreamer管道(带有iOS 10.2的iPhone 6。在多次尝试停止并重新启动管道后,它崩溃了。

这就是我配置souphttpclientsink插件的方式:

souphttpclientsink name=soup_sink location= https://<serverIP:port>/g711.cgi 
retries=20 retry-delay=1 max-lateness=250000000 

当souphttpclientsink插件获得停止信号时,崩溃就会发生,这会导致souphttpclientsink插件的g_main_loop_run返回。返回时,它似乎执行一些IO读取并尝试重新分配未分配的内存。 以下是我看到的确切消息:

SoupHttpClientApp(1331,0x16e043000) malloc: *** error for object 0x1013437e0: pointer 
being realloc'd was not allocated*** set a breakpoint in malloc_error_break to debug

附件是崩溃的调用堆栈。enter image description here

我在Windows平台上运行了相同的测试数小时,并没有重现该问题。在souphttpclientsink插件将设置管道状态的会话中止为NULL之前,似乎有些资源被释放了。

如果您能就如何解决此问题提供任何指示,我将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

我修好了。为了其他人的利益,这是修复了iOS平台上的souphttpclientsink崩溃的原因。以下gst_soup_http_client_sink_stop函数的代码片段应该在souphttpclientsink-thread上的g_thread_join后执行。在较慢的移动处理器上解决它的时间问题,并且在会话中止后恰好读取数据。此修复程序基本上允许所有剩余数据由主循环处理并在中止汤会话之前正常返回。

if (souphttpsink->prop_session == NULL) {
    soup_session_abort (souphttpsink->session);
    g_object_unref (souphttpsink->session); }

希望它能帮助别人!