Short: Illegal instruction Date: Mon, 18 Mar 2002 18:16:48 +0100 (CET) From: Unholy Lands Mud <mud@klein.htu.tuwien.ac.at> Type: Abandoned. State: New Oha, ich hab einen netten Crash produziert Getestet mit 3.2.9dev410 und dev419 Muss zugeben, ich werd nicht schlau daraus ... Der Crash ist deterministisch, ich kann ihn aber nicht reproduzieren wenn ich die function do_follow direkt aufrufe .. Der crash passiert immer dann wenn das monster einem Unsichtbaren zu folgen versucht, und dadurch auf continue kommt ... Muss ich dir meine lib zur Verfuegung stellen, oder kannst du mit dem debug trace etwas anfangen ? --- 2002.03.16 21:35:49 Illegal instruction 2002.03.16 21:35:49 Current object was sys/impl#107 sys/impl#107 sys/living.c line 874 843202f: 13 const0 (1: 34) line 874 8432030: 46 < (2: 35) 8432031: 83 branch_when_zero (1: 34) 8432039: 5 8 identifier (0: 33) line 875 843203b: 87 call_function_by_address (1: 34) 8431f6b: 5 52 identifier (0: 34) line 843 8431f6d: 16 2 clit (1: 35) 8431f6f: 87 call_function_by_address (2: 36) 843217f: 5 45 identifier (0: 36) line 930 8432181: 26 0 local (1: 37) 8432183: 99 index (2: 38) 8432184: 83 branch_when_zero (1: 37) 843218e: 22 return0 (0: 36) line 933 8431f73: 39 + (2: 36) line 843 8431f74: 16 50 clit (1: 35) 8431f76: 46 < (2: 36) 8431f77: 83 355602435 branch_when_zero (1: 35) 8431f7c: 5 52 identifier (0: 34) line 844 8431f7e: 16 2 clit (1: 35) 8431f80: 87 call_function_by_address (2: 36) 843217f: 5 45 identifier (0: 36) line 930 8432181: 26 0 local (1: 37) 8432183: 99 index (2: 38) 8432184: 83 branch_when_zero (1: 37) 843218e: 22 return0 (0: 36) line 933 8431f84: 39 + (2: 36) line 844 8431f85: 21 return (1: 35) 843203f: 44 > (2: 35) line 875 8432040: 83 branch_when_zero (1: 34) 8432049: 5 8 identifier (0: 33) line 877 843204b: 21 return (1: 34) sys/impl#107 sys/living.c (/sys/lmods/mov_liv.c) line 286 8430b30: 76 pop_value (1: 33) line 286 8430b31: 26 3 local (0: 32) line 287 8430b33: 26 4 local (1: 33) 8430b35: 87 call_function_by_address (2: 34) sys/impl#107 sys/living.c (/sys/lmods/group.c) line 697 842f79f: 78 514 clear_locals (0: 36) line 697 842f7a2: 13 const0 (0: 36) line 699 842f7a3: 108 1 aggregate (1: 37) 842f7a6: 89 109 push_identifier_lvalue (1: 37) 842f7a8: 66 -= (2: 38) 842f7a9: 76 pop_value (1: 37) 842f7aa: 26 0 local (0: 36) line 700 842f7ac: 84 5633 branch_when_non_zero (1: 37) 842f7af: 5 109 identifier (0: 36) line 701 842f7b1: 213 sizeof (1: 37) 842f7b2: 94 3 push_local_variable_lvalue (1: 37) 842f7b4: 38 (void)= (2: 38) 842f7b5: 13 const0 (0: 36) line 702 842f7b6: 94 2 push_local_variable_lvalue (1: 37) 842f7b8: 38 (void)= (2: 38) 842f7b9: 82 branch (0: 36) 842f898: 26 2 local (0: 36) 842f89a: 26 3 local (1: 37) 842f89c: 46 < (2: 38) 842f89d: 86 bbranch_when_non_zero (1: 37) 842f7bb: 26 1 local (0: 36) line 704 842f7bd: 5 109 identifier (1: 37) 842f7bf: 26 2 local (2: 38) 842f7c1: 99 index (3: 39) 842f7c2: 146 1 environment (2: 38) 842f7c4: 48 == (2: 38) 842f7c5: 83 206 branch_when_zero (1: 37) 842f7c7: 226 this_object (0: 36) line 707 842f7c8: 7 202 cstring0 (1: 37) 842f7ca: 5 109 identifier (2: 38) 842f7cc: 26 2 local (3: 39) 842f7ce: 99 index (4: 40) 842f7cf: 127 call_other (3: 39) sys/impl#107 sys/impl.c line 228 83d5897: 5 225 identifier (0: 40) line 228 83d5899: 188 pointerp (1: 41) 83d589a: 84 branch_when_non_zero (1: 41) 83d58a2: 26 0 local (0: 40) line 229 83d58a4: 57 ! (1: 41) 83d58a5: 36 11 || (1: 41) 83d58a7: 26 0 local (0: 40) 83d58a9: 7 92 cstring0 (1: 41) 83d58ab: 127 call_other (2: 42) domains/villages/zones/test_village/monsters/test_guard#119 sys/living.c line 535 84316cb: 5 2 identifier (0: 42) line 535 84316cd: 21 return (1: 43) sys/impl#107 sys/impl.c line 229 83d58ad: 5 225 identifier (1: 41) line 229 83d58af: 177 member_array (2: 42) 83d58b0: 15 nconst1 (1: 41) 83d58b1: 49 != (2: 42) 83d58b2: 83 5633 branch_when_zero (1: 41) 83d58b5: 7 93 cstring0 (0: 40) line 230 83d58b7: 7 94 cstring0 (1: 41) 83d58b9: 26 0 local (2: 42) 83d58bb: 7 95 cstring0 (3: 43) 83d58bd: 127 2 call_other (4: 44) 83d58bf: 127 3 call_other (3: 43) 83d58c1: 5 225 identifier (1: 41) line 231 83d58c3: 177 member_array (2: 42) 83d58c4: 15 nconst1 (1: 41) 83d58c5: 49 != (2: 42) 83d58c6: 83 5633 branch_when_zero (1: 41) 83d58c9: 26 0 local (0: 40) line 232 83d58cb: 26 1 local (1: 41) 83d58cd: 88 call_explicit_inherited (2: 42) sys/impl#107 sys/living.c line 419 843140f: 78 514 clear_locals (0: 44) line 419 8431412: 26 0 local (0: 44) line 421 8431414: 226 this_object (1: 45) 8431415: 48 == (2: 46) 8431416: 83 5633 branch_when_zero (1: 45) 8431419: 26 0 local (0: 44) line 424 843141b: 57 ! (1: 45) 843141c: 36 8 || (1: 45) 843141e: 26 0 local (0: 44) 8431420: 7 139 cstring0 (1: 45) 8431422: 7 1 cstring0 (2: 46) 8431424: 127 call_other (3: 47) domains/villages/zones/test_village/monsters/test_guard#119 sys/living.c (/sys/lmods/living_props.c) line 140 8427993: 5 60 identifier (0: 47) line 140 8427995: 26 0 local (1: 48) 8427997: 176 member (2: 49) 8427998: 21 return (1: 48) sys/impl#107 sys/living.c line 424 8431426: 83 branch_when_zero (1: 45) line 424 843142a: 26 1 local (0: 44) line 428 843142c: 15 nconst1 (1: 45) 843142d: 44 > (2: 46) 843142e: 35 8 && (1: 45) 8431430: 26 0 local (0: 44) 8431432: 146 1 environment (1: 45) 8431434: 226 this_object (1: 45) 8431435: 146 1 environment (2: 46) 8431437: 48 == (2: 46) 8431438: 35 && (1: 45) 8431440: 83 branch_when_zero (1: 45) 8431444: 7 42 cstring0 (0: 44) line 432 8431446: 87 call_function_by_address (1: 45) sys/impl#107 sys/living.c (/sys/lmods/living_props.c) line 140 8427993: 5 60 identifier (0: 45) line 140 8427995: 26 0 local (1: 46) 8427997: 176 member (2: 47) 8427998: 21 return (1: 46) sys/impl#107 sys/living.c line 432 843144a: 35 && (1: 45) line 432 843148c: 83 branch_when_zero (1: 45) line 434 8431490: 87 call_function_by_address (0: 44) line 438 8431663: 5 26 identifier (0: 44) line 521 8431665: 21 return (1: 45) 8431494: 36 || (1: 45) line 438 843149a: 84 5633 branch_when_non_zero (1: 45) 843149d: 226 this_object (0: 44) line 442 843149e: 7 55 cstring0 (1: 45) 84314a0: 127 call_other (2: 46) sys/impl#107 sys/player.c line 1497 8456e5b: 5 4 identifier (0: 46) line 1497 8456e5d: 16 100 clit (1: 47) 8456e5f: 45 >= (2: 48) 8456e60: 21 return (1: 47) sys/impl#107 sys/living.c line 442 84314a2: 83 33 branch_when_zero (1: 45) line 442 84314a4: 26 0 local (0: 44) line 443 84314a6: 9 59 cstring2 (1: 45) 84314a8: 127 call_other (2: 46) domains/villages/zones/test_village/monsters/test_guard#119 sys/living.c line 696 8431cb7: 5 4 identifier (0: 46) line 696 8431cb9: 21 return (1: 47) sys/impl#107 sys/living.c line 443 84314aa: 94 2 push_local_variable_lvalue (1: 45) line 443 84314ac: 38 (void)= (2: 46) 84314ad: 26 0 local (0: 44) line 444 84314af: 8 215 cstring1 (1: 45) 84314b1: 127 call_other (2: 46) domains/villages/zones/test_village/monsters/test_guard#119 sys/living.c line 1165 84326ef: 5 23 identifier (0: 46) line 1165 84326f1: 21 return (1: 47) sys/impl#107 sys/living.c line 444 84314b3: 83 4 branch_when_zero (1: 45) line 444 84314b5: 14 const1 (0: 44) 84314b6: 94 2 push_local_variable_lvalue (1: 45) 84314b8: 38 (void)= (2: 46) 84314b9: 26 2 local (0: 44) line 445 84314bb: 87 call_function_by_address (1: 45) 8431663: 5 26 identifier (0: 45) line 521 8431665: 21 return (1: 46) 84314bf: 44 > (2: 46) line 445 84314c0: 94 3 push_local_variable_lvalue (1: 45) 84314c2: 38 (void)= (2: 46) 84314c3: 82 branch (0: 44) line 447 8431500: 26 3 local (0: 44) line 460 8431502: 83 branch_when_zero (1: 45) 8431539: 26 3 local (0: 44) line 471 843153b: 57 ! (1: 45) 843153c: 21 return (1: 45) sys/impl#107 sys/impl.c line 232 83d58d3: 21 return (1: 41) line 232 sys/impl#107 sys/living.c (/sys/lmods/group.c) line 707 842f7d1: 35 23 && (1: 37) line 707 842f7d3: 5 109 identifier (0: 36) line 708 842f7d5: 26 2 local (1: 37) 842f7d7: 99 index (2: 38) 842f7d8: 87 call_function_by_address (1: 37) 842f26b: 5 110 identifier (0: 37) line 406 842f26d: 84 1 branch_when_non_zero (1: 38) 842f26f: 22 return0 (0: 37) 842f7dc: 36 11 || (1: 37) line 708 842f7de: 5 109 identifier (0: 36) 842f7e0: 26 2 local (1: 37) 842f7e2: 99 index (2: 38) 842f7e3: 7 139 cstring0 (1: 37) 842f7e5: 7 27 cstring0 (2: 38) 842f7e7: 127 call_other (3: 39) domains/villages/zones/test_village/monsters/test_guard#119 sys/living.c (/sys/lmods/living_props.c) line 140 8427993: 5 60 identifier (0: 39) line 140 8427995: 26 0 local (1: 40) 8427997: 176 member (2: 41) 8427998: 21 return (1: 40) sys/impl#107 sys/living.c (/sys/lmods/group.c) line 708 842f7e9: 57 ! (1: 37) line 708 842f7ea: 83 3 branch_when_zero (1: 37) 842f7ec: 79 lbranch (0: 36) line 709 842f7ee: 0 5 116 35 8 5 109 26 ' move' in ' room/genRoom.c' ('domains/villages/zones/test_village/rooms/1501') line 604 ' move_living' in ' room/blockRoom.c' ('domains/villages/zones/test_village/rooms/1501') line 226 ' move_living' in ' room/genRoom.c' ('domains/villages/zones/test_village/rooms/1501') line 496 ' move_living' in 'sys/living.c (/sys/lmods/mov_liv.c)' (' sys/impl#107') line 287 ' do_follow' in 'sys/living.c (/sys/lmods/group.c)' (' sys/impl#107') line 7092002.03.16 21:35:49 LDMud aborting on fatal error. Speicherzugriffsfehler -- Source : void do_follow(string cmd, object last_env) { int i,cnt; follow_obj -= ({ 0 }); if (!cmd) return; // Maybe a move without a cmd, e.g. rent cnt = sizeof(follow_obj); for(i=0;i<cnt;i++) { if(last_env == environment(follow_obj[i])) { // Follow invis only if groupleader or led !! if ( TO->is_invis_for(follow_obj[i]) && ! (query_grouped(follow_obj[i]) || follow_obj[i]->query_property("mount")) ) continue; !! LINE 709 !! // Get rid if(rid_whom && follow_obj[i] == rid_whom && !rid_whom->is_invis_for(TO)) { TOBJ(TO,"You try to shake off #N.\n", rid_whom); if(random((int)rid_whom->query_level()*2) < random(level)) { TOBJ(rid_whom,"#N managed to escape your pursue.\n",TO); rid_whom->stop_follow(); rid_whom = 0; continue; } else TOBJ(follow_obj[i],"#N tried to shake you off, but you " + "managed to follow "+query_objective(0) + ".\n",TO); } TOBJ( follow_obj[i], "You follow #N.\n", TO ); command(cmd, follow_obj[i]); if(follow_obj[i] && environment(follow_obj[i])==last_env) tell_object(follow_obj[i],"You've lost your leader !\n"); tell_object(follow_obj[i],follow_obj[i]->display_prompt(0)); } } }