我使用activemq在进程(c ++程序)之间传递xml消息,并且它可以根据需要运行。我试图将程序安装到新主机上,但我遇到了麻烦。由于我没有配置我的开发系统,我相当确定我在新系统activemq实例中遇到了配置问题。我在onMessage
方法中运行一段代码时遇到了段错误。如果我在启动消息监听器之前调用代码,它运行正常。不幸的是,我无法显示代码...所以伪代码,抱歉。
Main
{
Declare object
Use object. <-- works fine
}
MessageReader
{
onMessage
{
Declare object. <-- segfaults here
}
}
Main
{
Declare messageReader
Run messageReader
}
当程序收到消息时,它在尝试实例化对象时会发生段错误。
开发和部署系统都运行Linux 64,程序也编译为-m64
。如果activemq c ++库是32位版本,我会在尝试链接时遇到精灵失败,对吗?
堆栈限制是无限的,-Xms=1G
和-Xmx=10G
,但我得到一些关于线程太少的警告(来自运行activemq的控制台)我不知道。
任何帮助将不胜感激,是的,我知道我真的很喜欢描述事情
答案 0 :(得分:0)
根据提供的信息,我猜测它与https://issues.apache.org/jira/browse/AMQCPP-529有关,但在您的情况下很难说。首先要做的是升级到库的v3.8.3以获取最新的修复程序。另一件要尝试的是通过使用新的&#39;对象来对堆上的对象进行创建。然后将其删除或将其分配给auto_ptr以进行自动清理。