Proxy Cache 是我现在正在做的项目,今天终于把server崩溃的问题解决了。
这个问题应该是在写server代码的时候遗留下来的,由于当时客户端没有写完,这个问题一直没有表现出来,也就放在那里忘记了。客户端写好后开始联调,运行没多久,几个server进程就一个一个的崩溃了,错误是 malloc(): memory corruption (fast): ,提示是内存操作错误,我仔细的检查了我程序的所有内存操作,没有发现什么错误。请钟老师帮忙看一下这个错误,他用反汇编帮我把这个错误定位到了函数,但是这个函数没什么错误,一定是其他地方有问题,在这个地方引起了程序的崩溃。
我用GDB一步一步的调试也没跟踪出什么问题来,只好请教我们组的大牛柱子同学,帮忙看看我的代码。经过一阵讨论,柱子同学指出,server的接受和发送函数的错误处理很可能有问题,要好好琢磨一下。于是今天一天我看了几本关于Linux网络编程的书,仔细的研究了一下send()和recv()两个系统调用的错误处理。再看看我的代码,错误处理的逻辑非常混乱,几乎全是错的(我有点奇怪server怎么还能运行那么长时间才崩溃)。整理思路,把错误处理部分重新写了一遍,再运行,等我吃完饭回来,server依然健在,哈哈,搞定了!
感谢钟老师的debug,感谢柱子的review,让我把这个问题解决了。

没有评论:
发表评论