首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在发送时,activemq-cpp抛出“线程本地存储限制”。

在发送时,activemq-cpp抛出“线程本地存储限制”。
EN

Stack Overflow用户
提问于 2014-08-04 18:51:38
回答 1查看 1.1K关注 0票数 1

我一直在开发一个与ActiveMQ互连的线程数据池系统(库版本3.8.2)。系统管理一组设备,这些设备可以定期池化,轮询结果被发送到代理中的队列。应答队列可以通过控制消息在任何时间内更改,因此生产者和目的地都会不断更改。只有一个订阅服务器接收所有控制命令,多个线程从它们自己的会话中创建生产者和消息。所有消息都是TextMessages。

所有activemq-cpp元素都封装在RAII元素中,但是在密集使用之后,连接会接收消息,但是当我试图发送响应时,库会抛出一个异常,即“已达到的线程本地存储限制”。之后,它会接收更多的消息(有时文本被破坏),但是试图发出新消息的尝试再次出现在线程存储异常中,然后完全停止接收和发送。

有人发现这样的问题了吗?欢迎任何帮助。

更新:我已经编译并使用了新的3.8.3版本,并且仍然可以复制错误。测试是在RHEL5.7和Fedora 20中进行的,它们都是64位架构。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-07 16:18:17

经过几天的调试和包装中的重新计算,我们发现罪魁祸首是一个指向未被删除的结构的错误指针。这尤其将丢失的指针隐藏在瓦伦丁的备忘录中,作为一种“间接损失”。

毕竟,当前的问题是未删除的cms::会话指针的集合(也会发生在其他cms对象中)。

作为会话部分中的activemq-cpp库指出,cms::Session是单个线程元素。但是,它还声明创建它的连接控制它的几个操作,其中它保存了对生成的会话的引用,所有这些都存储在连接线程堆栈中。因此,当连接容量满时,大量的会话创建将触发“已达到的线程本地存储限制”。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25125565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档