AnyChat技术支持论坛

标题: 关于第二次发起视频请求 内存引起的crash的问题 [打印本页]

作者: chaox    时间: 2015-10-12 10:52
标题: 关于第二次发起视频请求 内存引起的crash的问题
不管服务器开启与否, 第二次进行视频请求的时候都会crash
因为我司用来做视频审核, 所以暂时没有进入房间的需求, 所当发起视频请求时, 后台会在
+ (NSString*) GetUserInfo: (int) dwUserId : (int) dwInfoId;
方法中返回我一个id, 然后我直接向这个id发起视频请求.
这些方法我都写在一个UIView中, 就是点击视频请求时会出现请求中的loading视图. 根据后台返回我的id来push到视频界面, 如果服务器连接失败也会返回一定话术 然后移除这个view.

一下是连续两次视频请求的日志,在第二次的时候crash了 通过zombie对象排查 发现问题出现在
- (void)AnyChatNotifyHandler:(NSNotification*)notify 方法中

2015-10-12 10:37:02.707 MobileCRM[74887:7185080] ---------------------------AnyChat Platform Core SDK Client Log---------------------------
2015-10-12 10:37:02.708 MobileCRM[74887:7185080] Load libanychatcore.so success!(V5.3 Build Time:Aug 10 2015 12:28:11)
2015-10-12 10:37:02.709 MobileCRM[74887:7185080] Load libmediautil.so success!(V5.3 Build Time:Aug 10 2015 12:28:28)
2015-10-12 10:37:02.710 MobileCRM[74887:7185080] Load libmediashow.so success!(V5.3 Build Time:Aug 10 2015 12:28:26)
2015-10-12 10:37:02.711 MobileCRM[74887:7185080] Load libmediacore.so success!(V5.3 Build Time:Aug 10 2015 12:28:23)
2015-10-12 10:39:21.936 MobileCRM[74887:7185080] Invoke        Connect(10.1.10.178,8906)=0
2015-10-12 10:39:21.937 MobileCRM[74887:7185080] Invoke        LoginServer(username=sh_linxinyu)
2015-10-12 10:39:21.953 MobileCRM[74887:7185151] CheckClientSocketLink         Connect(ip=10.1.10.178,port=8906)
2015-10-12 10:39:28.048 MobileCRM[74887:7185151] Message        OnConnect(bSuccess:0, errorcode=100)
2015-10-12 10:39:28.338 MobileCRM[74887:7185080] Invoke        LogoutServer(userid=-1)        Elapse:23 ms
2015-10-12 10:39:35.426 MobileCRM[74887:7185080] Invoke        Connect(10.1.10.178,8906)=0
2015-10-12 10:39:35.427 MobileCRM[74887:7185080] Invoke        LoginServer(username=sh_linxinyu)
2015-10-12 10:39:35.525 MobileCRM[74887:7185151] CheckClientSocketLink         Connect(ip=10.1.10.178,port=8906)
2015-10-12 10:39:41.528 MobileCRM[74887:7185151] Message        OnConnect(bSuccess:0, errorcode=100)
MobileCRM(74887,0x10ecde300) malloc: *** error for object 0x7f8033802b50: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug


作者: chaox    时间: 2015-10-12 10:53
没有进入房间的需求 可能我描述不太准确 就是没有像demo那样 进入到一个全是用户列表的界面再选择用户进行视频 那个界面的逻辑我全都写在了view上
作者: admin    时间: 2015-10-12 11:11
通过zombie对象排查 发现问题出现在
- (void)AnyChatNotifyHandlerNSNotification*)notify 方法中
能否提供更多的信息,比如出现问题之后的堆栈信息等供我们分析?
作者: chaox    时间: 2015-10-12 11:28
admin 发表于 2015-10-12 11:11
能否提供更多的信息,比如出现问题之后的堆栈信息等供我们分析?

(lldb) thread backtrace
* thread #1: tid = 0x6dfddf, 0x0000000105d7f9c0 libobjc.A.dylib`objc_release + 16, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x0000000105d7f9c0 libobjc.A.dylib`objc_release + 16
    frame #1: 0x0000000105d808cd libobjc.A.dylib`(anonymous namespace)::AutoreleasePoolPage::pop(void*) + 591
    frame #2: 0x0000000105ff6f06 CoreFoundation`_CFAutoreleasePoolPop + 22
    frame #3: 0x000000010591d75a Foundation`__NSThreadPerformPerform + 491
    frame #4: 0x0000000106035431 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #5: 0x000000010602b2fd CoreFoundation`__CFRunLoopDoSources0 + 269
    frame #6: 0x000000010602a934 CoreFoundation`__CFRunLoopRun + 868
    frame #7: 0x000000010602a366 CoreFoundation`CFRunLoopRunSpecific + 470
    frame #8: 0x000000010a381a3e GraphicsServices`GSEventRunModal + 161
    frame #9: 0x0000000106f198c0 UIKit`UIApplicationMain + 1282
  * frame #10: 0x0000000103ff650f MobileCRM`main(argc=3, argv=0x00007fff5bd77510) + 111 at main.m:14
    frame #11: 0x0000000108670145 libdyld.dylib`start + 1
(lldb) thread info
thread #1: tid = 0x6dfddf, 0x0000000105d7f9c0 libobjc.A.dylib`objc_release + 16, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
作者: admin    时间: 2015-10-12 12:02
您好,能否在我们的标准demo(比如:helloAnyChat)上,修改一下代码,将您所说的“没有进入房间的需求”在上面做一下实现,看问题是否也同样存在?如果存在,您可以将修改后的源代码发给我们(service@bairuitech.com),我们根据您提供的源代码可能会较快速的找到问题的原因并提供解决方案。
作者: chaox    时间: 2015-10-12 13:23
admin 发表于 2015-10-12 12:02
您好,能否在我们的标准demo(比如:helloAnyChat)上,修改一下代码,将您所说的“没有进入房间的需求”在 ...

好 我下午更改一下
作者: chaox    时间: 2015-10-12 16:45
admin 发表于 2015-10-12 12:02
您好,能否在我们的标准demo(比如:helloAnyChat)上,修改一下代码,将您所说的“没有进入房间的需求”在 ...

在demo上是没有问题的
作者: 佰锐科技-李友勤    时间: 2015-10-12 16:52
chaox 发表于 2015-10-12 16:45
在demo上是没有问题的

您好,可以讲相关代码发过来我们帮您分析下
作者: admin    时间: 2015-10-12 16:53
MobileCRM(74887,0x10ecde300) malloc: *** error for object 0x7f8033802b50: pointer being freed was not allocated

那您对比一下Demo和您自己的程序,哪些地方会有差异?重点排查一下委托的实现“anychat.notifyMsgDelegate = self;”是否有多个页面都实现了同一个委托?

作者: admin    时间: 2015-10-12 16:55
2015-10-12 10:39:41.528 MobileCRM[74887:7185151] Message        OnConnect(bSuccess:0, errorcode=100)
MobileCRM(74887,0x10ecde300) malloc: *** error for object 0x7f8033802b50: pointer being freed was not allocated

根据日志来分析,可能是触发网络连接异步事件时出错了:
  1. // 连接服务器消息
  2. - (void) OnAnyChatConnect:(BOOL) bSuccess
  3. {
  4.     if (bSuccess)
  5.     {
  6.         theStateInfo.text = @"• Success connected to server";
  7.     }
  8. }
复制代码
是否网络连接事件触发时,相关的窗口(ViewController)已经销毁了?
作者: chaox    时间: 2015-10-12 17:49
admin 发表于 2015-10-12 16:55
根据日志来分析,可能是触发网络连接异步事件时出错了:是否网络连接事件触发时,相关的窗口(ViewContro ...

谢谢 这个问题已经解决 又重新拿instruments 排查了一遍 找到了内存泄露的地方

还有就是 有时候本地的摄像头不显示, 有一定的随机性 之间我并没有改动任何代码 请问是哪里出现了问题
作者: admin    时间: 2015-10-12 17:54
谢谢 这个问题已经解决 又重新拿instruments 排查了一遍 找到了内存泄露的地方

能大概说一下原因吗?
还有就是 有时候本地的摄像头不显示, 有一定的随机性
是否有使用标准示例工程helloAnyChat,是否也存在同样的问题呢?

作者: chaox    时间: 2015-10-15 18:20
admin 发表于 2015-10-12 17:54
能大概说一下原因吗?
是否有使用标准示例工程helloAnyChat,是否也存在同样的问题呢?

和您的软件没有关系 是我自己加的东西出现了问题
作者: chaox    时间: 2015-10-15 18:22
admin 发表于 2015-10-12 17:54
能大概说一下原因吗?
是否有使用标准示例工程helloAnyChat,是否也存在同样的问题呢?

现在还有一个问题  当业务服务器发起中心服务器录制时,加上“ANYCHAT_RECORD_FLAGS_LOCALCB”标志之后,我客户端的回调事件
- (void) OnAnyChatRecordCallBack:(int) dwUserid : (NSString*) lpFileName : (int) dwElapse : (int) dwFlags : (int) dwParam : (NSString*) lpUserStr

并没有被触发. 协议代理AnyChatRecordSnapShotDelegate 都签了
作者: admin    时间: 2015-10-15 18:31
您好,业务服务器发起中心服务器录制时,目前的版本暂时不会触发客户端本地的回调事件;

只有当客户端发起中心服务器录制时,加上“ANYCHAT_RECORD_FLAGS_LOCALCB”标志才会触发客户端本地的回调事件。
作者: chaox    时间: 2015-10-16 09:49
admin 发表于 2015-10-15 18:31
您好,业务服务器发起中心服务器录制时,目前的版本暂时不会触发客户端本地的回调事件;

只有当客户端发 ...

是不是客户端在开始录制的时候加上
[AnyChatPlatform StreamRecordCtrl:id:YES :BRAC_RECORD_FLAGS_SERVER :0];
结束的时候加上
[AnyChatPlatform StreamRecordCtrl:id:NO :BRAC_RECORD_FLAGS_LOCALCB :0];

可是还是没有触发回调 具体加在什么地方呢 我是在本地摄像头初始化之后开始录制 结束会话的时候结束录制
作者: admin    时间: 2015-10-16 09:53
标志都是在开始录制时加上的,结束时的标志将会被忽略,所以应该是:
int flags = BRAC_RECORD_FLAGS_SERVER | BRAC_RECORD_FLAGS_LOCALCB | BRAC_RECORD_FLAGS_VIDEO | BRAC_RECORD_FLAGS_AUDIO | ……
[AnyChatPlatform StreamRecordCtrl: id : YES : flags : 0];
作者: chaox    时间: 2015-10-16 10:28
admin 发表于 2015-10-16 09:53
标志都是在开始录制时加上的,结束时的标志将会被忽略,所以应该是:
int flags = BRAC_RECORD_FLAGS_SERV ...

您好 还是没有触发本地回调 而且也没有触发服务器录制 这是日志 您看一下

2015-10-16 10:22:46.748 MobileCRM[4047:3122618] ---------------------------AnyChat Platform Core SDK Client Log---------------------------
2015-10-16 10:22:46.751 MobileCRM[4047:3122618] Load libanychatcore.so success!(V5.3 Build Time:Aug 10 2015 12:28:15)
2015-10-16 10:22:46.754 MobileCRM[4047:3122618] Load libmediautil.so success!(V5.3 Build Time:Aug 10 2015 12:28:30)
2015-10-16 10:22:46.757 MobileCRM[4047:3122618] Load libmediashow.so success!(V5.3 Build Time:Aug 10 2015 12:28:27)
2015-10-16 10:22:46.760 MobileCRM[4047:3122618] Load libmediacore.so success!(V5.3 Build Time:Aug 10 2015 12:28:25)
2015-10-16 10:22:47.586 MobileCRM[4047:3122618] Invoke        Connect(10.1.10.118,8906)=0
2015-10-16 10:22:47.589 MobileCRM[4047:3122618] Invoke        LoginServer(username=sh_linxinyu)
2015-10-16 10:22:47.613 MobileCRM[4047:3122657] CheckClientSocketLink         Connect(ip=10.1.10.118,port=8906)
2015-10-16 10:22:47.651 MobileCRM[4047:3122657] Server version: V5.2(Build Time:2015-06-05 22:20:28, Server OS:Windows)
2015-10-16 10:22:47.654 MobileCRM[4047:3122657] Message        OnConnect(bSuccess:1, errorcode=0)
2015-10-16 10:22:47.762 MobileCRM[4047:3122657] Message        OnLoginSystem(userid=4,errorcode=0,username=¡÷–¬”í), msg deliver worked(0)
2015-10-16 10:22:47.765 MobileCRM[4047:3122657] Load libmediautil.so success!(V5.3 Build Time:Aug 10 2015 12:28:30)
2015-10-16 10:22:47.768 MobileCRM[4047:3122657] Load libmediashow.so success!(V5.3 Build Time:Aug 10 2015 12:28:27)
2015-10-16 10:22:47.771 MobileCRM[4047:3122657] Load libmediacore.so success!(V5.3 Build Time:Aug 10 2015 12:28:25)
2015-10-16 10:22:47.774 MobileCRM[4047:3122657] Server running time: 0 days, 0 hours, 4 minutes, license mode:0
2015-10-16 10:22:47.777 MobileCRM[4047:3122618] Invoke        SetSDKOption(BRAC_SO_NETWORK_P2PPOLITIC=0)
2015-10-16 10:22:47.780 MobileCRM[4047:3122618] Apply video parameter:1280x720, bitrate:0kbps, quality:3, gop:30, fps:8, preset:3, codec:1
2015-10-16 10:22:47.787 MobileCRM[4047:3122657] Connection to streaming media server successfully!(udp delay:6ms)
2015-10-16 10:22:49.972 MobileCRM[4047:3122618]
__28-[HallView OnAnyChatLogin::]_block_invoke [Line 346]
   ****** (系统管理员) *************
2015-10-16 10:22:49.973 MobileCRM[4047:3122618]
__28-[HallView OnAnyChatLogin::]_block_invoke [Line 348]
-----------(1),(1)
2015-10-16 10:22:49.976 MobileCRM[4047:3122618] Invoke        VideoCallControl(EventType:1, UserId:1, ErrorCode:0, dwFlags:0, dwParam:0, UserStrnull))=0
2015-10-16 10:22:50.001 MobileCRM[4047:3122657] Message        OnVideoCallEvent(EventType:2, UserId:1, ErrorCode:0, dwFlags:0x0, dwParam:0
2015-10-16 10:22:52.689 MobileCRM[4047:3122657] Message        OnVideoCallEvent(EventType:3, UserId:1, ErrorCode:0, dwFlags:0x0, dwParam:1
2015-10-16 10:22:52.694 MobileCRM[4047:3122618] Invoke        EnterRoom(roomid=1)
2015-10-16 10:22:52.715 MobileCRM[4047:3122657] Message        OnEnterRoom(roomid=1,errorcode=0,siteindex=1)
2015-10-16 10:22:52.809 MobileCRM[4047:3122657] Audio Playback Device Init(0, 1, 16000, 16), ios Playback Driver
2015-10-16 10:22:52.812 MobileCRM[4047:3122657] Message        OnReceiveOnlineUser(count=2,roomid=1)
2015-10-16 10:22:52.828 MobileCRM[4047:3122657] On Remote UserCameraControl(dwUserId:1, bOpen:1)
2015-10-16 10:22:52.828 MobileCRM[4047:3122618] Invoke        UserSpeakControl(userid=-1,bOpen=1)
2015-10-16 10:22:52.832 MobileCRM[4047:3122618] Audio record control:1, result:-1
2015-10-16 10:22:52.832 MobileCRM[4047:3122657] On Remote UserSpeakControl(dwUserId:1, bOpen:1)
2015-10-16 10:22:52.835 MobileCRM[4047:3122618] Invoke        SetVideoPos(dwUserId:-1, hWnd:0xe97140, l:0, t:0, r:0, b:0)
2015-10-16 10:22:52.871 MobileCRM[4047:3122618] Invoke        UserCameraControl(userid=-1, bOpen=1, stream=0)
2015-10-16 10:22:52.902 MobileCRM[4047:3122662] Default Audio Capture Driver()
2015-10-16 10:22:52.904 MobileCRM[4047:3122662] Audio Init, error:0, device:0, 1, 16000, 16, capmode:0
2015-10-16 10:22:52.907 MobileCRM[4047:3122662] Audio codec init, handle:1, 11, 1, 16000, 16, 15850
2015-10-16 10:22:52.983 MobileCRM[4047:3122662] WARNING: -[<AVCaptureConnection: 0xeb4250> isVideoMinFrameDurationSupported] is deprecated.  Please use AVCaptureDevice activeFormat.videoSupportedFrameRateRanges
2015-10-16 10:22:52.983 MobileCRM[4047:3122662] WARNING: -[<AVCaptureConnection: 0xeb4250> setVideoMinFrameDuration:] is deprecated.  Please use AVCaptureDevice setActiveVideoMinFrameDuration
2015-10-16 10:22:53.194 MobileCRM[4047:3122698] Audio FX Status: VAD:1, NS:1, AGC:1, AEC:1
2015-10-16 10:22:53.687 MobileCRM[4047:3122662] video init finish: 1280x720, 25fps, fmt:100, ret:0
2015-10-16 10:22:53.690 MobileCRM[4047:3122662] video init finish:1280x720, YUV420, fps:25, codecid:1
[libx264 @ 0x20d9c10] using cpu capabilities: ARMv6 NEON
[libx264 @ 0x20d9c10] profile High, level 3.1
2015-10-16 10:22:53.745 MobileCRM[4047:3122634] video codec init:codec:1, 8fps, 1280x720, bitrate:0kbps, quality:3, preset:3, gop:30, handle:2
2015-10-16 10:22:54.329 MobileCRM[4047:3122618] Invoke        StreamRecordCtrlEx(1, 1, 0x807, 0, )=0
2015-10-16 10:23:10.689 MobileCRM[4047:3122657] Message        OnVideoCallEvent(EventType:4, UserId:1, ErrorCode:100104, dwFlags:0x0, dwParam:0
2015-10-16 10:23:10.698 MobileCRM[4047:3122618] Invoke        StreamRecordCtrlEx(0, 0, 0x4, 0, )=0
2015-10-16 10:23:10.701 MobileCRM[4047:3122618] Invoke        UserSpeakControl(userid=-1,bOpen=0)
2015-10-16 10:23:10.706 MobileCRM[4047:3122618] Invoke        UserCameraControl(userid=-1, bOpen=0, stream=0)
[libx264 @ 0x20d9c10] frame I:7     Avg QP:22.26  size: 54484
[libx264 @ 0x20d9c10] frame P:128   Avg QP:25.20  size: 12321
[libx264 @ 0x20d9c10] mb I  I16..4: 30.7% 61.2%  8.1%
[libx264 @ 0x20d9c10] mb P  I16..4:  9.8%  7.7%  0.0%  P16..4: 35.8%  6.1%  2.0%  0.0%  0.0%    skip:38.5%
[libx264 @ 0x20d9c10] 8x8 transform intra:48.1% inter:49.5%
[libx264 @ 0x20d9c10] coded y,uvDC,uvAC intra: 61.5% 13.0% 0.2% inter: 19.1% 2.2% 0.0%
[libx264 @ 0x20d9c10] i16 v,h,dc,p: 34% 13% 44%  9%
[libx264 @ 0x20d9c10] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  9% 11% 56%  2%  7%  3%  6%  3%  4%
[libx264 @ 0x20d9c10] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 22% 17%  2%  8%  3%  6%  3%  6%
[libx264 @ 0x20d9c10] i8c dc,h,v,p: 81%  9% 10%  0%
[libx264 @ 0x20d9c10] Weighted P-Frames: Y:51.6% UV:5.5%
[libx264 @ 0x20d9c10] kb/s:928.46
2015-10-16 10:23:10.819 MobileCRM[4047:3122618] Invoke        UserSpeakControl(userid=0,bOpen=0)
2015-10-16 10:23:10.822 MobileCRM[4047:3122618] Invoke        UserCameraControl(userid=0, bOpen=0, stream=0)
2015-10-16 10:23:10.855 MobileCRM[4047:3122618] Invoke        LeaveRoom(roomid=-1)        Elapse:30 ms
2015-10-16 10:23:10.871 MobileCRM[4047:3122618] Invoke        LogoutServer(userid=4)        Elapse:12 ms
作者: 佰锐科技-李友勤    时间: 2015-10-16 10:33
本帖最后由 佰锐科技-李友勤 于 2015-10-16 10:35 编辑
chaox 发表于 2015-10-16 10:28
您好 还是没有触发本地回调 而且也没有触发服务器录制 这是日志 您看一下

2015-10-16 10:22:46.748 Mo ...


您部署的录像服务器与核心服务器连接正常吗
作者: admin    时间: 2015-10-16 10:33
从log看,您是录制对方吧?因为本地的userid=4,而您录制的是userid=1:
Invoke        StreamRecordCtrlEx(1, 1, 0x807, 0, )=0;

另外从log分析,您好象没有请求对方的视频?日志中没有看到:UserCameraControl(1, 1)的调用记录?
作者: chaox    时间: 2015-10-16 10:34
视频可以录制了  但是回调还是没有触发
作者: admin    时间: 2015-10-16 10:37
您可以将录像服务器的日志贴上来,我们帮您分析一下,谢谢。
作者: chaox    时间: 2015-10-16 10:39
admin 发表于 2015-10-16 10:33
从log看,您是录制对方吧?因为本地的userid=4,而您录制的是userid=1:
Invoke        StreamRecordCtrlE ...

谢谢 已经解决
作者: admin    时间: 2015-10-16 10:53
亲,是什么原因呢?
作者: chaox    时间: 2015-10-16 11:02
admin 发表于 2015-10-16 10:53
亲,是什么原因呢?

是我在挂断之后 立马就logout了 所以还没来得及走回调方法 然后把logout写在了会调里就好了  是我马虎了




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3