attmdb_add_service软件崩溃

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support。我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
每克里斯琴森
离线
最后看到:2年7个月前
加入:2016-10-10大礼堂开幕
attmdb_add_service软件崩溃

当我调用“status = attmdb_add_service(shdl, dest_id, nb_att_uuid_16, 0, nb_att_uuid_128, total_size);”函数时

nb_att_uuid_16 = 15
nb_att_uuid_128 = 6
total_size = 868

软件崩溃。如果total_size小于868就可以了。我试图增加堆大小,但结果是一样的。

如果我在函数之前和之后放一个调试打印,我可以看到函数内部崩溃。

设备:
MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
每Christiannsen你好,

每Christiannsen你好,

设备崩溃的原因是因为您耗尽了数据库堆,这是设备分配数据库请求的内存量的地方,您提到您已经增加了堆(是DB_HEAP_SZ定义吗?)显然,当设备在不同的睡眠模式下运行时,您要么增加了错误的堆类型,要么增加了DB堆大小。例如,如果您希望增加DB_HEAP_SZ,请转到da1458x_conifg_advanced.h文件,并在#if defined(CFG_MEM_MAP_EXT_SLEEP) || !defined(CFG_MEM_MAP_DEEP_SLEEP)下添加以下具有相应大小的#define DB_HEAP_SZ。

由于MT_dialog

每克里斯琴森
离线
最后看到:2年7个月前
加入:2016-10-10大礼堂开幕

在这种情况下,我认为函数应该返回“ATT_ERR_INSUFF_RESOURCE”,而不是崩溃。

MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
嗨,克里斯琴森,

嗨,克里斯琴森,

设备不会崩溃,它只是重置,因为wrap_platform_reset()被调用,是的,函数应该返回你提到的东西,它不返回的原因是分配所需空间的malloc函数只是在函数返回之前调用重置,所以如果我得到你正确的问题,然后你的设备结束在wrap_platform_reset()和你应该得到的错误消息是RESET_MEM_ALLOC_FAIL。所以请尽量遵循我上面提到的。

由于MT_dialog