Jump to content
  • What can cause this error?


    Matenia
    • Product: WRobot General Type: Bug Status: Unconfirmed
    [F] 08:21:05 - Casting Dampen Magic on player with guid 30
    [N] 08:22:39 - [Path-Finding] FindPath from -9525,382 ; -13,91835 ; 55,99067 ; "None" to -9471,67 ; 34,451 ; 63,82216 ; "None" (Azeroth)
    [N] 08:22:39 - [Path-Finding] Path Count: 21 (202,2812y, 130ms)
    [E] 08:22:56 - Error injection: Cannot launch it, skipped.

    What can cause this error?
    I am writing my own project at the moment from scratch. Ever since I started building my own Fight.cs (still using customclass, but slightly differently), this happens once in a while.
    As far as I can tell here, while running (GoToTask) this happened. The game was completely frozen. 

    Calling via devtools:

    wManager.Wow.Memory.WowMemory.UnlockFrame();

    did not help to unfreeze the game. So maybe some deadlock inside the game? I'm not using anything special, just movement and Interact.InteractGameObject.
    I just need to understand what causes this error to better debug this.



    User Feedback

    Recommended Comments

    TheSmokie

    Posted

    Idk if there is a limit but it could be to many injections at a single time. (Idk, just throwing the idea out there.)

    Matenia

    Posted

    Similar issue:
    Wow stays unfrozen, but wRobot (interface too) is frozen.
    When I force-kill wRobot.exe process, WoW throws this error:

    ERROR #132 (0x85100084) Fatal Exception
    Program:	F:\Games\WoW 3.3.5\Wow.exe
    Exception:	0x80000004 (SINGLE_STEP) at 0023:66D54590

    I think it happens when wRobot targets itself (or others) using Interact.InteractGameObject

    Matenia

    Posted

    I think it has do to with me suspending CustomClass.Thread, like this:

    
    private void FightClassWaitForRegen()
    {
      List<Thread> threadsToSleep = new List<Thread>();
      threadsToSleep.Add(CustomClass.CustomClassThread);
    
      var fightClassSleepThread = SleepFightClassThread(threadsToSleep);
      WaitUntilRegenerated(threadsToSleep);
      fightClassSleepThread.Abort();
    }
    
    private Thread SleepFightClassThread(List<Thread> threadsToSleep)
    		{
    			Thread fightClassSleepThread = new Thread(() =>
    			{
    				try
    				{
    					foreach (var thread in threadsToSleep)
    					{
    						thread.Suspend();
    					}
    
    					while (Conditions.InGameAndConnectedAndAliveAndProductStarted && !Common.IsAttackedByNpc)
    					{
    						Thread.Sleep(500);
    					}
    				}
    				finally
    				{
    					foreach (var thread in threadsToSleep)
    					{
    						thread.Resume();
    					}
    				}
    			});
    			fightClassSleepThread.Start();
    			return fightClassSleepThread;
    		}

     

    kecsketragya

    Posted

    I don't really know the code, but FightClassWaitForRegen is run by a wow thread, afaik it is actually run by directx by a hardware break and you sleep this thread -> while (Conditions.InGameAndConnectedAndAliveAndProductStarted && !Common.IsAttackedByNpc), so assuming that the first condition is true, it will sleep the thread updating your code until Common.IsAttackedByNpc becomes true, thisway stopping the originally directx thread from doing it's original job. Guessing from the variable's name it isn't constantly true, rather occasionally. I wouldn't sleep the thread based on that.

    Edit: the single step exception is actually caused by killing wrobot (the handler for the SEH exception from the hardware bp gets lost)
    Edit2: Even if that code is run outside of the client, the cause of the problem might be similar.

    Matenia

    Posted

    Yeah, I figured if I'm suspending the CustomClassThread while it's writing to client memory (not allowing it finish whatever work it was doing) it would either deadlock wRobot or the wow client itself (through directx endscene), while I was testing some things.

    I decided it's time I write my own customclass implementation that allows me to properly pause it from an outside thread and provides more customizability than what wRobot currently offers. 

    Thanks for the insight though, that was very helpful.



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

×
×
  • Create New...