这周在某省升级通信中间件,在RedHat平台的中间件 运行正常,业务可以正常处理。但在 HP-UX服务器上,一承载业务,中间件就出Core重启。
我立刻组织部门的同事投入到问题分析中。
首先我在公司的实验室的HP服务器上部署某省的业务。然后在实验室编写votel话务测试脚本,进行业务测试。故障现象浮现,HP下的中间件出core重启。分析代码的位置,是出现在 int i=*(int*)(*begin+1);地方。
然后对版本进行回滚,原来的代码赋值是
+ int i;
+ memcpy((char*)(&i),(*begin)+1,4);
将该处代码由强指针转换改为memcpy后,业务中间件正常运行。
对这个问题百思不得其解,于是我安排小汪在写一个简单的测试程序,代码中只写强制转换的代码。
#include <stdio.h>
int main()
{
char aa[10] = {'a','b','c','d','d','e','f','a','b','c'};
char *p = (