|
jxtor Newbie
Joined: 09 Jul 2008 Posts: 6
|
Posted: Wed Jul 09, 2008 2:58 pm
[2.30] Access Violation when Changing Zones in Automapper Follow Mode |
Wow... first time I've posted on the Zuggsoft Forums in probably 5+ years (used to be known as Craivus but I can' t access that login anymore).
Anyway, I'm trying out both the new version of zMUD (of which I am a licensed user) and cMUD (which I am considering purchasing) but am having a bit of a problem with the automapper. I have been playing Achaea lately and obtained a decent map database for it. However, when I'm in follow mode and the zones change because I went on a part of the map that is linked to another zone, I get an access violation. This happened with 2 different map DBs I tried from different sources.
I got a similar access violation (but with an error about a Jet file rather than within cMUD.exe) using the newest version of zMUD, again with both map DBs exhibiting the same problem. I also tried setting up the mapper config both with and without ACTP, and had the map following properly in each case; still, the violation occurred in both cases. This is occurring even when all of my scripts/triggers are turned off.
The script debugger window didn't seem to produce any information that was particularly useful. The last thing executed by the client around the time when the error occurs is a simple automatic #OK based on Room Name that the mapper seems to initiate (don't see this trigger anywhere else). I don't think it has to do with trigger processing at all, though.
No errors occur when moving between normal rooms, only when I follow a linked exit on the automapper to another zone. When the error does occur, I can click "Continue Application" and no more errors occur (until I change zones again). When this occurs it seems that the text after the room name (room desc, exits, etc) is not displayed until another line is received from the MUD, either automatically or by me issuing a LOOK. Once this occurs, the rest of the text seems to come out of a buffer and is displayed as normal. If I was slowwalking when this occurs, then the walk continues as normal as soon as I get the rest of the text to come through.
Please let me know if any other information would be helpful. Following is my generated bug report:
date/time : 2008-07-09, 10:35:59, 296ms
computer name : PEACE
operating system : Windows XP Service Pack 3 build 2600
system language : English
system up time : 10 minutes 25 seconds
program up time : 31 seconds
processor : AMD Athlon(tm) 64 Processor 3000+
physical memory : 1401/2047 MB (free/total)
free disk space : (C:) 81.35 GB
display mode : 1280x1024, 32 bit
process id : $5d0
allocated memory : 54.67 MB
executable : cMUD.exe
exec. date/time : 2008-07-03 16:38
version : 2.30.0.0
compiled with : BCB 2006/07
madExcept version : 3.0h
callstack crc : $edf00118, $ccf602ce, $ccf602ce
exception number : 1
exception class : EAccessViolation
exception message : Access violation at address 00DBAD2E in module 'cMUD.exe'. Read of address 63415C8C.
Main ($f74):
00dbad2e +00de cMUD.exe PrefDat 11213 +11 TCacheNode.Execute
77f16b20 +0013 GDI32.dll GetTextExtentPointW
00456039 +0031 cMUD.exe SysUtils AppendChars
004560a5 +003d cMUD.exe SysUtils AppendNumber
00456039 +0031 cMUD.exe SysUtils AppendChars
004bb003 +02bb cMUD.exe Controls TControl.WndProc
00483abb +000f cMUD.exe Graphics TGraphicsObject.Changed
00483df5 +0005 cMUD.exe Graphics TFont.Changed
00483f55 +000d cMUD.exe Graphics TFont.SetColor
00483e73 +0067 cMUD.exe Graphics TFont.Assign
0048569c +0008 cMUD.exe Graphics TCanvas.SetFont
00496997 +000f cMUD.exe ExtCtrls TTimer.Timer
0049687b +002b cMUD.exe ExtCtrls TTimer.WndProc
0047c3e0 +0014 cMUD.exe Classes StdWndProc
7c90e465 +0009 ntdll.dll KiUserExceptionDispatcher
00db720e +0022 cMUD.exe PrefDat 9702 +2 PrefRec.Execute
00d13635 +0151 cMUD.exe MAIN 6302 +14 TMUDForm.ExecThread
00d1c6cf +050b cMUD.exe MAIN 9154 +99 TMUDForm.ExecTrig
00d19f1e +128a cMUD.exe MAIN 8335 +333 TMUDForm.HandleTrigger
00d1877f +000f cMUD.exe MAIN 7828 +1 TMUDForm.UserOutNewLine
00a5a715 +0039 cMUD.exe term 9075 +3 TTerm.DoTriggerLine
00a59118 +0218 cMUD.exe term 8645 +34 HandleNewLine
00a5990c +06e4 cMUD.exe term 8769 +104 TTerm.PutText
00a59ecb +0053 cMUD.exe term 8875 +2 TTerm.Add
00d02ff9 +00b1 cMUD.exe MAIN 1611 +8 TMUDForm.OutputStr
00d032ce +00d6 cMUD.exe MAIN 1692 +25 TMUDForm.NextMUDLine
00d03781 +0019 cMUD.exe MAIN 1769 +4 TMUDForm.DoNextLine
004bb003 +02bb cMUD.exe Controls TControl.WndProc
004bf007 +04fb cMUD.exe Controls TWinControl.WndProc
004a1567 +0553 cMUD.exe Forms TCustomForm.WndProc
004be730 +002c cMUD.exe Controls TWinControl.MainWndProc
0047c3e0 +0014 cMUD.exe Classes StdWndProc
7e4196c2 +000a USER32.dll DispatchMessageA
004a96dc +00fc cMUD.exe Forms TApplication.ProcessMessage
004a9716 +000a cMUD.exe Forms TApplication.HandleMessage
004a9a0b +00b3 cMUD.exe Forms TApplication.Run
00e4b7e0 +0088 cMUD.exe CMUD 348 +20 initialization
7c912c01 +0069 ntdll.dll RtlUnicodeStringToAnsiString
7c812c24 +00b6 kernel32.dll GetVersionExA
error details:
Automap switching zones |
|
|
|
ReedN Wizard
Joined: 04 Jan 2006 Posts: 1279 Location: Portland, Oregon
|
Posted: Wed Jul 09, 2008 3:04 pm |
For me, this was due to the mapper configuration. When I set "Map Preferences->Speedwalking->Disable automatic confirmation", that problem went away for me.
You'll then need to execute an #ok when you move rooms since it won't see that you've moved with this disabled. You can use ATCP to help do this. |
|
|
|
jxtor Newbie
Joined: 09 Jul 2008 Posts: 6
|
Posted: Wed Jul 09, 2008 3:09 pm |
That isn't the case for me, unfortunately. I did try changing that setting between each of the available options and with it disabled, just moving manually. The violation still occurred.
|
|
|
|
Fang Xianfu GURU
Joined: 26 Jan 2004 Posts: 5155 Location: United Kingdom
|
Posted: Wed Jul 09, 2008 3:10 pm |
I edited your post to remove some personal information.
If you're getting an error in both zMUD and CMUD, it's possible that your Jet, ADO and MAC components are damaged or out of date. Head to Microsoft and see if you can download the latest versions. |
|
|
|
jxtor Newbie
Joined: 09 Jul 2008 Posts: 6
|
Posted: Thu Jul 10, 2008 5:20 am |
Welp, according to Microsoft's tool my MDAC stuff was all up to date for XP SP2. Just to be sure, I downloaded and installed SP3 (which replaced all of my MDAC files with updated versions) and a hotfix I found with Google that was supposed to fix one more bug. Every single file & registry setting that Microsoft's tool looks at is either at the "correct" setting/version or newer.
Still getting the problem.
That said, I just realized that it is only happening when I move across zone boundaries by typing commands or slow-walking. When I speedwalk through the mapper the bug doesn't occur even though the map is following me across zones. I am going to have to take another look at the Script Debugger to see if I might have missed something with the #OK trigger from the mapper--although I configured with the auto-configure so I'm not sure what the issue could be.
If anyone has any further ideas, please do post! |
|
|
|
Zugg MASTER
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Thu Jul 10, 2008 5:03 pm |
Do you have any scripts that fire on the room text when you move into the room? There have been some problems when triggers fire when moving between rooms and zones in some situations.
Otherwise, this is the kind of thing that I'm working on right now with the mapper rewrite. I'm replacing the Microsoft MDAC/ADO stuff with SQLite because the MDAC stuff is such a mess these days. |
|
|
|
jxtor Newbie
Joined: 09 Jul 2008 Posts: 6
|
Posted: Fri Jul 11, 2008 12:36 am |
Hey Zugg! Still up to some great work I see. Thanks for the response.
I am eagerly looking forward to the SQLite rewrite! I cut my scripting teeth at a much tenderer age with zMUD (I think current version was 4.62 when I registered?), so zScript and the various zMUD legacy bits always have a place in my heart. That said, times have moved on, so I'm excited about all the modernization that you're doing.
That said, I would love to get a resolution to this sooner than the rewrite will be done. I do have a trigger that recognizes my prompt and sets some basic integers off of that and tags the prompt line. No packets are sent nor is any text displayed to the window by this trigger, however. I did try enabling ATCP and disabling my prompt trigger and then auto-configuring the mapper like that, but I found that the map tends to follow me in a better manner with ATCP off and doing things the old-fashioned way. I haven't done any extensive analysis of specific issues, there were a few though while I was playing around.
I noticed last night that the zone change while slow walking will reliably cause the error, but it was happening on other room moves as well. I believe it was happening when the MUD was sending additional information such as: a) if I tapped two directions quickly in succession so that the second direction was sent before the first room description arrived, b) other output (chat channels, people walking by). It does seem like something is getting interrupted--but I am thinking it is the automatic triggering from the mapper rather than my prompt trigger.
The last item in the Script Debugger output in all cases at the time of the violation was the room name followed by the mapper creating/executing a trigger for the room name. At that point nothing would happen until the MUD again sent output for some reason (I issued another command, chat channel, etc) which would come through followed by the room desc & exits.
Please let me know if there's any output that I could send you from the script debugger that might help. I am guessing from your response that the trace didn't help much.
Just to confirm some things: what settings should be in the AutoMapper prompt config if you are tagging your own prompt? Does it matter? More generally, how does TAG work in terms of overriding settings in the AutoMapper configuration?
Also, the automapper does not seem to be creating any settings in the System|Automapper classes. Is this normal behavior? |
|
|
|
jxtor Newbie
Joined: 09 Jul 2008 Posts: 6
|
Posted: Sun Jul 13, 2008 3:48 am |
Well, not sure anyone is interested since I got no further response, but I thought I would provide an update as to status of my problem.
I ended up giving up on the Automapper autoconfig completely and wrote a multistate ATCP+patterns tagging trigger to try to get CMUD to cooperate. I no longer got crashes but I couldn't get it to reliably follow me, even though I confirmed the trigger was firing fine in the script debugger window (??) I also see other posts lately about both problems with tagging and access violations with the automapper.
I got frustrated and decided to go back to zMUD, where I changed it from a multistate trigger that starts with an ATCP message (in CMUD) to a monolithic single-state multi-line ANSI regex (due to lack of ATCP support in zMUD). It is one huge regex and therefore an ugly sonofagun but I am happy to report that it is working great and has completely resolved all of my crashing issues. I guess I'll just wait to give CMUD another go when its a bit more mature and the Automapper rewrite has been completed, because as of now it seems like (surprise) the zMUD automapper works better in zMUD. I am sure CMUD will win hands down once we are using SQL, however!
At this point I am super-thankful that we have such awesome full-fledged PCRE support in zMUD. It is probably worth noting in the help files somewhere that the regexes supported in both of the ZuggSoft clients are, thanks to PCRE, actually far more powerful than just the stuff contained in the help file lets on. PCRE gives you just about everything that Perl 5.8 regexes support. On the other hand, I guess most people that are familiar with the more advanced features of regexes would be able to fill in the blanks. |
|
|
|
Dumas Enchanter
Joined: 11 Feb 2003 Posts: 511 Location: USA
|
Posted: Sun Jul 13, 2008 12:53 pm |
The thing is, the number of automapper issues are very small in comparison to the number of users. This leads us all to believe that there is an issue with the settings of the user and not necessarily a bug with CMUD.
Especially after you changed over to using ATCP which many of us use with no problems. What I found with ATCP is you probably would need to go back and modify your room names as the ATCP info isn't the same as the text on the screen (no periods). The only issue still is in/out exits (and of course special exits) but I believe you can even get in/out to work. |
|
|
|
Fang Xianfu GURU
Joined: 26 Jan 2004 Posts: 5155 Location: United Kingdom
|
Posted: Sun Jul 13, 2008 1:48 pm |
In and out exits can't currently be detected automatically by the mapper, but that's something that'll hopefully be improved in the future.
What you can do is define directions so that in and out commands you send to the mud are automatically detected and followed properly on the mapper. See the #direction command for more stuff on that - it looks like #direction io in other;#direction oi out other. |
|
|
|
|
|