PenUltima Online Forum Index Official Core: 096.7
Official Core: 097 2008-02-26
Donate towards the POL web hosting bill!
 POL Home   FAQ   Search    Memberlist   Usergroups    Register    Profile   Log in to check your private messages   Log in
Shard crash windows (POL096.6-2007-04-15 Vestal Virgin)

 
Post new topic   Reply to topic    PenUltima Online Forum Index -> Bug Reports 096
Display posts from previous:   

Author Message
Repsak



Joined: 05 Feb 2006
Posts: 91
Location: Denmark

PostPosted: Fri Jun 29, 2007 6:02 pm    Post subject: Shard crash windows (POL096.6-2007-04-15 Vestal Virgin) Reply with quote

We just experienced yet another crash, and since my previous attempt to find the cause has failed, I will post here, hoping that someone can decipher the dump and give me some to go on.

During the last 3-4 month, we have had about 5-6 crashes, some of them resulted in exceptions in several apparently random scripts, some simply disallowed player to connect, but the console showing 100+ connection, I though it might had to do with an exception in a logoff script, as I have experience (but fixed) before with POL96.

Not all crashes would create a dump file, but this one did, so here is all the info I can provide regarding the last crash.


Console:
Code:
Event:  { Array[2] }
Event queue for pkg/npcs/hostiles/ai_killpcs_normal_default.ecl is full, discard
ing event.
NPC Serial: 0x104fcd4 (5380 1150 0)
Event:  { Array[2] }
Event queue for pkg/npcs/hostiles/ai_killpcs_normal_healer.ecl is full, discardi
ng event.
NPC Serial: 0x104fcd0 (5376 1146 0)
Event:  { Array[2] }
Event queue for pkg/npcs/hostiles/ai_killpcs_normal_default.ecl is full, discard
ing event.
NPC Serial: 0x104fcc8 (5381 1149 0)
Event:  { Array[2] }
Event queue for pkg/npcs/hostiles/ai_killpcs_normal_healer.ecl is full, discardi
ng event.
NPC Serial: 0x104fcc2 (5379 1150 0)
Event:  { Array[2] }
Event queue for pkg/npcs/hostiles/ai_killpcs_normal_healer.ecl is full, discardi
ng event.
NPC Serial: 0x104fcd0 (5376 1146 0)
Event:  { Array[2] }
Event queue for pkg/npcs/hostiles/ai_killpcs_normal_healer.ecl is full, discardi
ng event.
NPC Serial: 0x104fcc2 (5379 1150 0)
Event:  { Array[2] }
Event queue for pkg/npcs/hostiles/ai_killpcs_normal_default.ecl is full, discard
ing event.
NPC Serial: 0x104fcd4 (5380 1150 0)
Event:  { Array[2] }
Event queue for pkg/npcs/hostiles/ai_killpcs_normal_default.ecl is full, discard
ing event.
NPC Serial: 0x104fcd4 (5380 1150 0)
Event:  { Array[2] }
Client disconnected from 72.26.11.9 (37 connections)
syslog [scripts/misc/logofftest.ecl]: logofftest_start(Zankue Melone)
syslog [scripts/misc/logofftest.ecl]: logoff_finish6(Zankue Melone)
HTTP client connected from 81.169.169.106
sysload=73 (125) cputime=9328125
(1024)  scin: 14865510  scsl: 2698184333  MOB: 14435  TLI: 203861
Client connected from 65.7.188.213 (38 connections)
Client disconnected from 65.7.188.213 (37 connections)
Client connected from 65.7.188.213 (38 connections)
syslog [scripts/misc/logon.ecl]: No ClientInfo 'Vincent Akem' [Vegetasan]
Unhandled Exception! Minidump started...
##########################################################
Unhandled Exception! Writing Minidump file.
This file with explanation and last lines from log files should be given to the
development team.
Saved dump file to 'POL096.6-2007-04-15 Vestal Virgin-20070628164357-0.dmp'
Last Script: pkg/packethooks/statusbarinfo/statusbarinfo.ecl PC: 19
##########################################################

C:\POLSER~1>



Pol.log
Code:
[06/29 21:22:19] sysload=85 (301) cputime=7093750
[06/29 21:22:55] Client#3609 connected from 88.113.12.50 (38 connections) on interface 10.0.0.200
[06/29 21:22:56] Account sasu1991 logged in from 88.113.12.50
[06/29 21:23:00] Client#3609 (88.113.12.50): disconnected (account sasu1991)
[06/29 21:23:01] Client#3610 connected from 88.113.12.50 (38 connections) on interface 10.0.0.200
Account sasu1991 logged in from 88.113.12.50
[06/29 21:23:03] Account sasu1991 selecting character Demian
[scripts/misc/logon.ecl]: No ClientInfo 'Demian' [sasu1991]
[06/29 21:23:13] Client#3611 connected from 81.156.247.91 (39 connections) on interface 10.0.0.200
Incorrect password for account Glenn001 from 81.156.247.91
Client#3611 (81.156.247.91): disconnected (account unknown)
[06/29 21:23:19] sysload=76 (98) cputime=9562500
[06/29 21:23:21] Client#3612 connected from 81.156.247.91 (39 connections) on interface 10.0.0.200
Account Glenn001 logged in from 81.156.247.91
[06/29 21:23:22] Client#3612 (81.156.247.91): disconnected (account Glenn001)
Client#3613 connected from 81.156.247.91 (39 connections) on interface 10.0.0.200
Account Glenn001 logged in from 81.156.247.91
[06/29 21:23:24] Account Glenn001 selecting character Aaron Sirus
[06/29 21:24:19] sysload=61 (75) cputime=9781250
[06/29 21:24:47] Client#3608 (84.49.134.238): disconnected (account Diabetesboy)
[scripts/misc/logofftest.ecl]: logofftest_start(Zepa)
[scripts/misc/logofftest.ecl]: logoff_finish5(Zepa)
[06/29 21:25:05] [scripts/misc/logoff.ecl]: logoff_start(Zepa)
[scripts/misc/logoff.ecl]: logoff_finish(Zepa)
[pkg/npcs/townfolk/merchants/logoff.ecl]: logoff_start(Zepa)
[pkg/npcs/townfolk/merchants/logoff.ecl]: logoff_finish(Zepa)
[pkg/packethooks/partysystem/logoff.ecl]: logoff_start(Zepa)
[pkg/packethooks/partysystem/logoff.ecl]: logoff_finish(Zepa)
[06/29 21:25:13] Client#3525 (72.26.11.9): disconnected (account goblinrider)
[scripts/misc/logofftest.ecl]: logofftest_start(Zankue Melone)
[scripts/misc/logofftest.ecl]: logoff_finish6(Zankue Melone)
[06/29 21:25:19] sysload=73 (125) cputime=9328125
[06/29 21:25:21] Client#3614 connected from 65.7.188.213 (38 connections) on interface 10.0.0.200
[06/29 21:25:22] Account Vegetasan logged in from 65.7.188.213
[06/29 21:25:23] Client#3614 (65.7.188.213): disconnected (account Vegetasan)
Client#3615 connected from 65.7.188.213 (38 connections) on interface 10.0.0.200
Account Vegetasan logged in from 65.7.188.213
[06/29 21:25:25] Account Vegetasan selecting character Vincent Akem
[scripts/misc/logon.ecl]: No ClientInfo 'Vincent Akem' [Vegetasan]
[06/29 21:25:29] Unhandled Exception! Writing Minidump file.
This file with explanation and last lines from log files should be given to the development team.
Saved dump file to 'POL096.6-2007-04-15 Vestal Virgin-20070628164357-0.dmp'
Last Script: pkg/packethooks/statusbarinfo/statusbarinfo.ecl PC: 19




statusbarinfo.lst
Code:
Exported Functions:
   PC  Args  Name
   17     2  HandleStatusBarInfo
c:/polserver/scripts/include/magic.inc, Line 36
var caster_magery;
0: decl global #0
1: #
var caster_evalint;
2: decl global #1
3: #
var spell_circle;
4: decl global #2
5: #
var spells_cfg_file := ReadConfigFile(":spells:spells");
6: decl global #3
7: ":spells:spells"
8: Func(7,0): ReadConfigFile
9: :=
10: #
c:\polserver\pkg\packethooks\statusbarinfo\statusbarinfo.src, Line 11
program StatusBarInfo()
Print("PacketHooks - Status Bar Info" );
11: "PacketHooks - Status Bar Info"
12: Func(1,0): Print
13: #
return 1;
14: 1L
15: progend
16: progend
c:\polserver\pkg\packethooks\statusbarinfo\statusbarinfo.src, Line 15
exported function HandleStatusBarInfo( who, byref packet )
17: makelocal
18: jmp userfunc @20
19: progend
20: pop param byref 'packet'
21: pop param 'who'
who := who;
22: local #1
23: local1 :=
packet.SetInt8(42, 4); // flag (0x00 ? no more data following (end of packet he
24: local #0
25: 42L
26: 4L
27: Call Method id setint8 (#62, 2 params)
28: #
var statcap := GetStatCap(who);
29: decl local #2
30: local #1
31: makelocal
32: jmp userfunc @581
33: :=
34: #
if(!statcap and who.cmdlevel > 2)
35: local #2
36: !
37: local #1
38: get member id 'cmdlevel' (45)
39: 2L
40: >
41: &&
42: if false goto 45
statcap := 999;
43: 999L
44: local2 :=
packet.SetInt16(66, statcap);                // statcap
45: local #0
46: 66L
47: local #2
48: Call Method id setint16 (#63, 2 params)
49: #
packet.SetInt8(68, CountHandledPets(who));   // pets current
50: local #0
51: 68L
52: local #1
53: 30L
54: makelocal
55: jmp userfunc @228
56: Call Method id setint8 (#62, 2 params)
57: #
packet.SetInt8(69, CanHandleMaxPets(who));   // pets max
58: local #0
59: 69L
60: local #1
61: makelocal
62: jmp userfunc @125
63: Call Method id setint8 (#62, 2 params)
64: #
packet.SetInt16(70, GetEquipmentResist(who, DAMAGETYPE_FIRE));       // fireres
65: local #0
66: 70L
67: local #1
68: 901L
69: makelocal
70: jmp userfunc @275
71: Call Method id setint16 (#63, 2 params)
72: #
packet.SetInt16(72, GetEquipmentResist(who, DAMAGETYPE_COLD));       // coldres
73: local #0
74: 72L
75: local #1
76: 902L
77: makelocal
78: jmp userfunc @275
79: Call Method id setint16 (#63, 2 params)
80: #
packet.SetInt16(74, GetEquipmentResist(who, DAMAGETYPE_POISON));     // poisonr
81: local #0
82: 74L
83: local #1
84: 907L
85: makelocal
86: jmp userfunc @275
87: Call Method id setint16 (#63, 2 params)
88: #
packet.SetInt16(76, GetEquipmentResist(who, DAMAGETYPE_ELECTRICAL)); // energyr
89: local #0
90: 76L
91: local #1
92: 903L
93: makelocal
94: jmp userfunc @275
95: Call Method id setint16 (#63, 2 params)
96: #
packet.SetInt16(78, 0);                      // luck
97: local #0
98: 78L
99: 0L
100: Call Method id setint16 (#63, 2 params)
101: #
packet.SetInt16(80, 0);                      // damage minimum
102: local #0
103: 80L
104: 0L
105: Call Method id setint16 (#63, 2 params)
106: #
packet.SetInt16(82, 0);                      // damage maximum
107: local #0
108: 82L
109: 0L
110: Call Method id setint16 (#63, 2 params)
111: #
packet.SetInt32(86, 0);                      // titching points [N/A]
112: local #0
113: 86L
114: 0L
115: Call Method id setint32 (#64, 2 params)
116: #
packet.SetInt16(1, packet.GetSize());
117: local #0
118: 1L
119: local #0
120: Call Method id getsize (#69, 0 params)
121: Call Method id setint16 (#63, 2 params)
122: #
return 0;
123: 0L
124: return
c:/polserver/scripts/include/tamed.inc, Line 1
function CanHandleMaxPets(who)
125: pop param 'who'
var skill := GetEffectiveSkill(who, SKILLID_MEDITATION);
126: decl local #1
127: local #0
128: 46L
129: makelocal
130: jmp userfunc @267
131: :=
132: #
var skill2 := GetEffectiveSkill(who, SKILLID_ANIMALLORE);
133: decl local #2
134: local #0
135: 2L
136: makelocal
137: jmp userfunc @267
138: :=
139: #
if(skill2 > skill)
140: local #2
141: local #1
142: >
143: if false goto 146
skill := skill2;
144: local #2
145: local1 :=
if(skill > 91)       // To insure that tamers are the class who can control mos
146: local #1
147: 91L
148: >
149: if false goto 152
skill := 91;
150: 91L
151: local1 :=
var skill3 := GetEffectiveSkill(who, SKILLID_TAMING);
152: decl local #3
153: local #0
154: 35L
155: makelocal
156: jmp userfunc @267
157: :=
158: #
if(skill3 > skill)
159: local #3
160: local #1
161: >
162: if false goto 165
skill := skill3;
163: local #3
164: local1 :=
var canhandle := 0;
165: decl local #4
166: 0L
167: :=
168: #
if( skill > 95)
169: local #1
170: 95L
171: >
172: if false goto 185
skill := skill - 95;
173: local #1
174: 95L
175: -
176: local1 :=
canhandle := Cint(skill/2) + 17; //2
177: local #1
178: 2L
179: /
180: Func(0,0): CInt
181: 17L
182: +
183: local4 :=
184: goto222
elseif( skill > 85)
185: local #1
186: 85L
187: >
188: if false goto 201
skill := skill - 85;
189: local #1
190: 85L
191: -
192: local1 :=
canhandle := Cint(skill/3) + 12; //3
193: local #1
194: 3L
195: /
196: Func(0,0): CInt
197: 12L
198: +
199: local4 :=
200: goto222
elseif( skill > 50)
201: local #1
202: 50L
203: >
204: if false goto 217
skill := skill - 50;
205: local #1
206: 50L
207: -
208: local1 :=
canhandle := Cint(skill/5) + 5; //5
209: local #1
210: 5L
211: /
212: Func(0,0): CInt
213: 5L
214: +
215: local4 :=
216: goto222
canhandle := Cint(skill/10); //10
217: local #1
218: 10L
219: /
220: Func(0,0): CInt
221: local4 :=
canhandle := canhandle + 2;
222: local #4
223: 2L
224: +
225: local4 :=
return canhandle;
226: local #4
227: return
c:/polserver/scripts/include/tamed.inc, Line 36
function CountHandledPets(who, range := 30)
228: pop param 'range'
229: pop param 'who'
var pets := 0;
230: decl local #2
231: 0L
232: :=
233: #
foreach mob in ListMobilesNearLocation(who.x, who.y, who.z, range, who.realm);
234: local #1
235: get member id 'x' (0)
236: local #1
237: get member id 'y' (1)
238: local #1
239: get member id 'z' (2)
240: local #0
241: local #1
242: get member id 'realm' (112)
243: Func(2,20): ListMobilesNearLocation
244: initforeach @263
if ( (mob.script["tamed"]) && (GetObjProperty(mob, "master") == who.serial) )
245: local #3
246: get member id 'script' (60)
247: "tamed"
248: [] 1
249: local #3
250: "master"
251: Func(2,1): GetObjProperty
252: local #1
253: get member id 'serial' (6)
254: ==
255: &&
256: if false goto 263
pets := pets + GetPetCountOfNPC(mob);
257: local #2
258: local #3
259: makelocal
260: jmp userfunc @359
261: +
262: local2 :=
263: stepforeach @245
264: leave block(3)
return pets;
265: local #2
266: return
c:/polserver/scripts/include/attributes.inc, Line 1024
function GetEffectiveSkill( who, skillid )
267: pop param 'skillid'
268: pop param 'who'
return GetAttribute(who, GetAttributeIdBySkillId(skillid));
269: local #1
270: local #0
271: makelocal
272: jmp userfunc @704
273: Func(2,8): GetAttribute
274: return
c:/polserver/scripts/include/magic.inc, Line 1739
function GetEquipmentResist(defender, damage_type)
275: pop param 'damage_type'
276: pop param 'defender'
case (damage_type)
277: local #0
278: casejmp
   901: @279
   902: @282
   903: @285
   907: @288
   default: @290
damage_type := "fireresist";
279: "fireresist"
280: local0 :=
281: goto290
damage_type := "coldresist";
282: "coldresist"
283: local0 :=
284: goto290
damage_type := "elecresist";
285: "elecresist"
286: local0 :=
287: goto290
damage_type := "poisonresist";
288: "poisonresist"
289: local0 :=
var elemetal := 0;
290: decl local #2
291: 0L
292: :=
293: #
if( (damage_type == "fireresist") or (damage_type == "coldresist") or (damage_t
294: local #0
295: "fireresist"
296: ==
297: local #0
298: "coldresist"
299: ==
300: ||
301: local #0
302: "elecresist"
303: ==
304: ||
305: local #0
306: "poisonresist"
307: ==
308: ||
309: if false goto 312
elemetal := 1;
310: 1L
311: local2 :=
var amount := 0;
312: decl local #3
313: 0L
314: :=
315: #
foreach item in ListEquippedItems(defender)
316: local #1
317: Func(2,19): ListEquippedItems
318: initforeach @348
if( GetObjProperty(item, Cstr(damage_type)) )
319: local #4
320: local #0
321: Func(0,4): CStr
322: Func(2,1): GetObjProperty
323: if false goto 335
amount := Cint(amount + GetObjProperty(item, Cstr(damage_type)));
324: local #3
325: local #4
326: local #0
327: Func(0,4): CStr
328: Func(2,1): GetObjProperty
329: +
330: Func(0,0): CInt
331: local3 :=
sleepms(1);
332: 1L
333: Func(3,5): Sleepms
334: #
if( elemetal and GetObjProperty(item, "allelement") )
335: local #2
336: local #4
337: "allelement"
338: Func(2,1): GetObjProperty
339: &&
340: if false goto 348
amount := Cint(amount + GetObjProperty(item, "allelement"));
341: local #3
342: local #4
343: "allelement"
344: Func(2,1): GetObjProperty
345: +
346: Func(0,0): CInt
347: local3 :=
348: stepforeach @319
349: leave block(3)
if( amount > 50 )
350: local #3
351: 50L
352: >
353: if false goto 356
amount := 50;
354: 50L
355: local3 :=
return Cint(amount);
356: local #3
357: Func(0,0): CInt
358: return
c:/polserver/scripts/include/tamed.inc, Line 54
function GetPetCountOfNPC(mob)
359: pop param 'mob'
var mobelem := GetNpcTemplateElem(mob.npctemplate);
360: decl local #1
361: local #0
362: get member id 'npctemplate' (61)
363: makelocal
364: jmp userfunc @1003
365: :=
366: #
var mobrealstr := GetStrength(mob) - GetStrengthMod(mob);
367: decl local #2
368: local #0
369: makelocal
370: jmp userfunc @691
371: local #0
372: makelocal
373: jmp userfunc @696
374: -
375: :=
376: #
if (GetObjProperty(mob, "summoned"))
377: local #0
378: "summoned"
379: Func(2,1): GetObjProperty
380: if false goto 479
if (mobelem.script ["spell"] || mobelem.script["fire"]
381: local #1
382: get member id 'script' (60)
383: "spell"
384: [] 1
385: local #1
386: get member id 'script' (60)
387: "fire"
388: [] 1
389: ||
390: local #1
391: get member id 'script' (60)
392: "poison"
393: [] 1
394: ||
395: local #1
396: get member id 'script' (60)
397: "vampire"
398: [] 1
399: ||
400: if false goto 439
if (mobrealstr > 650)
401: local #2
402: 650L
403: >
404: if false goto 408
return 7;
405: 7L
406: return
407: goto438
elseif (mobrealstr > 550)
408: local #2
409: 550L
410: >
411: if false goto 415
return 6;
412: 6L
413: return
414: goto438
elseif (mobrealstr > 450)
415: local #2
416: 450L
417: >
418: if false goto 422
return 5;
419: 5L
420: return
421: goto438
elseif (mobrealstr > 350)
422: local #2
423: 350L
424: >
425: if false goto 429
return 4;
426: 4L
427: return
428: goto438
elseif (mobrealstr > 200)
429: local #2
430: 200L
431: >
432: if false goto 436
return 3;
433: 3L
434: return
435: goto438
return 2;
436: 2L
437: return
438: goto476
if (mobrealstr > 700)
439: local #2
440: 700L
441: >
442: if false goto 446
return 7;
443: 7L
444: return
445: goto476
elseif (mobrealstr > 550)
446: local #2
447: 550L
448: >
449: if false goto 453
return 6;
450: 6L
451: return
452: goto476
elseif (mobrealstr > 450)
453: local #2
454: 450L
455: >
456: if false goto 460
return 5;
457: 5L
458: return
459: goto476
elseif (mobrealstr > 350)
460: local #2
461: 350L
462: >
463: if false goto 467
return 4;
464: 4L
465: return
466: goto476
elseif (mobrealstr >= 250)
467: local #2
468: 250L
469: >=
470: if false goto 474
return 3;
471: 3L
472: return
473: goto476
return 1;
474: 1L
475: return
return 1;
476: 1L
477: return
478: goto579
elseif( GetObjProperty(mob, "totem") )
479: local #0
480: "totem"
481: Func(2,1): GetObjProperty
482: if false goto 486
return 1;
483: 1L
484: return
485: goto579
if (mobelem.script ["spell"] || mobelem.script["fire"] || mobelem.script["vampi
486: local #1
487: get member id 'script' (60)
488: "spell"
489: [] 1
490: local #1
491: get member id 'script' (60)
492: "fire"
493: [] 1
494: ||
495: local #1
496: get member id 'script' (60)
497: "vampire"
498: [] 1
499: ||
500: if false goto 532
if (mobrealstr > 1100)
501: local #2
502: 1100L
503: >
504: if false goto 508
return 15;
505: 15L
506: return
507: goto531
elseif (mobrealstr > 900)
508: local #2
509: 900L
510: >
511: if false goto 515
return 12;
512: 12L
513: return
514: goto531
elseif (mobrealstr > 700)
515: local #2
516: 700L
517: >
518: if false goto 522
return 9;
519: 9L
520: return
521: goto531
elseif (mobrealstr > 400)
522: local #2
523: 400L
524: >
525: if false goto 529
return 7;
526: 7L
527: return
528: goto531
return 3;
529: 3L
530: return
531: goto577
elseif ( mobelem.script["poison"])
532: local #1
533: get member id 'script' (60)
534: "poison"
535: [] 1
536: if false goto 561
if (mobrealstr > 700)
537: local #2
538: 700L
539: >
540: if false goto 544
return 6;
541: 6L
542: return
543: goto560
elseif (mobrealstr > 400)
544: local #2
545: 400L
546: >
547: if false goto 551
return 4;
548: 4L
549: return
550: goto560
elseif (mobrealstr > 200)
551: local #2
552: 200L
553: >
554: if false goto 558
return 3;
555: 3L
556: return
557: goto560
return 2;
558: 2L
559: return
560: goto577
if (mobrealstr > 1000)
561: local #2
562: 1000L
563: >
564: if false goto 568
return 5;
565: 5L
566: return
567: goto577
elseif (mobrealstr > 500)
568: local #2
569: 500L
570: >
571: if false goto 575
return 3;
572: 3L
573: return
574: goto577
return 1;
575: 1L
576: return
return 1;
577: 1L
578: return
return 1;
579: 1L
580: return
c:/polserver/pkg/world/classsystem/skilladv.inc, Line 221
function GetStatCap(who)
581: pop param 'who'
var class := GetObjProperty(who,"class");
582: decl local #1
583: local #0
584: "class"
585: Func(2,1): GetObjProperty
586: :=
587: #
if(!class)
588: local #1
589: if true goto 592
return 0;
590: 0L
591: return
var ccfg := ReadConfigFile(":classsystem:classes");
592: decl local #2
593: ":classsystem:classes"
594: Func(7,0): ReadConfigFile
595: :=
596: #
if(!ccfg)
597: local #2
598: if true goto 604
print("cfg file 'classes', not found in skilladv-chekem");
599: "cfg file 'classes', not found in skilladv-chekem"
600: Func(1,0): Print
601: #
return 0;
602: 0L
603: return
var skills := GetObjProperty(who, "HeightenSkills");
604: decl local #3
605: local #0
606: "HeightenSkills"
607: Func(2,1): GetObjProperty
608: :=
609: #
var hclass := GetObjProperty(who, "HeightenClass");
610: decl local #4
611: local #0
612: "HeightenClass"
613: Func(2,1): GetObjProperty
614: :=
615: #
if( skills and hclass )
616: local #3
617: local #4
618: &&
619: if false goto 683
var avg := 0;
620: decl local #0
621: 0L
622: :=
623: #
foreach skill in skills
624: local #3
625: initforeach @639
avg := avg + (50 - (GetMaxSkill(who, skill) - GetAttributeBaseValue(who, skill)
626: local #5
627: 50L
628: local #0
629: local #6
630: makelocal
631: jmp userfunc @866
632: local #0
633: local #6
634: Func(2,2): GetAttributeBaseValue
635: -
636: -
637: +
638: local5 :=
639: stepforeach @626
640: leave block(3)
avg := Cint(avg / len(skills));
641: local #5
642: local #3
643: Func(0,5): Len
644: /
645: Func(0,0): CInt
646: local5 :=
if( avg >= 50 )
647: local #5
648: 50L
649: >=
650: if false goto 660
return Cint(ccfg[class].maxstats) + 10; //Ancient
651: local #2
652: local #1
653: [] 1
654: get member 'maxstats'
655: Func(0,0): CInt
656: 10L
657: +
658: return
659: goto681
elseif( avg >= 30 )
660: local #5
661: 30L
662: >=
663: if false goto 673
return Cint(ccfg[class].maxstats) + 5; //Legendary
664: local #2
665: local #1
666: [] 1
667: get member 'maxstats'
668: Func(0,0): CInt
669: 5L
670: +
671: return
672: goto681
return Cint(ccfg[class].maxstats) + 2; //Heighen class
673: local #2
674: local #1
675: [] 1
676: get member 'maxstats'
677: Func(0,0): CInt
678: 2L
679: +
680: return
681: leave block(1)
682: goto689
return Cint(ccfg[class].maxstats);
683: local #2
684: local #1
685: [] 1
686: get member 'maxstats'
687: Func(0,0): CInt
688: return
689: 0L
690: return
c:/polserver/scripts/include/attributes.inc, Line 1677
function GetStrength( who )
691: pop param 'who'
return GetAttribute(who, ATTRIBUTEID_STRENGTH);
692: local #0
693: "strength"
694: Func(2,8): GetAttribute
695: return
c:/polserver/scripts/include/attributes.inc, Line 1699
function GetStrengthMod( who )
696: pop param 'who'
return Cint(GetAttributeTemporaryMod(who, ATTRIBUTEID_STRENGTH) / 10);
697: local #0
698: "strength"
699: Func(2,9): GetAttributeTemporaryMod
700: 10L
701: /
702: Func(0,0): CInt
703: return
c:/polserver/scripts/include/attributes.inc, Line 695
function GetAttributeIdBySkillId( skillid )
704: pop param 'skillid'
case( skillid )
705: local #0
706: casejmp
   0: @707
   1: @710
   2: @713
   3: @716
   4: @719
   5: @722
   6: @725
   7: @728
   8: @731
   9: @734
   10: @737
   11: @740
   12: @743
   13: @746
   14: @749
   15: @752
   16: @755
   17: @758
   18: @761
   19: @764
   20: @767
   21: @770
   22: @773
   23: @776
   24: @779
   25: @782
   26: @785
   27: @788
   28: @791
   29: @794
   30: @797
   31: @800
   32: @803
   33: @806
   34: @809
   35: @812
   36: @815
   37: @818
   38: @821
   39: @824
   40: @827
   41: @830
   42: @833
   43: @836
   44: @839
   45: @842
   46: @845
   47: @848
   48: @851
   default: @853
return ATTRIBUTEID_ALCHEMY;
707: "alchemy"
708: return
709: goto853
return ATTRIBUTEID_ANATOMY;
710: "anatomy"
711: return
712: goto853
return ATTRIBUTEID_ANIMALLORE;
713: "animallore"
714: return
715: goto853
return ATTRIBUTEID_ITEMID;
716: "itemid"
717: return
718: goto853
return ATTRIBUTEID_ARMSLORE;
719: "armslore"
720: return
721: goto853
return ATTRIBUTEID_PARRY;
722: "parry"
723: return
724: goto853
return ATTRIBUTEID_BEGGING;
725: "begging"
726: return
727: goto853
return ATTRIBUTEID_BLACKSMITHY;
728: "blacksmithy"
729: return
730: goto853
return ATTRIBUTEID_BOWCRAFT;
731: "bowcraft"
732: return
733: goto853
return ATTRIBUTEID_PEACEMAKING;
734: "peacemaking"
735: return
736: goto853
return ATTRIBUTEID_CAMPING;
737: "camping"
738: return
739: goto853
return ATTRIBUTEID_CARPENTRY;
740: "carpentry"
741: return
742: goto853
return ATTRIBUTEID_CARTOGRAPHY;
743: "cartography"
744: return
745: goto853
return ATTRIBUTEID_COOKING;
746: "cooking"
747: return
748: goto853
return ATTRIBUTEID_DETECTINGHIDDEN;
749: "detectinghidden"
750: return
751: goto853
return ATTRIBUTEID_ENTICEMENT;
752: "enticement"
753: return
754: goto853
return ATTRIBUTEID_EVALINT;
755: "evaluatingintelligence"
756: return
757: goto853
return ATTRIBUTEID_HEALING;
758: "healing"
759: return
760: goto853
return ATTRIBUTEID_FISHING;
761: "fishing"
762: return
763: goto853
return ATTRIBUTEID_FORENSICS;
764: "forensicevaluation"
765: return
766: goto853
return ATTRIBUTEID_HERDING;
767: "herding"
768: return
769: goto853
return ATTRIBUTEID_HIDING;
770: "hiding"
771: return
772: goto853
return ATTRIBUTEID_PROVOCATION;
773: "provocation"
774: return
775: goto853
return ATTRIBUTEID_INSCRIPTION;
776: "inscription"
777: return
778: goto853
return ATTRIBUTEID_LOCKPICKING;
779: "lockpicking"
780: return
781: goto853
return ATTRIBUTEID_MAGERY;
782: "magery"
783: return
784: goto853
return ATTRIBUTEID_MAGICRESISTANCE;
785: "magicresistance"
786: return
787: goto853
return ATTRIBUTEID_TACTICS;
788: "tactics"
789: return
790: goto853
return ATTRIBUTEID_SNOOPING;
791: "snooping"
792: return
793: goto853
return ATTRIBUTEID_MUSICIANSHIP;
794: "musicianship"
795: return
796: goto853
return ATTRIBUTEID_POISONING;
797: "poisoning"
798: return
799: goto853
return ATTRIBUTEID_ARCHERY;
800: "archery"
801: return
802: goto853
return ATTRIBUTEID_SPIRITSPEAK;
803: "spiritspeak"
804: return
805: goto853
return ATTRIBUTEID_STEALING;
806: "stealing"
807: return
808: goto853
return ATTRIBUTEID_TAILORING;
809: "tailoring"
810: return
811: goto853
return ATTRIBUTEID_TAMING;
812: "animaltaming"
813: return
814: goto853
return ATTRIBUTEID_TASTEID;
815: "tasteidentification"
816: return
817: goto853
return ATTRIBUTEID_TINKERING;
818: "tinkering"
819: return
820: goto853
return ATTRIBUTEID_TRACKING;
821: "tracking"
822: return
823: goto853
return ATTRIBUTEID_VETERINARY;
824: "veterinary"
825: return
826: goto853
return ATTRIBUTEID_SWORDSMANSHIP;
827: "swordsmanship"
828: return
829: goto853
return ATTRIBUTEID_MACEFIGHTING;
830: "macefighting"
831: return
832: goto853
return ATTRIBUTEID_FENCING;
833: "fencing"
834: return
835: goto853
return ATTRIBUTEID_WRESTLING;
836: "wrestling"
837: return
838: goto853
return ATTRIBUTEID_LUMBERJACKING;
839: "lumberjacking"
840: return
841: goto853
return ATTRIBUTEID_MINING;
842: "mining"
843: return
844: goto853
return ATTRIBUTEID_MEDITATION;
845: "meditation"
846: return
847: goto853
return ATTRIBUTEID_STEALTH;
848: "stealth"
849: return
850: goto853
return ATTRIBUTEID_REMOVETRAP;
851: "removetrap"
852: return
var ret        := error;
853: decl local #1
854: error
855: :=
856: #
ret.+errortext := "No equivalent attributeid found for skillid " + skillid;
857: local #1
858: "errortext"
859: .+
860: "No equivalent attributeid found for skillid "
861: local #0
862: +
863: := #
return ret;
864: local #1
865: return
c:/polserver/scripts/include/class.inc, Line 198
function GetMaxSkill( who, attributeid )
866: pop param 'attributeid'
867: pop param 'who'
var class := GetObjProperty(who, "class");
868: decl local #2
869: local #1
870: "class"
871: Func(2,1): GetObjProperty
872: :=
873: #
if (!class)
874: local #2
875: if true goto 878
return 0;
876: 0L
877: return
var cfg := ReadConfigFile(":*:classes");
878: decl local #3
879: ":*:classes"
880: Func(7,0): ReadConfigFile
881: :=
882: #
if(!cfg)
883: local #3
884: if true goto 887
return 0;
885: 0L
886: return
var elem := FindConfigElem( cfg, class );
887: decl local #4
888: local #3
889: local #2
890: Func(7,1): FindConfigElem
891: :=
892: #
if(!elem)
893: local #4
894: if true goto 897
return 0;
895: 0L
896: return
var skills := GetObjProperty(who, "HeightenSkills");
897: decl local #5
898: local #1
899: "HeightenSkills"
900: Func(2,1): GetObjProperty
901: :=
902: #
var hclass := GetObjProperty(who, "HeightenClass");
903: decl local #6
904: local #1
905: "HeightenClass"
906: Func(2,1): GetObjProperty
907: :=
908: #
var heighten := 0;
909: decl local #7
910: 0L
911: :=
912: #
if((skills and hclass) and (attributeid in skills) )
913: local #5
914: local #6
915: &&
916: local #0
917: local #5
918: in
919: &&
920: if false goto 923
heighten := 50;
921: 50L
922: local7 :=
var attname;
923: decl local #8
924: #
foreach value in GetConfigStringArray( elem, "primary" )
925: local #4
926: "primary"
927: Func(7,2): GetConfigStringArray
928: initforeach @942
attname := GetAttributeIdBySkillId(Cint(value));
929: local #9
930: Func(0,0): CInt
931: makelocal
932: jmp userfunc @704
933: local8 :=
if( attname == attributeid )
934: local #8
935: local #0
936: ==
937: if false goto 942
return 1000 + heighten;
938: 1000L
939: local #7
940: +
941: return
942: stepforeach @929
943: leave block(3)
foreach value in GetConfigStringArray( elem, "secondary" )
944: local #4
945: "secondary"
946: Func(7,2): GetConfigStringArray
947: initforeach @961
attname := GetAttributeIdBySkillId(Cint(value));
948: local #9
949: Func(0,0): CInt
950: makelocal
951: jmp userfunc @704
952: local8 :=
if( attname == attributeid )
953: local #8
954: local #0
955: ==
956: if false goto 961
return 850 + heighten;
957: 850L
958: local #7
959: +
960: return
961: stepforeach @948
962: leave block(3)
foreach value in GetConfigStringArray( elem, "tertiary" )
963: local #4
964: "tertiary"
965: Func(7,2): GetConfigStringArray
966: initforeach @980
attname := GetAttributeIdBySkillId(Cint(value));
967: local #9
968: Func(0,0): CInt
969: makelocal
970: jmp userfunc @704
971: local8 :=
if( attname == attributeid )
972: local #8
973: local #0
974: ==
975: if false goto 980
return 650 + heighten;
976: 650L
977: local #7
978: +
979: return
980: stepforeach @967
981: leave block(3)
foreach value in GetConfigStringArray( elem, "penalty" )
982: local #4
983: "penalty"
984: Func(7,2): GetConfigStringArray
985: initforeach @999
attname := GetAttributeIdBySkillId(Cint(value));
986: local #9
987: Func(0,0): CInt
988: makelocal
989: jmp userfunc @704
990: local8 :=
if( attname == attributeid )
991: local #8
992: local #0
993: ==
994: if false goto 999
return 400 + heighten;
995: 400L
996: local #7
997: +
998: return
999: stepforeach @986
1000: leave block(3)
1001: 0L
1002: return
c:/polserver/pkg/npcs/npcinfo.inc, Line 195
function GetNpcTemplateElem(npctemplate)
1003: pop param 'npctemplate'
var npcname := TrimTemplate(npctemplate);
1004: decl local #1
1005: local #0
1006: makelocal
1007: jmp userfunc @1034
1008: :=
1009: #
var npcdesc := FindNpcDesc(npctemplate);
1010: decl local #2
1011: local #0
1012: makelocal
1013: jmp userfunc @1056
1014: :=
1015: #
var npccfg := ReadConfigFile(Cstr(npcdesc));
1016: decl local #3
1017: local #2
1018: Func(0,4): CStr
1019: Func(7,0): ReadConfigFile
1020: :=
1021: #
var elem := FindConfigElem(npccfg, npcname);
1022: decl local #4
1023: local #3
1024: local #1
1025: Func(7,1): FindConfigElem
1026: :=
1027: #
if(!elem)
1028: local #4
1029: if true goto 1032
return 0;
1030: 0L
1031: return
return elem;
1032: local #4
1033: return
c:/polserver/pkg/npcs/npcinfo.inc, Line 212
function TrimTemplate(npctemplate)
1034: pop param 'npctemplate'
if ( npctemplate[":"] )
1035: local #0
1036: ":"
1037: [] 1
1038: if false goto 1054
npctemplate[":"] := "";
1039: local #0
1040: ":"
1041: ""
1042: [] := (1) #
npctemplate := npctemplate[(find(npctemplate, ":", 1)+1), len(npctemplate)];
1043: local #0
1044: local #0
1045: ":"
1046: 1L
1047: Func(0,9): Find
1048: 1L
1049: +
1050: local #0
1051: Func(0,5): Len
1052: [,]
1053: local0 :=
return npctemplate;
1054: local #0
1055: return
c:/polserver/pkg/npcs/npcinfo.inc, Line 239
function FindNpcDesc(npctemplate)
1056: pop param 'npctemplate'
if ( npctemplate[":"] )
1057: local #0
1058: ":"
1059: [] 1
1060: if false goto 1076
var npcdesc := FindNPCPackageSimple(npctemplate);
1061: decl local #0
1062: local #0
1063: makelocal
1064: jmp userfunc @1080
1065: :=
1066: #
return Cstr( ":" + npcdesc + ":npcdesc");
1067: ":"
1068: local #1
1069: +
1070: ":npcdesc"
1071: +
1072: Func(0,4): CStr
1073: return
1074: leave block(1)
1075: goto1078
return "::npcdesc";
1076: "::npcdesc"
1077: return
1078: 0L
1079: return
c:/polserver/pkg/npcs/npcinfo.inc, Line 284
function FindNPCPackageSimple(template)
1080: pop param 'template'
var npcname := TrimTemplate(template);
1081: decl local #1
1082: local #0
1083: makelocal
1084: jmp userfunc @1034
1085: :=
1086: #
if ( npcname == template )
1087: local #1
1088: local #0
1089: ==
1090: if false goto 1093
return "";
1091: ""
1092: return
template[":"] := "";
1093: local #0
1094: ":"
1095: ""
1096: [] := (1) #
template[":" + npcname] := "";
1097: local #0
1098: ":"
1099: local #1
1100: +
1101: ""
1102: [] := (1) #
return Cstr(template);
1103: local #0
1104: Func(0,4): CStr
1105: return



This lines in teh pol.log:
[pkg/npcs/townfolk/merchants/logoff.ecl]: logoff_start(Zepa)
[pkg/npcs/townfolk/merchants/logoff.ecl]: logoff_finish(Zepa)
[pkg/packethooks/partysystem/logoff.ecl]: logoff_start(Zepa)
[pkg/packethooks/partysystem/logoff.ecl]: logoff_finish(Zepa)
Is/was my attempt to detect if any of the logoff script failed to run to endprogram, but it does not seem to be the case, at least not this time.

Its might just be me, but im unable to attach a file, so here is a link where the dmp file can be downloaded.
http://www.pangaea-world.dk/images/repsak/dmp.zip

Author Message
runtest



Joined: 05 Aug 2006
Posts: 98

PostPosted: Fri Jun 29, 2007 10:25 pm    Post subject: Reply with quote

I am no expert but it looks like it is having a hard time creating the character. Can it be your prof.txt? Someone please tell me if I am wrong, I am horrible at debuging.

Author Message
Repsak



Joined: 05 Feb 2006
Posts: 91
Location: Denmark

PostPosted: Sat Jun 30, 2007 3:49 am    Post subject: Reply with quote

What makes you say its a problem with creating character?

My prof.txt?
There is no such file in any subfolder of the server, at least not in mine.

Author Message
CWO



Joined: 04 Feb 2006
Posts: 677
Location: Chicago, IL USA

PostPosted: Sat Jun 30, 2007 5:41 am    Post subject: Reply with quote

prof.txt is something from the UO directory that the client reads to display the templates for creating a character. I don't think that would cause a crash though unless theres some type of way to corrupt things. POL checks a lot of these things because its a text file that anyone can modify to say anything and you should NEVER trust it. I do know for a fact though that POL at least totals the skills/stats given to the server to make sure they aren't above the default limits.

Author Message
Repsak



Joined: 05 Feb 2006
Posts: 91
Location: Denmark

PostPosted: Sun Jul 01, 2007 3:17 am    Post subject: Reply with quote

Okay, but what is it that indicates that it seem to be the problem?

Is that a way for a non-poldev (like myself) to open a dmp file and make just a little sence from it?
It might help me solve my problem.

Author Message
Pierce



Joined: 02 Feb 2006
Posts: 247

PostPosted: Sun Jul 01, 2007 7:33 am    Post subject: Reply with quote

The prof.txt isn't your problem. Like CWO said, it is a client side file where the profession are defined. This is only a problem, if a player wants to create a new character on your server and the stat values in this file for the choosen profession are over 65. This is the max. value Pol excepts. In this case the player can't create the char unless he changes the prof.txt or chooses another profession with a for pol correct value.
Your server won't crash, it simply don't accept the char creation packet.

Your problem which seems to cause the crash must be in the
exported function HandleStatusBarInfo( who, byref packet ) as the log and the lst file indicates. Perhaps you need to take a closer look in there or show us this script part if someone here can help.

Author Message
Repsak



Joined: 05 Feb 2006
Posts: 91
Location: Denmark

PostPosted: Sun Jul 01, 2007 11:43 am    Post subject: Reply with quote

Code:
use uo;
use os;
use polsys;

include ":classsystem:skilladv";
include "include/tamed";
include "include/magic";
include ":npcs:npc_util";

program StatusBarInfo()
        Print("PacketHooks - Status Bar Info" );
        return 1;
endprogram

exported function HandleStatusBarInfo( who, byref packet )

        // Done to stop the "unused variable" report in ecompile.
        who := who;
       
        packet.SetInt8(42, 4); // flag (0x00 ? no more data following (end of packet here). 0x01 ? more data after this flag following, 0x03: like 1, extended info, 0x04: even more extended info (client 4.0 and above), 0x05: Unknown, UOML introduced. Maybe to do with introduced at client 5.0?
       
        // (flag == 3 or flag == 4 )
        var statcap := GetStatCap(who);
        if(!statcap and who.cmdlevel > 2)
             statcap := 999;
        endif
        packet.SetInt16(66, statcap);                // statcap
        packet.SetInt8(68, CountHandledPets(who));   // pets current
        packet.SetInt8(69, CanHandleMaxPets(who));   // pets max
       
        // (flag == 4)
        packet.SetInt16(70, GetEquipmentResist(who, DAMAGETYPE_FIRE));       // fireresist
        packet.SetInt16(72, GetEquipmentResist(who, DAMAGETYPE_COLD));       // coldresist
        packet.SetInt16(74, GetEquipmentResist(who, DAMAGETYPE_POISON));     // poisonresist
        packet.SetInt16(76, GetEquipmentResist(who, DAMAGETYPE_ELECTRICAL)); // energyresist
        packet.SetInt16(78, 0);                      // luck
        packet.SetInt16(80, 0);                      // damage minimum
        packet.SetInt16(82, 0);                      // damage maximum
        packet.SetInt32(86, 0);                      // titching points [N/A]

        packet.SetInt16(1, packet.GetSize());

        // return 0, tells the core to send the packet, but it will send the altered packet, adding info to the status bar
        return 0;

endfunction

Author Message
Pierce



Joined: 02 Feb 2006
Posts: 247

PostPosted: Mon Jul 02, 2007 6:03 am    Post subject: Reply with quote

First, i'm no expert on packets. So exuse me if i write trash Very Happy

I took a look into your function and realize you always set the flag to 4, which is client 4.x ++. Did your players only use 4.x clients or do some players use e.g. 3.x or 6.x clients? This could perhaps cause at least problems for the clients. But i don't think the server would crash cause it only sends the packet.

Author Message
Repsak



Joined: 05 Feb 2006
Posts: 91
Location: Denmark

PostPosted: Wed Jul 18, 2007 5:01 am    Post subject: Reply with quote

Today we had another crash, this time in a spawnrune script, in a function that has been running since pol92, so I fairly sure there is a general problem and not a problem with a specific code line.

How do I open a dmp file and get something usefull out of it?

Author Message
CWO



Joined: 04 Feb 2006
Posts: 677
Location: Chicago, IL USA

PostPosted: Sat Jul 21, 2007 1:59 am    Post subject: Reply with quote

You cant. You have to post it here on the forums for the devs to open and see.

Author Message
Repsak



Joined: 05 Feb 2006
Posts: 91
Location: Denmark

PostPosted: Thu Aug 02, 2007 3:26 pm    Post subject: Reply with quote

Okay, when can I expect feedback on the crash I already posted?
And should I post the dmp from the crashes since then?

Author Message
Repsak



Joined: 05 Feb 2006
Posts: 91
Location: Denmark

PostPosted: Sun Aug 12, 2007 9:34 am    Post subject: Reply with quote

Could any Dev member please give me a little help, thanks
Smile

Post new topic   Reply to topic    PenUltima Online Forum Index -> Bug Reports 096 All times are GMT - 4 Hours
Page 1 of 1

 




Powered by phpBB © 2001, 2005 phpBB Group :: Theme & Graphics by GHS & Scott E. Royalty