发现一BUG

      BUG 2006-4-6 9:51
2006-4-5 15:20发现BUG过程描述 by ffb: 
 
MM     <--从此删除 
 |_EE 
    |_ UU 
        |_AA* 
       
以下是本次运行的日志(显示在DebugView中) 
00000000  15:01:43   [2044] [CS]:[VSOCK] 收到上级命令 Tag=134217793 Src=33554432 CptID=268435522 Cmd=CMD_DEL   
00000001  15:01:43   [2044] [CS]:[VSOCK] 发送下级命令 Tag=134217793 Src=33554432 CptID=268435522 Cmd=CMD_DEL   
00000002  15:01:43   [2044] [CS]:[VSOCK] 收到上级命令 Tag=67108928 Src=33554432 CptID=134217793 Cmd=CMD_DEL   
00000003  15:01:43   [2044] [CS]:[VSOCK] 发送下级命令 Tag=67108928 Src=33554432 CptID=134217793 Cmd=CMD_DEL   
00000004  15:01:43   [2044] [CS]:[VSOCK] 收到上级命令 Tag=16777269 Src=33554432 CptID=67108928 Cmd=CMD_DEL   
00000005  15:01:43   [2044] [CS]:[VSOCK] 返送上级应答 Tag=33554432 Src=16777269 CptID=67108928 Cmd=CMD_DISCONN_SUCCESS   
00000006  15:01:43   [2044] [CS]:[VSOCK] 返送上级应答 Tag=33554432 Src=16777269 CptID=67108928 Cmd=CMD_DEL_SUCCESS   
 
 
 
 
以下是分析: 
1.从任务管理器得知2044是MM的进程ID 
2.命令含义:Src让Tag删除CptID; 
3.ID含义: 16777269是MM,67108928是EE,134217793是UU,33554432是CC(by ffb),268435522是AAE 
 
//MM收到CC的删除命令 
00000000  15:01:43   [2044] [CS]:[VSOCK] 收到上级命令 Tag=134217793 Src=33554432 CptID=268435522 Cmd=CMD_DEL   
 
//MM向下转发该命令,命令进入MM的VSOCK发送命令缓冲区 
00000001  15:01:43   [2044] [CS]:[VSOCK] 发送下级命令 Tag=134217793 Src=33554432 CptID=268435522 Cmd=CMD_DEL   
 
//MM收到CC的又一条删除命令 
00000002  15:01:43   [2044] [CS]:[VSOCK] 收到上级命令 Tag=67108928 Src=33554432 CptID=134217793 Cmd=CMD_DEL   
 
//MM向下转发该命令,命令进入MM的VSOCK发送命令缓冲区 
00000003  15:01:43   [2044] [CS]:[VSOCK] 发送下级命令 Tag=67108928 Src=33554432 CptID=134217793 Cmd=CMD_DEL   
 
//MM收到CC的删除EE命令 
00000004  15:01:43   [2044] [CS]:[VSOCK] 收到上级命令 Tag=16777269 Src=33554432 CptID=67108928 Cmd=CMD_DEL   
 
//由于EE是MM的下级,所以MM要和EE断开连接,而此时缓冲中的命令尚未发出,MM回复给CC说断开成功(实际此时EE并未收到任何命令,所以EE和UU并未断开) 
00000005  15:01:43   [2044] [CS]:[VSOCK] 返送上级应答 Tag=33554432 Src=16777269 CptID=67108928 Cmd=CMD_DISCONN_SUCCESS   
 
//MM回复给CC说删除成功 
00000006  15:01:43   [2044] [CS]:[VSOCK] 返送上级应答 Tag=33554432 Src=16777269 CptID=67108928 Cmd=CMD_DEL_SUCCESS   
 
//DebugView中无EE相关的信息,说明EE的VSOCK未收到任何命令 
//推论:MM的VSOCK发送命令队列在MM断开和EE的连接之前并未发送给EE,因此导致BUG 
//现象:删除之后再添加UU便无法连接,因其和EE的连接并未断开过 
 
//结论:VSOCK模块命令缓冲问题,断开连接时已经缓冲的命令会无法发出
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}