文字MUD游戏论坛-天下泥潭群英会-水泊梁山

文字MUD游戏论坛-天下泥潭群英会-水泊梁山 (http://www.aolai.org/forums/)
-   『 巫师天下 』 (http://www.aolai.org/forums/f21/)
-   -   destruct带来的BUG (http://www.aolai.org/forums/t16106/)

Odysseus 2011-12-03 23:14

destruct带来的BUG
 
发信人: puss (幽幽一猫无心细语), 信区: wiz
标 题: MUD一个普遍存在的BUG(转)
发信站: 西北网络中心兵马俑 BBS 站 (Sun May 30 03:44:12 1999)


MUD一个普遍存在的BUG
作者:文月  

升级MUD OS之后,在老的MUD OS中遇到的CRASH
系统的BUG总算体现出来了。  

  我发现有个BUG大部分的MUD都存在,只是有的MUD没体现出来。BUG出现
在start_
busy上,start_busy的参数中有两个是函数指针,最典

型的就是dazuo & tuna命令了。一般而言,由于start_busy在不停地

调用dazuo/tuna命令中的函数,这样dazuo/tuna并不会被自动destruct,

但是有一种特殊情况就是当player正在打坐的时候而断线,一直到player重新连线进
入的这段时间内,如果没有其他的PLAYER用到这个命令而

导致该命令被自动destruct,这个时候,player重新连入,使用halt

命令会调用到interrupt_me,interrupt_me则会调用已经被destrcu的

命令内的函数在v21里,会导致crash,在v22里则体现为无心跳。此类bug在一些特殊
的skill/skill's perform里也有可能碰到。

  最简单的解决办法就是将这些可能引起bug的程序中的inherit F_CLEAN_UP去掉。


  此外,如果要彻底解决这个问题(例如wizard使用update会导致同样的问题),
最好是在这些使用了用函数指针作为参数调用start_busy

的程序内加上remove函数,例如dazuo,可以在其remove函数里寻找所有的正在打坐

player并调用其interrupt_me函数。


所有时间均为格林尼治时间 +9, 现在的时间是 13:36.

Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号

站长 fengyue


Content Relevant URLs by vBSEO 3.6.1