Web Analytics

也谈’SIGBUS和SIGSEGV’

SIGBUS和SIGSEGV也许是我们在平时遇到的次数最多的两个内存错误信号。内存问题一直是最令我们头疼的事情,弄清楚两个信号的发生缘由对我们很好的理解程序的运行是大有裨益的。 我们来看两段程序: //testsigsegv.c int main() { char *pc = (char*)0×00001111; *pc = 17; } ...

December 19, 2007 · 3 min · Tony Bai

一个很有意思的Bug

这个Bug源于昨天凌晨的一次版本升级失败。睡了一大觉后,下午回到公司,重现了这个问题并找到了原因,发现这的确是一个’很有意思的Bug’。 ...

December 18, 2007 · 3 min · Tony Bai

'符号连接'那些事儿

我们在编译自己开发的程序或者一些开源软件的时候,常常遇到类似如下的编译器错误信息: 未定义 文件中的 符号 在文件中 i /var/tmp//ccU4sj6I.o func /var/tmp//ccU4sj6I.o ld: 致命的: 符号参照错误. 没有输出被写入a.out collect2: ld returned 1 exit status ...

December 8, 2007 · 7 min · Tony Bai

回顾TCP协议那些事儿

我不是计算机科班出身。记得大学的时候旁听计算机系的网络课,当时计算机系使用教材是"计算机网络–自顶向下方法与Internet特色“的影印版,这本教材与众不同的一个地方就是作者JAMES F.KUROSE和KEITH W.ROSS采用了’自顶向下’的编排思路,先从应用层开始,最后讲到物理层。而且这本书在语言上形象生动,通俗易懂。只怪我当初没有一心一意听讲,到现在存在我的脑子中的基本概念居多,深刻理解甚少。以致于工作后遇到此类的问题,只能恶补。这不,在12月1日凌晨全国统一短信类服务接入代码的调整工作中,我就遇到了此类问题,不得不再次抱起W.Richard Stevens的’TCP详解卷一‘啃了啃,回顾一下TCP协议那些事儿。 ...

December 6, 2007 · 6 min · Tony Bai

也谈'万能'栈

在网上搜索"万能"二字的英文翻译,结果却无意中看到有人提到了如何设计"万能栈"。栈(stack)是比较基础(fundamental)的数据结构,实现起来一般都比较容易。但一般的栈(stack)的实现都是局限于某种特定类型的,比如一个存储32-bit整型的栈。如果对于同一份栈实现,要求可以存储多种数据类型的话,那就需要仔细想想了。而这样的栈实现也就被戏称"万能"栈。 ...

November 27, 2007 · 3 min · Tony Bai

面对'错误'的抉择

大凡写程序者,都会遇到错误; 大凡写程序者也都知道两种错误处理的机制:传统的’错误码返回机制’和’面向对象语言引入的异常处理机制’。 ...

November 13, 2007 · 4 min · Tony Bai

遭遇Heap溢出

今天凌晨配合云南移动进行局数据全量升级,本来以为是件很轻松的活计,甚至不需要我动手的事情,结果却又是一次惨痛的教训啊。 这个活计其实真的很简单,就是将数据库中的旧数据全部删除,然后导入新的数据,由于数据量较大需要重启一次我们的系统。问题就在重启系统上。摆在我面前的就是"重启失败",系统dump一个core文件。通过pstack和gdb查看如下: core ‘core’ of 7971: xxxxx -s fe647b38 t_splay (3a71b0, 229, 228, 3a7000, 3ca548, 8000000) + 14 fe6475ec realfree (3ca320, 741f4, 320974, fe6bc000, 0, 3209a5) + c8 fe647e5c cleanfree (0, 7, fe6c29bc, 1a8, 3a7008, 0) + 54 fe646f88 _malloc_unlocked (ea60, 0, ff13de50, fe6bc000, ff184ae6, 0) + f4 fe646e78 malloc (ea60, 3e8, 0, 2, f8e9dacb, 1) + 20 000fa330 我们一业务函数,暂叫A_func吧 (18, 186a0, ffbfe4b0, 30330000, 37, ff00) + 1fc ...

November 10, 2007 · 3 min · Tony Bai

在Solaris上编译Ethereal的注意事项

自从上次’编译Ethereal On Windows‘之后,好久没有接触Ethereal了,前期策划的基于Ethereal开发的一个工具的任务就落到了这批来的一个新员工的头上了。第一阶段他在Windows上开发了一个基于Ethereal的插件用于分析CMPP协议之用;第二个阶段我们需要移植到Unix上,我们使用的是Solaris。 ...

November 8, 2007 · 4 min · Tony Bai

浅谈如何编码使程序更易维护

毕业后就一直从事于服务器端程序的开发,主要客户是中国移动,大家知道移动的产品都是电信级的,稍出差错后果都是严重的,所以在我们平时的工作中除了研发之外,还有的就是对我们卖给移动的产品的维护性工作,而这种维护性工作要求就是要"迅速解决现场的问题"。这几个月维护工作占据了我很大一部分精力,说实话,有些烦了,但是从另外一个角度来看,也说明了我们的产品在维护性方面做的不够好,否则移动的工作人员或当地的技术支持人员通过手册或者查看系统日志的方式就可以解决问题的。这让我反思。 ...

September 30, 2007 · 4 min · Tony Bai

成功Build ACE

近期公司实行新的绩效考核机制,我的考核目标中就有一项叫做:“成功使用新技术、框架、思路等至少3个”,呵呵,先不论绩效考核机制是否合理,既然已经这样了那就需要去适应。一直在做Network Application,早就知道ACE在业界中的名气,这回有理由找个时间好好挖掘一下ACE的思路,也为我的绩效目标增色啊^_^。 ...

June 14, 2007 · 5 min · Tony Bai