[wizs] debug.log

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間15年前 (2010/07/21 09:56), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串6/17 (看更多)
Heart beat in /std/user#2 turned off. 執行時段錯誤: *Error in loading object '/d/skill/basesk' 程式: adm/daemons/fight_d.c:919 物件: /adm/daemons/fight_d /std/user#3673 "heart_beat" std/user.c:951 /std/user#3673 "continue_attack" std/user.c:412 /adm/daemons/user_d "continue_attack" adm/daemons/user_d.c:1304 /adm/daemons/user_d "execute_attack" adm/daemons/user_d.c:1473 /adm/daemons/user_d "normal_attack" adm/daemons/user_d.c:1750 /adm/daemons/fight_d "defance" adm/daemons/fight_d.c:280 /adm/daemons/fight_d "dodge_defance" adm/daemons/fight_d.c:919 最近的一些無心跳案例應該都是由這個引起,大部份情況 下從 debug.log 都可以看到原因在哪。 919 行附近如下.. if(!mod=tar->query_temp("dodge")) { BASE_DEF->dodge(tar); <= 919 return "ERROR"; } 問題在於 BASE_DEF = /d/skill/basesk.c 無法載入,它 的發生原因對照現況來說的確是可能的。 不過也要請 hlead or quest 回憶一下最近是否有撰寫會 動到玩家or怪物的 temp_data["dodge"] 欄位的東西,或 者是否有更動 /d/skill/basesk.c。 今已將 /d/skill/basesk.c 納入 preload 體系,更動檔 案為 /adm/etc/preload, quest 可參照。原則上被納入 preload 的檔案將由系統本身做 upload 的動作。 執行時段錯誤: *Array index out of bounds. 程式: d/ppl/wide/virtue/event/control.c:62 物件: /d/ppl/wide/virtue/event/control /d/ppl/wide/virtue/event/control "event_1" d/ppl/wide/virtue/event/control.c:62 int event_1(int s) { object rooms; int i; if(s>6) return 1; for(i=0;i<6;i++) { rooms=find_object_or_load(TENGU_PATH+room[s][i]); <=- 第 62 行 room 是一個 4x9 的二維陣列,所以 s 不能大於 3,上面的 if(s>6) 應為誤判,已順手先更正避免 bug 重覆發生。 執行時段錯誤: *Bad argument 1 to userp() Expected: object Got: 1. 程式: cmds/std/_holybell.c:71 物件: /cmds/std/_holybell /std/user#1078 "cmd_hook" std/user.c:295 /cmds/std/_holybell "cmd_holybell" cmds/std/_holybell.c:71 ob->set_temp("holybell_times",t); if(userp(ob)) { if(ob->query_temp("holybell_check")<check) { ob->set_temp("holybell_check",check); if(ob->query_temp("shield2")) tell_object(ob,HIG"你的護盾受到聖潔鈴音的強化, 變得更加堅固了!!\n"NOR); } if(ob->query("block_command")>0) { if(env=ob->query_current_attacker() && !userp(env)) <= 第71行 { ob->delete("block_command"); ob->delete("block_command_msg"); tell_object(ob,HIM"你的定身狀態被聖潔鈴音解除了!!\n"NOR); } } } 這跟上次 justin 遇到的 bug 類似,使用 && 或 || 判定時,理論上若 if(env=ob->query_current_attacker() 先成立 ,則後面的 userp(env) 就不應再判斷到 no env 的情況。 但實際上卻有上述情況發生。 上面已改為兩段式判斷.. if(env=ob->query_current_attacker()) { if(!userp(env)) { ob->delete("block_command"); ob->delete("block_command_msg"); tell_object(ob,HIM"你的定身狀態被聖潔鈴音解除了!!\n"NOR); } } 執行時段錯誤: *Bad argument 1 to call_other() Expected: string or array or object Got: 0. 程式: u/l/laechan/special/mob/fingerwind1.c:108 物件: 0 /std/user#6292 "heart_beat" std/user.c:950 /std/user#6292 "force_me" std/user/body.c:90 /std/user#6292 "cmd_hook" std/user.c:295 /cmds/std/_force "cmd_force" cmds/std/_force.c:226 /d/force/phantom-strike "start_skill" d/force/phantom-strike.c:188 /std/user#6292 "shut" std/user/attack.c:142 /adm/daemons/shut_d "shut_tar" adm/daemons/shut_d.c:295 /adm/obj/simul_efun "show" adm/simul_efun/show.c(adm/obj/simul_efun.c):229 0 "receive_damage" std/mob/attack.c:29 0 "die" u/l/laechan/special/mob/fingerwind1.c:108 這是由 hmml 指稱的 fingerwind 問題。 但問題在於 laechan 已經於先前針對該 bug 做過補正 /std/mob/attack.c if ( data["hp"] < 0 && me) me->die(); 也就是說必須要有 me,它才會做 me->die() 的動作, 但即便如此仍被判斷到 0->die() 的情況。 上面同樣改成兩段式。 不過由於是 fingerwind 的錯誤,或許有其它原因也說 不定。 執行時段錯誤: *Bad argument 1 to call_other() Expected: string or array or object Got: 0. 程式: d/crazy/6/room/015.c:90 物件: /d/crazy/6/room/015 /d/crazy/6/room/015 "relife_over" d/crazy/6/room/015.c:90 corpse->remove(); 我猜是 relife 過程中 corpse 因故消失,已加上判斷 式避免此錯誤。 執行時段錯誤: *Value being indexed is zero. 程式: d/force/deadly-shiv.c:110 物件: /d/force/deadly-shiv /std/user#53760 "cmd_hook" std/user.c:295 /cmds/std/_force "cmd_force" cmds/std/_force.c:226 /d/force/deadly-shiv "start_skill" d/force/deadly-shiv.c:110 我猜該錯誤應該修補了(因為 110 行看到的已非上述錯誤段) ([ /* sizeof() == 7 */ "line" : 49, "object" : 0, "function" : "special_fun", "arguments" : ({ /* sizeof() == 2 */ 0, /std/user#6424 }), "file" : "d/ppl/laechan/聖魔大戰/yaria1.c", "locals" : ({ /* sizeof() == 3 */ 3, 16, ({ /* sizeof() == 16 */ /std/user#6500, /std/user#6424, /std/user#5970, /std/user#5056, /std/user#6061, /d/ppl/laechan/聖魔大戰/soldier1#201011, /d/ppl/laechan/聖魔大戰/soldier1#201010, /d/ppl/laechan/聖魔大戰/soldier1#201009, /d/ppl/laechan/聖魔大戰/soldier1#201008, /d/ppl/laechan/聖魔大戰/mage1#201007, /d/ppl/laechan/聖魔大戰/mage1#201006, /d/ppl/laechan/聖魔大戰/mage1#201004, /d/ppl/laechan/聖魔大戰/priest1#201003, /d/ppl/laechan/聖魔大戰/priest1#201002, 0, /d/ppl/laechan/聖魔大戰/door1#201000 }) }), "program" : "d/ppl/laechan/聖魔大戰/yaria1.c", ]) }), "program" : "d/ppl/laechan/聖魔大戰/yaria1.c", ]),0) obs=all_inventory(environment(frog)); j=sizeof(obs); for(i=0;i<j;i++) { if(!obs[i]) continue; if(!living(obs[i])) continue; if(obs[i]->query("inchora")) continue; frog->shut(HIM"神風"HIM"鳳激斬"NOR,100000+random(100),10000,"dam",obs[i]); } 上面已改成 foreach 寫法,可避免掉一些問題。 物件: /cmds/std/_checking /std/user#49923 "cmd_hook" std/user.c:295 /cmds/std/_checking "cmd_checking" cmds/std/_checking.c:444 if(wizardp(usr[i]) || usr[i]->query("no_checking") || usr[i]->query(kkk)<1) 上面 usr[i]->query(kkk)<1 的部份出問題,原因不明。 if(kkk!="@@count_damage" && kkk!="@@skill_num") { for(i=0;i<j;i++) { if(!usr[i]) continue; if(wizardp(usr[i]) || usr[i]->query("no_checking") || usr[i]->query(kkk)<1) continue; usr2+=({usr[i]}); } } 上面已增加一行判斷.. if(!usr[i]) continue; if(!intp(usr[i]->query(kkk))) continue; if(wizardp(usr[i]) || usr[i]->query("no_checking") || usr[i]->query(kkk)<1) 避免它的下一行的 <1 判斷錯誤。 本來還要加 log 的...因為這 bug 不只出現一次,加 log 就可以知道是誰執行該指令造成錯誤。 執行時段錯誤: *Bad argument 1 to call_other() Expected: string or array or object Got: 0. 程式: adm/daemons/party_d.c:439 物件: /adm/daemons/party_d /std/user#68076 "cmd_hook" std/user.c:295 /cmds/std/_party "cmd_party" cmds/std/_party.c:831 /cmds/std/_party "handle_kill" cmds/std/_party.c:114 /adm/daemons/party_d "party_kill" adm/daemons/party_d.c:439 這是 party kill 時發生的錯誤。 該 bug 已加上補強判斷。 全系統於 2010/07/21 10:00am 早上實施 shutdown,下午 我會再觀察一次 debug.log,將剩餘的 bug 解決。 Belldandy. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.161.22

07/21 10:15, , 1F
順手做了全系統備份. 以後 shutdown 時有想到都會做
07/21 10:15, 1F

07/21 12:06, , 2F
然後nahceal就掉eq了XD
07/21 12:06, 2F

07/21 12:21, , 3F
quest已補 3Q
07/21 12:21, 3F
文章代碼(AID): #1CHbEz-5 (mud_sanc)
討論串 (同標題文章)
完整討論串 (本文為第 6 之 17 篇):
0
1
0
2
1
1
0
4
1
8
5
14
文章代碼(AID): #1CHbEz-5 (mud_sanc)