CTD With Latest November 02 2003 17:50:50

A forum for the general posts relating to MacroQuest. *DEPRECATED: This forum is no longer in public use, but remains here for your reading pleasure. Enjoy

Moderator: MacroQuest Developers

distler
orc pawn
orc pawn
Posts: 29
Joined: Mon Nov 03, 2003 10:04 am

CTD With Latest November 02 2003 17:50:50

Post by distler » Mon Nov 03, 2003 10:11 am

Hi.

Using IRC-latest.zip was last modified: November 02 2003 17:50:50.
Crash to desktop.

Tried to compile it with both Visual Studio 6.0 and Visual Studio .NET.
Same result, crash to desktop. Though Visual Studio .NET gave me a slightly larger .exe file. :wink:

Crash to desktop occurs after character select if MQ is loaded before startup of EQ.
And also if MQ is loaded after fully logged in and upon zoning.

Anyone else got this or know of a solution?

Falco72
a hill giant
a hill giant
Posts: 215
Joined: Fri Sep 26, 2003 3:24 am

Post by Falco72 » Mon Nov 03, 2003 11:15 am

I have the same problem. Complied with VC6 on WIN2000 using nmake. CTD just after character selection.

Lax
We're not worthy!
We're not worthy!
Posts: 3524
Joined: Thu Oct 17, 2002 1:01 pm
Location: ISBoxer
Contact:

Post by Lax » Mon Nov 03, 2003 11:29 am

Any chance one of you with this problem can turn on debug spew and see if you can figure out what's causing the problem? Helps to place something like this in various places also

Code: Select all

DebugSpewAlways("FunctionName() entry");
DebugSpewAlways("FunctionName() exit");
I'll dirty up cvs with a crash debugging #define and lots of similar lines using the define later today unless a dev reads this and beats me to it
Lax Lacks
Master of MQ2 Disaster
Purveyor of premium, EULA-safe MMORPG Multiboxing Software
* Multiboxing with ISBoxer: Quick Start Video
* EQPlayNice, WinEQ 2.0

DontShoot
a lesser mummy
a lesser mummy
Posts: 58
Joined: Thu Jun 20, 2002 11:20 am

Post by DontShoot » Mon Nov 03, 2003 12:08 pm

where do I plug that code in though? I'll do that if you tell me where to plug it. :)

Lax
We're not worthy!
We're not worthy!
Posts: 3524
Joined: Thu Oct 17, 2002 1:01 pm
Location: ISBoxer
Contact:

Post by Lax » Mon Nov 03, 2003 12:13 pm

Start with going into EQLib_Main.cpp
find
DWORD WINAPI InsertCommands(LPVOID lpParameter)
inside the code block put
DebugSpewAlways("InsertCommands() Entry");

before each return, put
DebugSpewAlways("InsertCommands() Exit");

Do the same in Pulse(). If the return is something like this:

Code: Select all

    if (!EQADDR_CHAR) return;
make it like this:

Code: Select all

    if (!EQADDR_CHAR) [color=red]{
DebugSpewAlways("Pulse() Exit");[/color]
return;
[color=red]}[/color]
The point is to narrow it down to find what function call has Entry and no Exit in the debug spew before crashing. I've CVS'd something similar into the dev cvs to be used but it will be some time before that, so see if you can narrow it down any :)
Lax Lacks
Master of MQ2 Disaster
Purveyor of premium, EULA-safe MMORPG Multiboxing Software
* Multiboxing with ISBoxer: Quick Start Video
* EQPlayNice, WinEQ 2.0

DontShoot
a lesser mummy
a lesser mummy
Posts: 58
Joined: Thu Jun 20, 2002 11:20 am

Post by DontShoot » Mon Nov 03, 2003 12:23 pm

this spews to some sort of file?

Lax
We're not worthy!
We're not worthy!
Posts: 3524
Joined: Thu Oct 17, 2002 1:01 pm
Location: ISBoxer
Contact:

Post by Lax » Mon Nov 03, 2003 1:02 pm

You need to turn on debugspew, then in the Logs directory debugspew.log
Lax Lacks
Master of MQ2 Disaster
Purveyor of premium, EULA-safe MMORPG Multiboxing Software
* Multiboxing with ISBoxer: Quick Start Video
* EQPlayNice, WinEQ 2.0

distler
orc pawn
orc pawn
Posts: 29
Joined: Mon Nov 03, 2003 10:04 am

Post by distler » Mon Nov 03, 2003 3:57 pm

Hi, I did the changes you suggested as follows:

Code: Select all

VOID Pulse(VOID)
{
    if (!EQADDR_CHAR) { 
DebugSpewAlways("Pulse() Exit"); 
return; 
} 

Code: Select all

DWORD WINAPI InsertCommands(LPVOID lpParameter)
{
DebugSpewAlways("InsertCommands() Entry"); 
    PCHAR lpINIPath = (PCHAR)lpParameter;
    strcpy(gszINIPath, lpINIPath);
    CHAR szBuffer[MAX_STRING] = {0};
    if (!ParseINIFile(lpINIPath)) {
        DebugSpewAlways("ParseINIFile returned false - thread aborted.");
        g_Loaded = FALSE;
        free(lpINIPath);
        DebugSpewAlways("InsertCommands() Exit");
		return 1;
    }
    InitializeCriticalSection(&gDoCommand_Lock);
    InitializeCriticalSection(&gTelnet_CS_Recv);
    InitializeCriticalSection(&gTelnet_CS_Send);
    if (gTelnetServer==1) SetupServer();

    if (!TakeControlOfCommandList()) {
        DebugSpewAlways("TakeControlOfCommandList returned false - thread aborted.");
        gbUnload = TRUE;
        if (gTelnetServer==1) CloseServer();
        g_Loaded = FALSE;
        free(lpINIPath);
        DebugSpewAlways("InsertCommands() Exit");
		return 1;
    }

    LoadString(ghInstance,IDS_LOADED,szBuffer,MAX_STRING);
    WriteChatBuffer(szBuffer,USERCOLOR_DEFAULT);
    DebugSpewAlways(szBuffer);

    while (!gbUnload) {
        Sleep(1000);
    }


    // Attempt to fix random crash while unloading
	//eh... commenting this out makes unloading possible again, but I dont know why
	//lets follow up on this, cant just leave it like this. if its not needed lets remove it...
//    while ((gbInDInput) || (gbInChat) || (g_bInDXMouse)) Sleep(5);

    ReleaseCommandList();
    ClearMapAllocs();

    LoadString(ghInstance,IDS_UNLOADED,szBuffer,MAX_STRING);
    WriteChatBuffer(szBuffer,USERCOLOR_DEFAULT);
    DebugSpewAlways(szBuffer);
	FreeChatWindow();

    if (gTelnetServer==1) CloseServer();
    DeleteCriticalSection(&gTelnet_CS_Send);
    DeleteCriticalSection(&gTelnet_CS_Recv);
    DeleteCriticalSection(&gDoCommand_Lock);

    free(lpINIPath);
    g_Loaded = FALSE;
DebugSpewAlways("InsertCommands() Exit");
    return 0;
}
And turned on debugspew = 1 in the mq ini file.

Made a clean rebuild and fired it all up, loged on, CTD as usual :) .
Went to look for a log file but there isnt anything in it. No logfile created, so i went and made a empty textfile with called debugspew.log in the logs catalogue. Still got an empty logfile :?
Oh yea I did a clean CVS update for this test.

So it seems like I missed something since I do not get any debug loging at all. Help please :D

Lax
We're not worthy!
We're not worthy!
Posts: 3524
Joined: Thu Oct 17, 2002 1:01 pm
Location: ISBoxer
Contact:

Post by Lax » Mon Nov 03, 2003 4:11 pm

I think you have to open EQLib_Utilities.cpp and find where it says
//#define DBG_SPEW

and uncomment it.

Also, in the Pulse function you need to show the entry
DebugSpewAlways("Pulse() Entry");

and put the exit spew at all returns, and before the last } for the function
Lax Lacks
Master of MQ2 Disaster
Purveyor of premium, EULA-safe MMORPG Multiboxing Software
* Multiboxing with ISBoxer: Quick Start Video
* EQPlayNice, WinEQ 2.0

distler
orc pawn
orc pawn
Posts: 29
Joined: Mon Nov 03, 2003 10:04 am

Post by distler » Mon Nov 03, 2003 4:36 pm

Thanks for helping Lax :)

Ok now, this time I got some output in the debug file. It doesnt tell me much but perhaps you are more on the ball of what's hapenig.

Code: Select all

HookMemChecker - Patching

HookChat - Patching

CChatHook::Detour(Welcome to EverQuest!)

CChatHook::Detour(If you need help, click on the question mark ("?") on the Window Selector toolbar at the top of your screen.)

CChatHook::Detour(You have entered Shadow Haven.)

CChatHook::Detour(MESSAGE OF THE DAY: Greetings Norrath! In order to assist us with providing you better customer service, please ensure your e-mail address is current. To update your information, please visit www.station.sony.com and sign in by clicking the "My Account" link.)

Mouse and Keyboard have same GetDeviceData

Mouse and Keyboard have same GetDeviceState

Mouse and Keyboard have same Acquire

HookDInput - Patching

HookCommands - Patching

HookMapfile - Patching

HookDisplay - Patching

HookGameEvents - Patching

HookItemDisplay - Patching

TakeControlOfCommandList - Adding our commands
That's all after this I am CTD.

This is done with the Latest-IRC.zop version.

Pheph
a hill giant
a hill giant
Posts: 196
Joined: Thu Oct 09, 2003 8:15 pm

Post by Pheph » Mon Nov 03, 2003 5:06 pm

Exactly the same output as distler.

Code: Select all

HookMemChecker - Patching
HookChat - Patching
CChatHook::Detour(Welcome to EverQuest!)
CChatHook::Detour(If you need help, click on the question mark ("?") on the Window Selector toolbar at the top of your screen.)
CChatHook::Detour(You have entered The Bazaar.)
CChatHook::Detour(MESSAGE OF THE DAY: Greetings Norrath! In order to assist us with providing you better customer service, please ensure your email address is current. To update your information, go to www.station.sony.com and sign in by clicking on the "My Account" link.)
Mouse and Keyboard have same GetDeviceData
Mouse and Keyboard have same GetDeviceState
Mouse and Keyboard have same Acquire
HookDInput - Patching
HookCommands - Patching
HookMapfile - Patching
HookDisplay - Patching
HookGameEvents - Patching
HookItemDisplay - Patching
TakeControlOfCommandList - Adding our commands
Edited out only my autojoins and stuff like that

User avatar
dont_know_at_all
Developer
Developer
Posts: 5450
Joined: Sun Dec 01, 2002 4:15 am
Location: Florida, USA
Contact:

Post by dont_know_at_all » Mon Nov 03, 2003 5:13 pm

You guys don't have an autostart macro configured, do you?

distler
orc pawn
orc pawn
Posts: 29
Joined: Mon Nov 03, 2003 10:04 am

Post by distler » Mon Nov 03, 2003 5:17 pm

If it is to any help I have also tried to create a new character and logon with that so there are no custom ui or such loaded. Result is the same CTD.

macroquest.ini looks like this:

Code: Select all

[MacroQuest]
MacroPath=.\Macros
LogPath=.\Logs
DebugSpewToFile=1
FilterSkills=0
FilterTarget=0
FilterMoney=0
FilterFood=0
FilterMacro=0
FilterEncumber=0
FilterDebug=0
KeepKeys=1

[Telnet Server]
Enabled=0
LocalOnly=0
Port=0
Welcome=MacroQuest telnet server
Password=macroquest

[Aliases]
/exp=/echo $char(exp)% experience...
/bind=/doability "Bind Wound"
/gmlist=/who all gm
/mana=/echo Current Mana: $char(mana,cur) -- Max Mana: $char(mana,max)
/hp=/echo Current Health: $char(hp,cur) -- Max Health: $char(hp,max)
/mousepos=/echo Your mouse is at $mouse(X) , $mouse(Y)
And eqgame.ini

Code: Select all

[MacroQuest]
MacroQuestVersion=MQ-20031102
ClientName=eqgame
ClientVersion=Thu Oct 09 07:43:xx 2003
ClientOverride=1
MacroQuestWinClassName=__MacroQuestTray
MacroQuestWinName=MacroQuest

[Function Locations]
WriteChatColor=004912DD
GetRaceByID=004873A7
GetClassByID=00486D4C
GetDeityByID=00488849
GetBodyTypeByID=0048709F
ScreenItem=0040B03D
ScreenSpawn=0048CD15
NewUIINI=0050DC28
MaxMana=00419B47
Commands=0049B24F
SendMessage=004AC2DD
MemChecker=004B025A
MemChecker2=004B6FB9
MemCheckAddr1=004B7020
MemCheckAddr2=004B704E
MemChecker3=004B52F4
MemSpell=0050AA52
LoadSpells=0050A8EC
StartTrader=004C4219
BuyItem=004FACCE
SellItem=004FAE9F
GetFocusCastingTimeModifier=004242DB
GetAACastingTimeModifier=00424647
SelectItem=004FB3E0
CastSpell=00428253
WriteMapfile=004F642A
RClickTarget=00497555
LClickTarget=0049D1E1
CXStrConstructor=005372F0
CXStrFree=5372F0
CStmlWndAppend=55BEA0
CChatManagerCreateChatWindow=4D2024
CChatManagerGetRGBAFromIndex=4D008A
ProcessGameEvents=0049E247
CleanGameUI=0040EFEC
ItemDisplaySetItem=004EED30 
CXStrAppend=00538380 
CXStrSet=005374B0
ConvertItemTags=00453F20
GetItemLinkHash=0042D79D
GetNumBankSlots=004C0D15

[Class Locations]
SpellBookWnd=005F9394
InventoryWindow=005F9398
CastingWindow=005F938C
LootWnd=005F93A4
ClassMapWnd=005F935C
ClassBazaarWnd=005F93B8
ClassMerchWnd=005F93AC
ClassTextureAnim=0077769C
ClassBazaarSearchWnd=005F93BC
ClassCastSpellWnd=005F9390
ClassHotButtonWnd=005F936C
ClassGiveWnd=005F93C0
ClassContainerMgr=005F9410
ClassNotesWnd=005F93E8
ClassChatManager=00777418
ClassDisplayObject=0070F774
ClassBankWnd=005F939C

[DirectInput8]
Main=0076E9CC
Keyboard=0076E9D0
Mouse=0076E9D4

[Memory Locations]
HWnd=006AC458
SlotList=005F940C
ActiveMerchant=0070F760
ActiveCorpse=0070F768 
HugeWindowList=00782710
SpellFavorites=0070CA28
Clicks=006AC558
Zoning=0075CCC8
Zones=0070F70C
ZoneInfo=006AC6CC
SpawnHeader=0070F710
Items=0070F714
Doors=006AC44C
SpawnFooter=0070F734
Char=0070F748
CharInfo=0070F750
Target=0070F754
LastTell=006AE610
Guilds=00713DA4
gWorld=0070F6E8
Mouse=0076E9D8
Attack=006AD2F0
InChatMode=006AC498
Spells=0076A154
CommandList=005E98A0
DoAbilityList=006E60E4
DoAbilityAvailable=006AD28C
Group=0070DDE0
GroupCount=0070DC98
clsItems=0070F774
clsSpawns=0070F700
clsMainNewUI=0076EB40

EncryptPad=005EF648
EncryptPad3=005EFA58
EncryptPad2=005F04E0

ServerHost=0070D06C
ServerName=006E60A4

loadingpleasewait
a snow griffon
a snow griffon
Posts: 332
Joined: Sat Sep 14, 2002 8:46 am

Post by loadingpleasewait » Mon Nov 03, 2003 5:18 pm

welp, lol.. just like the others, here it is..

I have no macro set to fire off at startup..
HookMemChecker - Patching
HookChat - Patching
CChatHook::Detour(Welcome to EverQuest!)
CChatHook::Detour(If you need help, click on the question mark ("?") on the Window Selector toolbar at the top of your screen.)
CChatHook::Detour(You have entered Greater Faydark.)
CChatHook::Detour(MESSAGE OF THE DAY: Greetings Norrath! In order to assist us with providing you better customer service, please ensure your email address is current. To update your information, go to www.station.sony.com and sign in by clicking on the "My Account" link.)
Mouse and Keyboard have same GetDeviceData
Mouse and Keyboard have same GetDeviceState
Mouse and Keyboard have same Acquire
HookDInput - Patching
HookCommands - Patching
HookMapfile - Patching
HookDisplay - Patching
HookGameEvents - Patching
HookItemDisplay - Patching
TakeControlOfCommandList - Adding our commands
[/code]
LOADING PLEASE WAIT...

distler
orc pawn
orc pawn
Posts: 29
Joined: Mon Nov 03, 2003 10:04 am

Post by distler » Mon Nov 03, 2003 5:19 pm

You guys don't have an autostart macro configured, do you?
Nope, I didnt even know that was possible :oops: