BigDebuffs

BigDebuffs

20M Downloads

Constant LUA errors

ryanhealer opened this issue ยท 17 comments

commented

Playing on live as Disc Priest. Errors started popping up while doing BC Timewalking. Disabled the addon and now the issue is occurring in new content as well, fated raids, M+, etc. I have tried reinstalling the addon with no change. LUA errors do not specify BigDebuffs but through process of elimination I have found it to be the culprit. Errors will occur even when it is the only addon turned on. The errors are nonstop, you hit CLOSE and an error immediately pops back up, sometimes not allowing me to even open the addons page to disable it. Hoping this is fixed soon as it is one of a handful of core addons I use. Thanks

commented

Yes Raid Style Party Frames and constant lua errors. I have just stopped using the addon entirely, but now I am so familiar with it I am having a hard time dispelling without it. Hopefully this is fixed soon.

commented

I've spent some time debugging some of the Lua errors that have been reported here. I'm linking some of the relevant issues to this post to try and condense the chat to this one ticket.

#413 #400 #398 #392 #384 #381 #373

Most of these errors cause taint to the raid frames which becomes very apparent to healers, as some raid frames become unclickable.

I'm grouping the errors into 3 categories:

  1. frame:Show() errors
  2. frame:SetAttribute() errors
  3. raid / specifically maybe just fated S4 raids errors?

There might be a 4th called frame:ClearAllPoints() but might be covered in one of the above, just not sure how it fits in yet as I've only gotten this specific error 1 time in all my testing.

I'll preface this with almost 100% of my debugging has been done in random battlegrounds and random epic battlegrounds the past few days.

1. frame:Show()
This is the bug that I saw the most while doing BGs, while it's very hard to reliably reproduce, the best way I have found to create it is, be in combat and someone on your team joins the battleground. See below image with debug statements catching the error while in CompactUnitFrame_UpdateAll. frame.unit is nil and frame.unitExists is false. I've proposed a fix for this in a PR.

show

The output in chat is the following: (Might not be exact, I modified the output after I took that screenshot)

print("UpdateAll: ", name, " ", frame.unit, " ", frame:IsVisible(), " ", InCombatLockdown(), " ", frame:IsForbidden(), " unitExists: ", frame.unitExists)

2. frame:SetAttribute()
This bug I would get while trying to debug the frame:Show() issue, but I think the reproduce steps are the same. Just randomly I would get this error instead. I'm sure it's somehow related to how the CompactRaidFrame is loaded when a player joins the BG. When this happens frame.unit has a value and frame.unitExists is true. The only difference is frame:IsVisible() is false. I will include a proposed fix for this in a PR, but I'm not sure it is correct and will need more input / testing.

setAttribute

Most of the output in chat is the same as above besides the table output. I do know that the false in the red circle is frame:IsVisible()

3. Raid issues
While the past few weeks this is where I actually stumbled upon the protected access errors, I've not had time to reproduce / debug these errors. I don't raid with guild for a couple more days, but I do know that it's very easy to reproduce with bosses that have the fated 'Protoform Barrier' affix. I'm sure it has something to do with when they spawn the nameplate associated with the affix must have some error trying to attach BigDebuffs to the nameplate.

If anyone has any Bug Sack / !BugGrabber logs for anything raid related please post below. Be sure to specify if the error was during a fated raid and if so what affix was active on the boss.

As mentioned above, I'm attaching a PR to this, but I'm not sure my proposed fixes actually solve the problem and don't introduce different problems. Specifically the code that fixes the frame:SetAttribute() errors, I'm not sure the frame should be attached to the pending object to be updated when PLAYER_REGEN_ENABLED fires.

Other things about testing: I don't have a reliable way to test any of the classic variants right, all my testing and debugging has been on retail.

commented

Are you using Raid-Style party frames? I had the same issue both in raids and dungeons so I had to disable the raid functionality completely. There is a taint happening with raid frames but I haven't figured out why yet. After you disable it in raid frames the addon behaves fine. I hope the author fixes it soon.

commented

I'm having this issue too with raid style party frames (I play retail), I noticed it a lot in random battlegrounds, but happens as far as I can tell everywhere. I've also noticed taint and getting similar errors with other addons that are trying to access the CompactRaidFrames.

I've attached some logs from BugGrabber / BugSack. Hopefully someone understands the WoW API and can make since of some of these errors.
raidFrameErrors.txt

commented

Looking at it a bit more, TaintLess lib from TownlongYak seems to fix these specific issues with addons, as they're pretty common. Maybe including it in bigdebuffs helps. Check it out: https://www.townlong-yak.com/addons/taintless

commented

@carbohydrate what were the issues with the pull request?

commented

Looking at it a bit more, TaintLess lib from TownlongYak seems to fix these specific issues with addons, as they're pretty common. Maybe including it in bigdebuffs helps. Check it out: https://www.townlong-yak.com/addons/taintless

Can one of you confirm this fixes the issues? I'll include it in the next release.

commented

I tested TaintLess in LFR and BGs and I didn't have issues, however I did get errors on non instanced raids like World Bosses. As @carbohydrate said, the errors appeared when people joined/left the raid while we were in combat. I'm not really sure if this addon actually helped or not, I'll have to test it a bit more.

commented

I have not tried TaintLess lib yet, will give it a try this weekend (I don't have high hopes). I'm reading the docs and it does not seam to be the same issue, seams to solve things with drop downs (which is a problem with a lot of addons, one common example is using the upgrade vendors in retail and selecting what level you want to upgrade your gear too. I had a friend tell me tonight that BigDebuffs was blocking that for him, I have not personally had that happen to me with BigDebuffs, but like 10+ other addons have gave me that error on that screen). The TaintLess lib also mentions nameplates, but the errors that I described above I'm almost 100% sure are being caused by accessing the CompactUnitFrames, not nameplates, besides in raid. Which brings me to my next point, I'm not sure if Blizzard did something, but I did not get a single error tonight in raid on bosses with 'Protoform Barrier' so I'm not sure what is going on there.

Problems with my pull request. The one line:
if not frame.unit or not frame.unitExists then return end
Which I was hoping to solve the frame:Show() errors, it did not. The other thing, was kindof catching the error and putting the frame into pending and getting added on PLAYER_REGEN_ENABLED(), but because the frame was hidden the CompactUnitFrame was getting added to the UI as invisible. I've been messing around with it some more tonight and got that working to show the frame if it's hidden, but now I got this other thing happening where the debuffs end up out of position (I have default positions, so they should be bottom left).
what
So I don't know what is going on there, I'm not getting any errors, it's just out of position randomly sometimes, not always.

I'm trying to find another addon that hooks "CompactUnitFrame_UpdateAll" and I have not found one. I wonder if it's worth exploring a different hook? Or setting up BigDebuffs:AddBigDebuffs(frame) a different way? I'm really new to WoW addons so I really don't understand a lot of what is going on, just taking stabs at changes. The first thing that comes to mind is registering an event on RAID_ROSTER_UPDATE or GROUP_ROSTER_UPDATE and then setup BigDebuffs that way somehow?

I've seen some weird results while inside of "CompactUnitFrame_UpdateAll" like I feel like early returns are ignored sometimes? Or I catch things in an if and return and put the frame into the pending table and it still errors for some reason, I don't exactly understand why that is happening.

Also, thanks for the top about world bosses, that will save me a lot of time when I need to test something fast.

commented

Believe it or not, Angry Keystones had the same taint issue with compact unit frames and it was due to their dropdown implementation in the options panel! Somehow if dropdown menus get tainted they affect compact unit frames. You can also find a comment about it in AllTheThings settings code somewhere (or at least there used to be)

Edit: I found their comment in an old commit. They've implemented their own method since then.

-- for whatever reason, using a UIDropdown from an addon initially will taint the dropdown itself and
-- various frames beneath it, thus leading to ADDON_ACTION_BLOCKED during use of CompactRaidFrames (i.e. default raid frames)
-- http://web.archive.org/web/20120924210349/http://us.battle.net/wow/en/forum/topic/6413024969?page=1
-- putting the dropdown initialize into a securecall seems to ensure that the addon taint does not propogate into the secure blizzard frames

Clarification: I'm not saying that in this case dropdown is the issue, I'm just suggesting that there might be a taint elsewhere and compact unit frames are being indirectly affected because of it.

commented

Oh interesting, I had no idea weird things like the options panel could be leaking and taiting the frames, so odd. Maybe I should keep an eye out on the taint.log on loading the frames and when they error. Might see something there. Thanks for the information, going to keep playing with things and see if I can figure anything out.

commented

Is there any sort of fix for this yet? Been playing without the addon almost two weeks now. Tried running it again and constant errors. Using raid style party frames.

commented

Fix would be much appreciated - LUA Errors getting out of Hand at the moment.
Everytime i wanna upgrade smth, BigDebuffs blocks and gets errors.

commented

Any updates on this issue? I have to play with BD disabled and feel very handicapped, this addon is too good

commented

I tried https://github.com/nozzlegear/bigdebuffs and the LUA errors seem to be gone for me with that fork. Would advise people still struggling to give it a shot

commented

Thanks @Xyphers but I'm just using my fork as experimental code repository for features/fixes to BigDebuffs before I push them back to this upstream branch. As far as I know it doesn't have any specific fixes for lua errors or stability that BigDebuffs proper doesn't have, and I can't guarantee that it's stable or won't break.

commented

@nozzlegear Yea, I realised after as well that perhaps I just needed a clean install. I might try that and report back if I'm not too lazy