完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1,pmT 堆异常
"pmT"(stack_size = 0,task handle = 3fff56c8) overflow the heap_size. "pmT"(stack_size = 0,task handle = 3fff56c8) overflow the heap_size. 2,异常重启 ShowCritical:0 ets Jan 8 2013,rst cause:2, boot mode:(3,0) 请问这个协议栈有问题??什么原因导致这个问题??? 另外的现象,就是sendto的地方挂死。 之前在sendto地方加了一个select 判断是否能够发送报文,短一点的报文,不会出现异常或者挂死的现象。 |
|
相关推荐
1个回答
|
|
这个问题可能是由于UDP报文发送过程中内存不足导致的。以下是一些建议来解决这个问题:
1. **增加堆内存大小**:检查你的系统配置,看看是否可以增加堆内存(heap size)的大小。这可以通过修改系统配置文件或编译时设置来实现。 2. **优化内存使用**:检查你的代码,看看是否有内存泄漏或者不必要的内存分配。使用内存分析工具来帮助识别这些问题。 3. **限制报文大小**:如果你的应用场景允许,尝试限制发送的UDP报文大小。较小的报文可能会减少内存溢出的风险。 4. **使用动态内存管理**:如果你的应用程序需要频繁地分配和释放内存,考虑使用动态内存管理威廉希尔官方网站 ,如内存池(memory pool)。 5. **优化发送逻辑**:检查你的发送逻辑,确保在发送报文之前检查内存是否足够。如果内存不足,可以暂停发送或等待内存释放。 6. **使用非阻塞I/O**:使用非阻塞I/O(如select或poll)可以避免在sendto函数调用时挂死。你已经尝试了select,但可能需要进一步优化你的逻辑以确保它在内存不足时能够正确处理。 7. **错误处理**:在发送报文时添加错误处理逻辑,以便在遇到问题时能够优雅地处理。例如,如果sendto调用失败,可以重试或记录错误信息。 8. **更新协议栈**:如果你怀疑问题可能与协议栈有关,尝试更新到最新版本的协议栈,看看是否解决了问题。 9. **硬件或固件问题**:如果上述方法都不能解决问题,可能需要检查硬件或固件是否存在问题。与硬件供应商或固件开发者联系,看看是否有已知的问题或解决方案。 通过尝试上述建议,你应该能够找到导致内存溢出的原因,并采取相应的措施来解决这个问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
179个成员聚集在这个小组
加入小组441 浏览 1 评论
1419 浏览 1 评论
610浏览 6评论
506浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
487浏览 5评论
490浏览 4评论
474浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-26 15:18 , Processed in 0.799093 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号