Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » CMUD Beta Forum
Vijilante
SubAdmin


Joined: 18 Nov 2001
Posts: 5187

PostPosted: Mon Jul 20, 2009 11:37 pm   

[3.09] Closing packge with Map setting leaves window
 
Even though it mostly works right, tt should be disallowed to close the package containg an active Map setting. There is a crash hiding just a little ways down.
Code:
date/time         : 2009-07-20, 19:27:14, 189ms
operating system  : Windows XP Service Pack 2 build 2600
system language   : English
system up time    : 23 days 22 hours
program up time   : 1 minute 13 seconds
processor         : AMD Athlon(tm) Processor
physical memory   : 112/383 MB (free/total)
free disk space   : (C:) 5.60 GB
display mode      : 1024x768, 32 bit
process id        : $2670
allocated memory  : 34.30 MB
executable        : cMUD.exe
exec. date/time   : 2009-07-17 17:30
version           : 3.9.0.0
compiled with     : BCB 2006/07
madExcept version : 3.0h
callstack crc     : $d10b349d, $c90dcac1, $c90dcac1
count             : 2
exception number  : 1
exception class   : EAccessViolation
exception message : Access violation at address 007272F0 in module 'cMUD.exe'. Read of address 00000010.

Main ($26d8):
007272f0 +000 cMUD.exe   Lister        526   +0 pList.Count
00db456a +006 cMUD.exe   PkgDM        7999   +0 TPkg.GetPkgCount
00d6c923 +027 cMUD.exe   PrefDat     11594   +2 ModuleRec.LoadPkgState
00db44d9 +041 cMUD.exe   PkgDM        7959   +5 PackageRec.LoadPkgState
00db5596 +072 cMUD.exe   PkgDM        8397   +7 TPkg.LoadPkgState
00c5e35f +603 cMUD.exe   PARENT       2804 +335 TParentForm.NewWindow
00ddca44 +07c cMUD.exe   WindowFrame   351   +6 TWindowF.wmUpdateVisible
004bb023 +2bb cMUD.exe   Controls               TControl.WndProc
004bf027 +4fb cMUD.exe   Controls               TWinControl.WndProc
004be750 +02c cMUD.exe   Controls               TWinControl.MainWndProc
0047c400 +014 cMUD.exe   Classes                StdWndProc
77d4bcc7 +00a USER32.dll                        DispatchMessageA
004a96fc +0fc cMUD.exe   Forms                  TApplication.ProcessMessage
004a9736 +00a cMUD.exe   Forms                  TApplication.HandleMessage
004a9a2b +0b3 cMUD.exe   Forms                  TApplication.Run
00e00170 +088 cMUD.exe   CMUD          352  +20 initialization
7c91312f +069 ntdll.dll                         RtlUnicodeStringToAnsiString


Procedure
1. Launch CMud
2. Close Sessions Window (ESC)
3. Open Mapper (Ctrl-M)
4. Open Package Editor (CTRL-G)
5. Select File|New Package from the PE menu, name the new package "t1"
6. Drag Map setting from untitle package to t1 tab
7. Right-click t1 tab, select Delete Tab from context menu, and confirm
8. Select File|Open from PE menu, open t1
9. Click t1 module in tree view
10. Click Convert to Window
11. Click Window is visible
12. Click Save

The stack in the crash dump seems to have absolutely nothing to do with the mapper. Skipping those mapper steps and a few different orderings of the mapper interaction do not cause crashes.



I was aiming at just testing the concept regarding losing the Map setting. I was playing around with some more complex things and got this crash.
Code:
date/time         : 2009-07-20, 19:21:49, 502ms
operating system  : Windows XP Service Pack 2 build 2600
system language   : English
system up time    : 23 days 22 hours
program up time   : 18 minutes 35 seconds
processor         : AMD Athlon(tm) Processor
physical memory   : 115/383 MB (free/total)
free disk space   : (C:) 5.60 GB
display mode      : 1024x768, 32 bit
process id        : $2288
allocated memory  : 35.21 MB
executable        : cMUD.exe
exec. date/time   : 2009-07-17 17:30
version           : 3.9.0.0
compiled with     : BCB 2006/07
madExcept version : 3.0h
callstack crc     : $df54df0e, $8aed9edb, $8aed9edb
exception number  : 1
exception class   : EAccessViolation
exception message : Access violation at address 00DB2F29 in module 'cMUD.exe'. Read of address 0000005C.

Main ($16f0):
00db2f29 +04d cMUD.exe  PkgDM     7392  +3 TPkg.GetDBStr
00d6bad2 +016 cMUD.exe  PrefDat  11410  +1 ModuleRec.GetUniqueID
00d7383a +036 cMUD.exe  PrefDat  13292  +5 LocationRec.SetMapDB
00d304c5 +095 cMUD.exe  MapLoc3    653 +13 TMapLoc.SetMapDB
00d2fc18 +240 cMUD.exe  MapLoc3    332 +67 TMapLoc.Create
00ce9d91 +235 cMUD.exe  MAIN     23384 +25 TMUDForm.InitMapLoc
00c6df8b +173 cMUD.exe  PARENT    9701 +24 TParentForm.InitMapPanel
00c6e146 +12a cMUD.exe  PARENT    9740 +20 TParentForm.ShowMap
00c7236f +013 cMUD.exe  PARENT   11352  +1 TParentForm.SetMapOn
00c6b2cb +037 cMUD.exe  PARENT    8544  +6 TParentForm.AutoMapper1Click
0047b73f +00f cMUD.exe  Classes            TBasicAction.Execute
004cbcb5 +031 cMUD.exe  ActnList           TContainedAction.Execute
004cc97c +050 cMUD.exe  ActnList           TCustomAction.Execute
0047b60b +013 cMUD.exe  Classes            TBasicActionLink.Execute
006ae52e +052 cMUD.exe  dxBar    37239  +5 TdxBarItem.DoClick
006ae4ab +03b cMUD.exe  dxBar    37227  +4 TdxBarItem.DirectClick
006ae468 +018 cMUD.exe  dxBar    37219  +1 TdxBarItem.Click
006af19e +02a cMUD.exe  dxBar    37676  +3 TdxBarButton.Click
006adc32 +036 cMUD.exe  dxBar    36901  +7 TdxBarItem.IsShortCut
006938c0 +040 cMUD.exe  dxBar    22672  +6 TdxBarItemLinks.IsShortCut
006adc53 +057 cMUD.exe  dxBar    36904 +10 TdxBarItem.IsShortCut
006938c0 +040 cMUD.exe  dxBar    22672  +6 TdxBarItemLinks.IsShortCut
0068f9d6 +006 cMUD.exe  dxBar    20516  +0 TdxBar.IsShortCut
00688949 +025 cMUD.exe  dxBar    16933  +1 IsBarManagerShortCut
00688a86 +062 cMUD.exe  dxBar    16967  +9 TdxBarManager.HandleShortCut
00681760 +020 cMUD.exe  dxBar    12829  +1 HandleKey
00681c22 +182 cMUD.exe  dxBar    12967 +34 MenuActivateIfNeeded
00681f53 +083 cMUD.exe  dxBar    13076 +16 dxBarKeyboardHook
7c90eae0 +010 ntdll.dll                    KiUserCallbackDispatcher
7c91312f +069 ntdll.dll                    RtlUnicodeStringToAnsiString
It would take me a few hours to figure out how to replicate the second crash. I had set up the second package with a window and had the map tracking the default location of that window.

I was about to post that it is just a bad idea to let the map hang around, then I got the second of those crash dumps. Trying to find how to do it got the first one. It will probably be easier to put in a 'You may not do that.' popup then it will be to track down and fix all the points that could crash from this.
_________________
The only good questions are the ones we have never answered before.
Search the Forums
Reply with quote
Zugg
MASTER


Joined: 25 Sep 2000
Posts: 23379
Location: Colorado, USA

PostPosted: Tue Jul 21, 2009 4:42 pm   
 
Actually, I think if you close the package that contains the Map Object of a visible map window, then CMUD should probably also close the associated map window (and room properties window too if needed). That would be the same as closing a "Tells" window when you remove the package that contains the window object.

But thanks for the procedure. I'll play with it and try to track down the bug. But I think it's just leaving a pointer to a non-existent map object that is then causing lots of crashes from that point on.
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » CMUD Beta Forum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net