Short: Crasher on corrupt string.
Date: Sun, 3 Mar 2002 18:37:02 -0600
From: Gnomi <Gnomi@UNItopia.bera.rus.Uni-Stuttgart.DE>
Type: Bug
State: Abandoned.
Driver: 3.2.9-dev.405
Hi,
Wir hatten heute einen Crash:
DEBUG: free_string(): 0x181c63cc '=8C=DE@=0C=FC[=8A=11=01' has 0 refs.
Free string: not found in string table! ("=8C=DE@=0C=FC[=8A=11=01")
2002.03.03 22:43:47 Free string: not found in string table!obj/player#78053=
0 i/player/player.c line 1125
dc764cd: 26 2 local (1: 28) line 1125
dc764cf: 107 simul_efun (2: 29)
secure/simul_efun/simul_efun secure/simul_efun/simul_efun.c (util.inc) line=
80
cf92097: 26 0 local (0: 29) line 80
cf92099: 185 objectp (1: 30)
cf9209a: 35 8 && (1: 30)
cf9209c: 7 49 cstring0 (0: 29)
cf9209e: 7 50 cstring0 (1: 30)
cf920a0: 26 0 local (2: 31)
cf920a2: 127 call_other (3: 32)
secure/master secure/master.c (/secure/master/check_level.inc) line 30
d539cbf: 78 257 clear_locals (0: 33) line 30
d539cc2: 26 0 local (0: 33) line 31
d539cc4: 185 objectp (1: 34)
d539cc5: 84 5633 branch_when_non_zero (1: 34)
d539cc8: 26 0 local (0: 33) line 33
d539cca: 184 object_name (1: 34)
d539ccb: 7 4 cstring0 (1: 34)
d539ccd: 94 1 push_local_variable_lvalue (2: 35)
d539ccf: 25 3 sscanf (3: 36)
d539cd1: 14 const1 (1: 34)
d539cd2: 48 =3D=3D (2: 35)
d539cd3: 36 11 || (1: 34)
d539cd5: 26 0 local (0: 33) line 34
d539cd7: 184 object_name (1: 34)
d539cd8: 7 5 cstring0 (1: 34)
d539cda: 94 1 push_local_variable_lvalue (2: 35)
d539cdc: 25 3 sscanf (3: 36)
d539cde: 14 const1 (1: 34)
d539cdf: 48 =3D=3D (2: 35)
d539ce0: 36 11 || (1: 34)
d539ce2: 26 0 local (0: 33) line 35
d539ce4: 184 object_name (1: 34)
d539ce5: 7 6 cstring0 (1: 34)
d539ce7: 94 1 push_local_variable_lvalue (2: 35)
d539ce9: 25 3 sscanf (3: 36)
d539ceb: 14 const1 (1: 34)
d539cec: 48 =3D=3D (2: 35)
d539ced: 21 return (1: 34)
secure/simul_efun/simul_efun secure/simul_efun/simul_efun.c (util.inc) line=
80
cf920a4: 21 return (1: 30) line 80
obj/player#780530 i/player/player.c line 1125
dc764d1: 83 branch_when_zero (2: 29) line 1125
dc764db: 7 245 cstring0 (1: 28)
dc764dd: 26 2 local (2: 29)
dc764df: 215 sprintf (3: 30)
secure/master secure/master.c (/secure/master/compiler_control.inc) line 173
d53e60f: 78 257 clear_locals (0: 32) line 173
d53e612: 26 0 local (0: 32) line 175
d53e614: 7 19 cstring0 (1: 33)
d53e616: 127 2 call_other (2: 34)
d53e618: 94 1 push_local_variable_lvalue (1: 33)
d53e61a: 38 (void)=3D (2: 34)
d53e61b: 26 1 local (0: 32) line 176
d53e61d: 216 stringp (1: 33)
d53e61e: 35 && (1: 33)
d53e625: 83 352393731 branch_when_zero (1: 33)
d53e62a: 26 0 local (0: 32) line 178
d53e62c: 7 198 cstring0 (1: 33)
d53e62e: 127 call_other (2: 34)
obj/zauberstab#780548 i/item/name.c line 178
a09da1b: 5 3 identifier (0: 34)
a09da1d: 21 return (1: 35)
secure/master secure/master.c (/secure/master/compiler_control.inc) line 178
d53e630: 94 1 push_local_variable_lvalue (1: 33)
d53e632: 38 (void)=3D (2: 34)
d53e633: 26 1 local (0: 32) line 179
d53e635: 216 stringp (1: 33)
d53e636: 35 5 && (1: 33)
d53e638: 26 1 local (0: 32)
d53e63a: 7 110 cstring0 (1: 33)
d53e63c: 49 !=3D (2: 34)
d53e63d: 83 3 branch_when_zero (1: 33)
d53e63f: 26 1 local (0: 32) line 180
d53e641: 21 return (1: 33)
obj/player#780530 i/player/player.c line 1126
dc764e1: 26 3 local (2: 29) line 1126
dc764e3: 87 call_function_by_address (3: 30)
obj/player#780530 i/player/event.c line 1169
c93f5a7: 78 259 clear_locals (0: 31) line 1169
c93f5aa: 26 2 local (0: 31) line 1170
c93f5ac: 217 strlen (1: 32)
c93f5ad: 84 5633 branch_when_non_zero (1: 32)
c93f5b0: 5 9 identifier (0: 31) line 1171
c93f5b2: 26 0 local (1: 32)
c93f5b4: 99 index (2: 33)
c93f5b5: 84 branch_when_non_zero (1: 32)
c93f5c0: 226 this_object (0: 31) line 1173
c93f5c1: 162 interactive (1: 32)
c93f5c2: 84 branch_when_non_zero (1: 32)
c93f60e: 26 0 local (0: 31) line 1191
c93f610: 7 179 cstring0 (1: 32)
c93f612: 48 =3D=3D (2: 33)
c93f613: 83 3 branch_when_zero (1: 32)
c93f615: 233 utime (0: 31)
c93f616: 82 -6911 branch (1: 32)
c93f619: 26 1 local (1: 32)
c93f61b: 26 2 local (2: 33)
c93f61d: 13 const0 (3: 34)
c93f61e: 108 4 aggregate (4: 35)
c93f621: 108 1 aggregate (1: 32)
c93f624: 26 0 local (1: 32)
c93f626: 89 9 push_identifier_lvalue (2: 33)
c93f628: 97 index_lvalue (3: 34)
c93f629: 64 (void)+=3D (2: 33)
c93f62a: 26 0 local (0: 31) line 1193
c93f62c: 7 179 cstring0 (1: 32)
c93f62e: 49 !=3D (2: 33)
c93f62f: 35 && (1: 32)
c93f63f: 83 branch_when_zero (1: 32)
c93f651: 26 0 local (0: 31) line 1195
c93f653: 7 179 cstring0 (1: 32)
c93f655: 48 =3D=3D (2: 33)
c93f656: 35 14 && (1: 32)
c93f658: 5 9 identifier (0: 31)
c93f65a: 26 0 local (1: 32)
c93f65c: 99 index (2: 33)
c93f65d: 213 sizeof (1: 32)
c93f65e: 16 200 clit (1: 32)
c93f660: 40 - (2: 33)
c93f661: 94 3 push_local_variable_lvalue (1: 32)
c93f663: 37 =3D (2: 33)
c93f664: 13 const0 (1: 32)
c93f665: 44 > (2: 33)
c93f666: 83 branch_when_zero (1: 32)
c93f676: 22 return0 (0: 31) line 1197
obj/player#780530 i/player/player.c line 1126
dc764e7: 76 pop_value (1: 28) line 1126
dc764e8: 26 1 local (0: 27) line 1127
dc764ea: 16 22 clit (1: 28)
dc764ec: 48 =3D=3D (2: 29)
dc764ed: 35 && (1: 28)
dc764f8: 83 branch_when_zero (1: 28)
dc76510: 26 1 local (0: 27) line 1130
dc76512: 16 14 clit (1: 28)
dc76514: 48 =3D=3D (2: 29)
dc76515: 83 branch_when_zero (1: 28)
dc7652d: 22 return0 (0: 27) line 1134
secure/simul_efun/simul_efun secure/simul_efun/simul_efun.c (comm.inc) line=
30
cf930d6: 76 pop_value (1: 22) line 30
cf930d7: 22 return0 (0: 21) line 31
obj/zauberstab#780548 i/tools/pipe.c line 284
c1f03d1: 76 pop_value (1: 20) line 284
c1f03d2: 23 break (0: 19)
c1f03ef: 7 0 cstring0 (0: 19) line 285
c1f03f1: 89 4 push_identifier_lvalue (1: 20)
c1f03f3: 38 (void)=3D (2: 21)
c1f03f4: 14 const1 (0: 19) line 286
c1f03f5: 21 return (1: 20)
obj/zauberstab#780548 i/zauberstab/zauberstab.c (/i/zauberstab/zmarker.inc)=
line 958
dd42642: 84 5633 branch_when_non_zero (1: 18) line 958
dd42645: 26 15 local (0: 17) line 960
dd42647: 8 233 cstring1 (1: 18)
dd42649: 99 index (2: 19)
dd4264a: 36 5 || (1: 18)
dd4264c: 26 15 local (0: 17)
dd4264e: 10 35 cstring3 (1: 18)
dd42650: 99 index (2: 19)
dd42651: 83 branch_when_zero (1: 18)
dd42663: 14 const1 (0: 17) line 963
dd42664: 21 return (1: 18)
p/Tool/obj/wicht#780544 p/Tool/obj/wicht.c line 791
cbfddcf: 78 512 clear_locals (0: 1) line 791
cbfddd2: 5 46 identifier (0: 1) line 793
cbfddd4: 135 closurep (1: 2)
cbfddd5: 57 ! (1: 2)
cbfddd6: 36 4 || (1: 2)
cbfddd8: 5 46 identifier (0: 1)
cbfddda: 438 182 to_object (1: 2)
cbfdddc: 83 7 branch_when_zero (1: 2)
cbfddde: 5 46 identifier (0: 1) line 794
cbfdde0: 154 funcall (1: 2)
obj/player#780530 i/player/tippse.c line 719
ce73717: 5 14 identifier (0: 11) line 719
ce73719: 217 strlen (1: 12)
ce7371a: 35 7 && (1: 12)
ce7371c: 5 14 identifier (0: 11)
ce7371e: 14 const1 (1: 12)
ce7371f: 100 rindex (2: 13)
ce73720: 16 10 clit (1: 12)
ce73722: 49 !=3D (2: 13)
ce73723: 83 7 branch_when_zero (1: 12)
ce73725: 226 this_object (0: 11) line 720
ce73726: 7 60 cstring0 (1: 12)
ce73728: 14 const1 (2: 13)
ce73729: 127 call_other (3: 14)
obj/player#780530 i/player/player.c line 1107
dc7646b: 26 0 local (0: 14) line 1107
dc7646d: 93 265 push_identifier16_lvalue (1: 15)
dc76470: 38 (void)=3D (2: 16)
dc76471: 22 return0 (0: 14) line 1108
obj/player#780530 i/player/tippse.c line 720
ce7372b: 76 pop_value (1: 12) line 720
ce7372c: 5 14 identifier (0: 11) line 721
ce7372e: 21 return (1: 12)
p/Tool/obj/wicht#780544 p/Tool/obj/wicht.c line 794
cbfdde2: 94 0 push_local_variable_lvalue (1: 2) line 794
cbfdde4: 38 (void)=3D (2: 3)
cbfdde5: 5 41 identifier (0: 1) line 795
cbfdde7: 57 ! (1: 2)
cbfdde8: 36 3 || (1: 2)
cbfddea: 5 40 identifier (0: 1)
cbfddec: 57 ! (1: 2)
cbfdded: 83 branch_when_zero (1: 2)
cbfddf6: 5 44 identifier (0: 1) line 796
cbfddf8: 13 const0 (1: 2)
cbfddf9: 48 =3D=3D (2: 3)
cbfddfa: 83 47 branch_when_zero (1: 2)
cbfddfc: 5 40 identifier (0: 1) line 798
cbfddfe: 7 117 cstring0 (1: 2)
cbfde00: 127 call_other (2: 3)
obj/player#780530 i/item/name.c line 112
b101853: 5 0 identifier (0: 3) line 112
b101855: 21 return (1: 4)
p/Tool/obj/wicht#780544 p/Tool/obj/wicht.c line 798
cbfde02: 94 1 push_local_variable_lvalue (1: 2) line 798
cbfde04: 37 =3D (2: 3)
cbfde05: 83 branch_when_zero (1: 2)
cbfde26: 7 134 cstring0 (0: 1) line 803
cbfde28: 21 return (1: 2)
cf92f11: 94 2 38 26 3 211 26 2
No program to trace.
2002.03.03 22:43:47 LDMud aborting on fatal error.
[xerq] read: Connection refused
2002.03.03 22:44:19 [xerq] Demon exiting.
#0 0x80e983e in fatal (
fmt=3D0x811ba40 "Free string: not found in string table!")
at simulate.c:622
622 *((char*)0) =3D 0/a;
(gdb) bt
#0 0x80e983e in fatal (
fmt=3D0x811ba40 "Free string: not found in string table!")
at simulate.c:622
#1 0x80f234f in checked (
s=3D0x811ba40 "Free string: not found in string table!",=20
str=3D0x181c63cc "\214=DE@\f=FC[\212\021\001") at stralloc.c:395
#2 0x80f25b1 in free_string (str=3D0x181c63cc "\214=DE@\f=FC[\212\021\001")
at stralloc.c:738
#3 0x80c44a6 in do_free_sub_strings (num_strings=3D17, strings=3D0xd626744=
,=20
num_variables=3D67, variable_names=3D0xd626788) at object.c:440
#4 0x80c46a8 in free_prog (progp=3D0xd626044, free_all=3D1) at object.c:534
#5 0x80c46e1 in free_prog (progp=3D0x988478c, free_all=3D1) at object.c:540
#6 0x80c41ed in _free_object (ob=3D0x182ce918) at object.c:257
#7 0x80ec241 in remove_destructed_objects () at simulate.c:2502
#8 0x805517c in cleanup_stuff () at backend.c:343
#9 0x8052da0 in backend () at backend.c:412
#10 0x80ba158 in main (argc=3D56, argv=3D0xbffffab4) at main.c:428
Dieses zerstoerte Programm (/w/rezinclov/tauchen/i/unter_dem_meer.c)
hatte (u.a.) folgenden Code:
void init(){
::init();
add_action("_tauche","hoch");
add_action("_tauche","schwimme");
add_action("_tauche","schwimmen");
}
Die Strings (progp->strings) sind aber:
0x1154be38 "_tauche"
0x1040a718 "hoch",=20
0x181c63cc "\214=DE@\f=FC[\212\021\001"
0x1085c7b0 "schwimmen",=20
0x108c5260 "delete_v_item"
Beim 3. String gab es den Fehler und man sollte annehmen, dass dieser
String eigentlich "schwimme" heissen sollte.
Ein Blick in die String-Tabelle zeigt:
(gdb) print base_table[34574]
$11 =3D 0x162c0800 "schwimme"
(gdb) print *((int*)(base_table[34574]-4))
$12 =3D 2
Dieser String existiert also noch mit 2 Referenzen.
Das heisst wohl, dieser Eintrag in die String-Liste des Programmes wurde
ueberschrieben, und damit ist das wohl nicht der im beim dev407 gefixte
Bug bei add_actions.
Gruss
Gnomi