为什么在Intel CPU上编译的代码会在AMD CPU机器上崩溃?

问题描述

我有一个使用c + +开发的应用程序,该应用程序是在Visual Studio中,Windows上,带有Intel cpu的。

此应用程序在多台计算机上的多个位置都在使用,所有这些都使用Intel cpu

最近,它已安装在具有AMD cpu的PC上。

在AMD机器上,通过某些功能,应用程序冻结并崩溃。

崩溃的功能使用boost线程锁定,然后使用标准的opencv功能(特别是aruco基准标记模块),因此我认为问题出在线程锁定上。

相关代码为:

//标题

const createBase = function (num) {
    return num + 6
};

//第一个线程(生产者)

typedef boost::shared_mutex Lock;
typedef boost::unique_lock< Lock > WriteLock;
typedef boost::shared_lock< Lock > ReadLock;
Lock floorLock;

//线程二(消费者)

WriteLock f_lock2(floorLock);
frameFloor = image_ocv.clone(); //an opencv::Mat 
f_lock2.unlock();

我曾尝试将它们换成ad-safe队列,然后崩溃仍然存在。

一个第三方现在已经在不同的机器上对此进行了测试,并确认了行为。 运行正常的计算机与崩溃的计算机之间的唯一区别是英特尔与AMD cpu

不幸的是,我没有任何AMD机器,因此在调试它时遇到了麻烦。

是否有任何原因导致在Intel cpu上编译的代码在AMD上崩溃? 我该如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)