工具/软件:TI-RTOS
编辑:使用 wolfSSL v3.9.11可修复此问题。
您好!
加载测试使用 WolfSSL v3.9.6和 TI-RTOS v2.16.01.14构建的 HTTPS 服务器时,我遇到内存不足问题,这些服务器在我的定制板上的 TM4C129芯片上运行。
为了排除因实施而导致的任何问题并缩小问题范围、我设置并运行 TI-RTOS 示例中提供的 tcpEchoTLS 示例代码。
为了测试 SSL 连接、 我使用了 slscan 工具(可从 https://github.com/rbsec/sslscan/releases/tag/1.11.0-rbsec 获取)
sslscan 工具成功测试了 SSL 连接,但我注意到这会导致在 RTOS 对象视图(ROV) HeapTrack 中的 TaskAllocList 中创建新的孤立堆块。 如果我重复运行 SSL 扫描、孤立块的数量会增加、直到我耗尽堆内存。
根据我过去几天的调查、当 WolfSSL 出现错误时、似乎会发生这种情况(请参阅我的 Live Session 选项卡的屏幕截图)。 我附加了屏幕截图、其中显示了一次测试的结果、这表明当错误发生时、似乎发生了内存泄漏。
注-我对 tcpEchoTLS 示例代码所做的修改:
- 使用计数信标将并发连接的数量限制为3。
- 将 TCP 服务器更改为侦听端口443 (用于 SSL 连接)
- 添加了 Log_info 语句以记录 WolfSSL 错误。
tcpWorker(){
… /*在我们接收数据时循环*/ /*在我们接收数据时循环*/ while ((bytesRcvd = wolfSSL_recv (SSL、(char *) buffer、TCPPACKETSIZE、0))) >0){ bytesSent = wolfSSL_send (SSL、(char *) buffer、bytesRcvd、0); if (bytesSent < 0 || bytesSent!= bytesRcvd){ System_printf ("tcpWorker:发送失败。\n"); 中断; } } int errorCode = wolfSSL_get_error (SSL、bytesRcvd); if (错误代码!= SSL_ERROR_NONE) { log_info1 ("WolfSSL 错误[%d]"、errorCode); } ...}
这是我的 tcpEchoTLS 项目的 zip 文件。
如果有任何关于如何解决此问题的提示、我们将不胜感激。