前言
我们曾经在某个平台上遇见一个奇怪的问题:当从网上获取图片或XML/HTML数据时,无论是TCP 还是UDP ,数据会被随机破坏,从而导致图片有明显的马赛克,XML或者HTML以格式不正确而无法被解析。而且数据的破坏的位置也是随机的。从dump出来的XML或者HTML内容来看,都是一些随机数据覆盖了正常数据。这对于一个基于网络的产品,这种错误是无法接受的。这种错误以各种随机现象充斥在bugzilla 中,最终的debug 都把矛头指向了网络系统调用recv/read ,问题是,这个究竟是谁的错: User space(Server,Client,uClibc) ? 还是kernel space(kernel) ? 抑或两者都有?
全文概要
本文主要通过一个具体的网络问题,展示了一个完整的debug过程:从user space, 到recv系统调用,再到kernel network stack的追踪,直到问题的最终解决。
附件为全文pdf.
|
文件: |
network_problems_tracing.pdf |
大小: |
331KB |
下载: |
下载 | |
阅读(460) | 评论(0) | 转发(0) |