VCPP

行动出灵感,灵感不出行动
个人资料
  • 博客访问:
正文

从波音飞机事故说起 --- 我经历的软件出错噩梦

(2019-04-05 20:06:57) 下一个

这是三个星期之前写的,那是早上,刚写好这个软件crash的文字,下午开车就经历了crash, 于是再没心思贴出。现在稍微缓过来一点,提醒各位:开车注意安全,平安是福,此言不虚。
 

波音飞机坠毁,引发全球关注。波音昨天(3月17日)宣布,已完成最新软件更新,说明事故的确跟软件有关。我能想象,自从出事以来,波音搞软件的人经历的巨大压力:赶紧查找原因,必须限时完成。最难的是,无法实际测试,一切只能靠模拟和分析,总不能为了排查错误,真摔一架飞机。这方面,我有过痛苦不堪的经历。

我们公司开发的是监控大型石油天然气管道的软件。24小时实时运行,一定要关停的话,最多只能半小时。偏偏软件质量太差(主要是人的问题),以前我笑话过国内某通信公司现场改软件的做法,那时在我的“老东家”,加拿大百年老店北方电讯,软件都是经过最严格的设计、反复测试,发布以后,偶尔一年才会出个错。软件出错之后,决不能马上修改,因为这时出的错,已经不是简单的错误,一般都与设计或者实际因素有关,匆忙改的话,很有可能改坏其他部分,必须备案,研究分析之后,才确定如何修改。这样做出的软件,质量不是一般的高。各位打手机, 没出现掉线吧?那里面有我们的努力和智慧呀,哈哈.

换到现在这个公司后,完全没有这一套,用户需求一句话,你说咋办就咋办。结果,有一次,我参与的一个大项目,投产之后,立马出现软件崩溃。要命的是它随机发作,每次重新启动后,有时隔半天,有时就是一两小时,突然崩溃。想了各种办法,花了两天时间,再加整个周末熬到半夜,还是不知道怎么回事。大家纳闷:以前在老系统上好好的,怎么换到微软的新系统上就不行了?

用户骑虎难下,不得已,只好安排一名员工晚上加班看守,一旦出错,立即人工重启。NND,软件做到这个份上,耻辱啊!到周一,我觉得不能再这样盲人摸象。静下心来,把源程序拿来 (别人写的),密密麻麻两三千行,一个字一个字看了一遍。最后锁定其中一行,就是一个没脑子的错误,肯定就是祸根。修改好放上去,果然止住流血,一干人总算松口气。

后来,我在其他项目的程序里也看到同样的错误,赶紧修改,免了几场灾难。

[ 打印 ]
阅读 ()评论 (12)
评论
VCPP 回复 悄悄话 回复 'wangtora' justforfun 的评论 :
每次都是静静地垮掉,程序不是一个exe,都是以前的员工用c写的DLL,c++都达不到,类似的还有几十个在运行。用了debugDiag后知道一点蛛丝马迹,但具体在什么地方不知道。
wangtora 回复 悄悄话 justforfun 发表评论于 2019-04-06 06:31:46
nullpoint error应该很容易在log里看到的
------------------
显然是C++,core dump了。
VCPP 回复 悄悄话 回复 '海牛' 的评论 :
这点我倒不知道。那厮家在芝加哥,每周坐专机去多伦多上班。
上任后,把几个哥们拉进管理层,然后故意解雇,一人给两亿赔偿,几万职工在战壕里拼死拼活,也拿不到零头。这哥们不坐牢,天理何在啊!
海牛 回复 悄悄话 北方电信最后那个 CEO 曾经在五角大楼当过高官的。怎么就没有人质疑他有军方背景 ?
VCPP 回复 悄悄话 回nanax:
我现在怀疑北电是被最后那个CEO 鸟人故意掐死的。北电几大块事业,我们那块无线通讯一直盈利,从来没有亏过,支撑起公司半壁江山。
nanax 回复 悄悄话 照您说的,北方电讯的做法挺靠谱,可是这样的公司为什么现在这么没落了,感觉好可惜啊
dqdeer 回复 悄悄话 这样改还是不够好吧,这个线程不跑了?
WINDOW下线程自己死是很正常的事情。多加几句try ...catch 就好了,问题大了就自己重启程序。
justforfun 回复 悄悄话 nullpoint error应该很容易在log里看到的
VCPP 回复 悄悄话 回复 '龙烈生' : 贴出来,大侠会笑喷,lol,
老code: p->processData();
新code:
if(p!=null)
p->processData();
VCPP 回复 悄悄话 回bashfulx, 您问得好!我什么也没有得到,项目主管的态度是,仿佛这种烂code是我写的,我有罪一样。奇葩吧?此人一贯刻薄,后来,组里有位揭竿而起,甩袖而去。触发了雪崩,公司这才大惊,立即撤了他职。
bashfulx 回复 悄悄话 为了这种贡献,你升级了还是涨工资了?
龙烈生 回复 悄悄话 兄弟,把代码贴出来巴? :-)
登录后才可评论.