执行sql,提示Illegal instruction(非法指令)

打包环境

x86+cento6+gcc10

运行环境

海光(x86)+银河麒麟v10sp2+gcc7

原因

在测试postgis340+最新依赖库的版本,执行的三维sql出现数据库断开连接。

在执行的时候发现sql的cpu消耗很大,其实这不是重点,应该是卡主的原因

通过数据库日志,Illegal instruction(非法指令)

问了下内核的同事,他们给了个办法,通过pid去逐步调试

问题调查

1、使用psql进行连接

2、获取psql的backend

select pg_backend_pid();
-------------------------
                   902013

3、再打开一个tab页,进入到bin目录,进行逐步调试。

cd 进入到数据库bin目录

4、执行监控调试

gdb -p 902013

5、按c让程序继续执行,程序会停在出异常的地方。卡在了二进制不相等的地方。

我这次停在了libgmp.so下,因为打包用的gcc10,麒麟v10是gcc7,可能存在差异。

还有种可能是x86或者centos的一些特殊属性添加进了gmp.so,导致麒麟不认。

也可能麒麟有了自己的优化,对这块有所改动。总之各方面原因。

解决办法

最好的解决办法,即使不能芯片一样,系统也需要一样,在麒麟下打包肯定是没问题的

你可能感兴趣的:(PostGIS,#,PostgreSQL,数据库)