h***@163.com
h***@163.com
  • 发布:2024-04-23 17:23
  • 更新:2024-04-23 17:29
  • 阅读:26

【报Bug】App模式下,字符串首字节为0x00时,造成日志输出宕住

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 14.2.1 (23C71)

HBuilderX类型: 正式

HBuilderX版本号: 3.96

手机系统: iOS

手机系统版本号: iOS 14

手机厂商: 苹果

手机机型: iPhone6

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:
 let str = '\x00\x01\x03';  
console.log('字符串是',  str);  
console.log('字符串是' + str);

预期结果:

输出日志

实际结果:

程序hang住

bug描述:

此BUG和具体App无关,预测是console.log日志族在输出ascii string时,存在BUG。

如下面的代码,在string的第一个字节为0x00时,程序不提示异常,进入到等待状态,后续代码不执行。
或者也可以用 let str = '\x00\x01\x03';这种方式,用console.log进行日志输出,可重现。

try {  
  let str = '';  
  console.log('1.str is:', str);  
  str = 0x00;  
  console.log('2.str with value 0x00 is:', str);  
  str = '\0';  
  console.log('3.str with value slash zero is:' + str);  
} catch (e) {  
  console.warn("字符串的日志输出错误", e)  
}

遇到此问题时,在其它线程有日志输出时,会带出预期输出日志,且内容不正确。如下图,我们2和3日志间相隔了30秒,是因为我们测试程序是蓝牙,蓝牙断开打印了日志

2024-04-23 17:23 负责人:无 分享
已邀请:
h***@163.com

h***@163.com (作者)

目前只有iOS的App模式下存在此问题,同样的代码,在Android的App模式,以及微信和支付宝小程序的Android及iOS均无问题。

h***@163.com

h***@163.com (作者)

非printable的字符串日志输出,这个我们可以屏蔽掉,但是问题的起因在于我们需要向蓝牙下发数据,一个设备的pdu的第一个字节定义必须是0x00,所以发现了这个问题。

屏蔽了日志,我们的程序在iOS的App模式下也是不行,怀疑在处理0x00开始的string,其它地方也存在同样的BUG

要回复问题请先登录注册