Hekili Priority Helper

Hekili Priority Helper

44M Downloads

[BUG] Client lockups on login for Night Fae Retribution Paladin

Ketrel opened this issue ยท 34 comments

commented

Before You Begin

  • I confirm that I have downloaded the latest version of the addon.
  • I checked for an existing, open ticket for this issue and was not able to find one.
  • I edited the title of this bug report (above) so that it describes the issue I am reporting.

Describe the Issue

When I login to my Night Fae Retribution Paladin, once the UI loads, the client locks up and goes unresponsive.
(No lua errors are thrown)

It doesn't appear to make a difference if I have Hekili enabled/disabled from within the options, but whether or not I have the addon enabled at all.

How to Reproduce

  1. Login to my ret pally while hekili addon is enabled.

Player Information (Link)

https://pastebin.com/qQwGaamQ

Error Messages (Link)

n/a

Additional Information

Having the addon enabled does not cause the same problem on other toons.

The client does not stay locked but will remain locked up (greyed and Windows claiming not responding) for anywhere from 1-5 minutes when I login)

Contact Information

No response

commented

I just wanted to update. It does not appear to be covenant related. I am temporarily in the Kyrian covenant to get some xmog items, and I thought to enable Hekili to see if it still happens without any Night Fae abilities in play at all. It unfortunately still locks up the same way.

commented

So you're saying that it does ultimately unlock after logging in (it doesn't crash) -- I assume this because you could provide player information.

Can you provide your World of Warcraft/_retail_/WTF/Account/YourAccountName/SavedVariables/Hekili.lua? And your character name + server?

If you exit WoW, then rename Hekili.lua in that folder to Hekili.lua.backup, and restart WoW, do you have the same issue?

(You can exit WoW again and rename Hekili.lua.backup to Hekili.lua to regain your original settings after testing.)

commented

Yes, it locks up (Windows greys it out and says its not responding) for anywhere between 1-5 minutes, but ultimately it does eventually unfreeze and then works as normal. It's only on login (doesn't happen after a /reload), and only this one toon.

A freshly generated config file doesn't make a difference. The lockup still occurs.

The config file itself was too large to put into pastebin, so I trimmed out the other profiles to JUST be the affected toon's profile and config.

https://pastebin.com/axmfqtgQ

commented

A freshly generated config file doesn't make a difference. The lockup still occurs.

Just to confirm, you actually tried it? Is the linked file your original one, or the fresh version?

commented

The one I linked is my original one with the unaffected toons removed so it would be small enough to post.

(The full one locked up my browser every time I tried to paste it into pastebin).

The only thing I did with the fresh version was test. I did not upload that one.

This is what got generated when I logged in to generate a fresh file: https://pastebin.com/uVtcC0as

First one from a half hour ago, is the original one.
Second one (in this post) is the one that was generated fresh

commented

You mentioned it only happens with my addon loaded. If my addon is the only addon loaded, does it happen?

commented

That one I won't be able to check for a while. I'm no longer at the machine. Are you thinking it may be a conflict?

commented

With just this addon disabled it didn't happen.
I then enabled them back in batches, and it still didn't happen even when I got them all back enabled, though there were minor freezes, they were less than a second.
After closing and reopening the wow client later, it's back to happening full on, and is dependent on hekili being enabled or disabled as an addon.

I'm not sure the best way to continue digging on this.

commented

If it only happens on a full client restart, it most likely has to do with item caching since cached item data persists through a reload.

I would try disabling addons that interact significantly with items (auction house stuff, maybe altoholic or similar stuff) and do a full client restart. If it restarts quickly, great. Add back a UI mod and then fully restart WoW again.

I've seen something similar happen before when another addon doesn't gracefully handle situations when the client can't load information about an item (i.e., a bad or invalid item ID).

If you do get the long freeze, you can also try /hekili and see if there are any Warnings (it's a section that only appears when a problem occurs on the left).

commented

I think I found the culprit based on what you said about items.

It appears that having Mogit (One-hand, Two-hand, Plate, and Other) and Hekili both enabled is when it happens.

I can go through the various mogit modules and see which does it or if all of them do it, but I may need to wait until near the end of the week.

commented

Thanks. It probably means I have an invalid item ID associated with some ability, and would've been introduced when I had the addon start to autopopulate those. I can do some investigation on my own as well.

Thanks for continuing to test and report back.

commented

I found I'm still having it happen with JUST the base Mogit addon (none of the specific modules) + Hekili.

Disabling either of the cause the issue to stop.

For testing purposes, can is the autopopulation something I could comment out the call for in the Hekili to see if that allows both to co-exist or would that break the addon entirely at this point?

commented

The change I was suspecting is line 465 of Classes.lua, which looks like: class.specs[0]:RegisterGear( ability, item )

I'm less confident that this is the issue. But you can try commenting it out by putting two dashes (--) before the word class and see if it makes a difference.

commented

Yeah unfortunately, that didn't make a difference.

(I'm not above putting print() statements in various spots to see what's firing off nearest to the lockups)

commented

What about looking at the opposite angle? If you start with a fresh MogIt profile for your Paladin, do you get the lockup?

I saw on the MogIt site that there's a report of freezing there. It could still be related to an interaction with my addon, but you confirmed that a fresh Hekili profile didn't make a difference.

commented

Any update on using a new MogIt profile? I can't replicate this on my end, so it'd be helpful to know if different MogIt configurations can possibly trigger this problem.

commented

Sorry, I could've sworn I replied. Unfortunately a completely fresh mogit profile doesn't seem to affect if the lockup happens nor the duration.

commented

Thanks for checking back in.

If you do get the long freeze, you can also try /hekili and see if there are any Warnings (it's a section that only appears when a problem occurs, on the left).

Did you speak to this part, above, yet? I may have overlooked it.

If you open Hekili.toc and edit this line:

## OptionalDeps: AddOnSkins, BrewmasterTools, ConsolePort, ElvUI, LibDualSpec-1.0, Masque, SpellFlash, SpellFlashCore, WeakAuras

If you add MogIt and fully restart WoW, does it impact anything?

## OptionalDeps: AddOnSkins, BrewmasterTools, ConsolePort, ElvUI, LibDualSpec-1.0, Masque, MogIt, SpellFlash, SpellFlashCore, WeakAuras

If this "fixes" it, it's not a great solution, but it might help drive where I should be looking.

commented

Nope, I never mentioned that bit, thus far that section hasn't shown up. I'm not surprised it hasn't as for the whole thing I haven't seen a single lua error output. I typically use buggrabber and bugsack so it'd be very noticable had something got thrown.

That's part of what's making it so perplexing to me.

As for editing the toc file, it doesn't seem to have any effect. Still get the lockups. I'm guessing that was to make mogit finish loading first?

commented

Yeah, that would make MogIt finish first. You could try removing it from Hekili.toc and then add Hekili to MogIt's toc instead.

I still suspect that one addon or the other is trying to retrieve item information for an invalid item ID. But I couldn't replicate on my own character.

If you strip your character naked and fully restart WoW, does it freeze?

commented

No change with putting hekili in mogit's toc file either unfortunately.

Naked though, that changed the symptom a bit.

Logging in naked with both addons enabled, instead of a total client lockup, it went to short freezes. Like 1/4 a second, but it was constant. I went into an autowalk, and of a Zandalari's walking animation it would go 3-4 steps, freeze, 2 steps, freeze, repeat.

Knowing what I do about how some abilities work I tried equipping my weapon and the repeating freeze pattern immediately stopped and the game ran fine. (I'm not sure if this indicates a different issue or is a symptom of this)

From there I did an additional test. I logged out with JUST my weapon equipped and restarted the client. Logging in with both addons + ONLY a weapon equipped does NOT cause the lockups and I login just fine.

I did some additional tests here to see if I could isolate a particular piece of gear causing this.

I did not have luck finding a single piece of gear that caused it, but I did find an possible alternate theory. This may be from the dom sockets + shards. I popped them all out and was able to login ok. Is it possible this isn't an item ID issue, but a zone ID issue? Such as it's trying to check the zone to see if the socket bonuses are active before the game has loaded far enough to provide that? What I've also noticed is this lockup happens before the zone that shows in the middle of the screen occurs.

commented

(I tried restarting with my toon parked in maw to no effect, so it doesn't seem to matter if the bonuses are active or not)

commented

Logging in naked with both addons enabled, instead of a total client lockup, it went to short freezes. Like 1/4 a second, but it was constant. I went into an autowalk, and of a Zandalari's walking animation it would go 3-4 steps, freeze, 2 steps, freeze, repeat.

When you saw this, did you end up with warnings? BugSack/BugGrabber errors?

The logic for dom shards/sockets is basically identical to checking for legendaries, etc. They're all just bonus IDs on gear. Whether they're active is checked by relying on the buffs themselves, not location. It could still be related, but nothing springs to mind as to how.

commented

Nope, no errors at all at any point in this.

I wouldn't rule out checking the buffs either for the dom socket bonuses if that internally is checking the location as well.

Something I should also mention is that this happens regardless of if hekili is enabled/disabled via its minimap button menu. Whatever is triggering it is happening regardless of that.

commented

You could try inserting print() statements throughout the updateGear function in... Events.lua, IIRC. It sounds like there's a loop or something is refiring again and again and again. Maybe updateGear isn't completing successfully or being repeatedly triggered for no reason?

print( debugstack() ) would give information about the function running and how we got there.

commented

Before I dig deeper how many times is the ns.updateGear() function intended to run on login?

I stuck a couple counters + prints in the function, one before and one after

if not Hekili.PLAYER_ENTERING_WORLD then return end

By the time the lockup ended, it reported the overall function ran, and executed past the line I quoted a total of 410 times.

commented

Some additional info, this bit doesn't appear to be the issue.

if not gearInitialized then
    C_Timer.After( 3, ns.updateGear )

Both with and without mogit enabled, that block looks like it only triggers twice.

commented

By the time the lockup ended, it reported the overall function ran, and executed past the line I quoted a total of 410 times.

410 is a lot, especially if it's related to volume of items in the addon. Did you try printing the debugstack() for any of these? It can help determine what caused the code to be fired.

commented

See if -alpha3 makes a difference when it posts in a minute.

commented

Unfortunately that doesn't seem to help.

I don't know if any of this helps, but I traced the 400+ firings of that to where it's called from RegisterUnitEvent( "UNIT_INVENTORY_CHANGED", "player", nil, function() around line 901.

However, I commented out that entire binding and the lockup still happens.

I'm not sure this function is the cause at all. I tried commenting the event registrations that call it as well as anywhere else it was called and the lockup still happens.

Heck I even tried commenting this line (359)
RegisterEvent( "PLAYER_ENTERING_WORLD", OnFirstEntrance ) and it still happened.

At this point if it weren't for the two bits that

  1. logging in naked causes a different symptom
  2. logging in with just a weapon seems ok

I'd be thinking I'm just insane.

commented

I'm still keeping an eye on this...

commented

Can you try Warmup and post the information it provides?

https://github.com/tomchapin/Warmup/releases

commented

I did give that a shot, but nothing appears to be loading long, and the lockup happens after the "World entry", "Total time", finally "Blizzard_PlayerChoice". Only after all of that shows up does the lockup happen.

Is there a specific part of the output you're looking for, because nothing looks to be loading long (unless I enable All The Things, and then THAT one loads long, but not any of the others). Hekili is loading at 0.000s, and Mogit at 0.083s.

All that considered, I think whatever is happening is after the load process is complete for everything.

commented

I'm going to close because I haven't been able to replicate this and we're several versions out of date. If there's new information, feel free to reopen with fresh info.