关于iOS开发中遇到的“libsystem_kernel.dylib`semaphore_wait_trap/”错误的相关技术

关于iOS开发中遇到的“libsystem_kernel.dylib`semaphore_wait_trap:”错误的相关技术文章

错误介绍:我是在项目中使用到了socket相关通信技术,当正常使用打开都没有问题,只有当按电源键锁屏后,点击推送消息的时候,进入app时,白屏然后闪退,Xcode跟踪错误日志,显示的错误信息如下:

在日志输出端口,输入bt,回车,如下:

关于iOS开发中遇到的“libsystem_kernel.dylib`semaphore_wait_trap/”错误的相关技术_第1张图片

显示错误原因是:signal SIGPIPE

解释如下:

socket管道破裂。这个信号通常在进程间通信产生,比如采用FIFO(管道)通信的两个进程,读取管道没有打开或者意外终止就往管道里面写,写进程就会收到SIGPIPE信号。此外用socket通信的两个进程,写进程在写socket的时候,读进程已经终止。

我们需要在send的时候检测到服务器已经关闭连接,进行重新连接。正常情况下send函数返回-1表示发送失败,但是在IOS上SIGPIPE在send返回之前就终止了进程,所以我们需要忽略SIGPIPE,让send正常返回-1,然后重新连接服务器。

解决BUG代码如下:

在main.m文件中,写上:

关于iOS开发中遇到的“libsystem_kernel.dylib`semaphore_wait_trap/”错误的相关技术_第2张图片

就OK了。

你可能感兴趣的:(关于iOS开发中遇到的“libsystem_kernel.dylib`semaphore_wait_trap/”错误的相关技术)