SFX-WoW / Masque

A button-skinning engine for World of Warcraft.
Other
48 stars 11 forks source link

Bug: Action Bar Errors #12

Closed ceylina closed 7 years ago

ceylina commented 7 years ago

Since I guess the release was 7.2.1 and now 7.2.2 I am occasionally getting errors using masque to skin my action bars with the dominos addon

This error will pop up randomly

1x [ADDON_ACTION_BLOCKED] AddOn 'Masque' tried to call the protected function 'MultiBarRightButton11:Show()'. !BugGrabber\BugGrabber.lua:573: in function <!BugGrabber\BugGrabber.lua:573> [C]: in function Show' FrameXML\ActionButton.lua:363: in function <FrameXML\ActionButton.lua:337> [C]: in functionActionButton_Update' FrameXML\ActionButton.lua:812: in function `ActionButton_OnEvent' FrameXML\ActionButton.lua:252: in function <FrameXML\ActionButton.lua:244>

Locals:

StormFX commented 7 years ago

This looks like bleed through from another issue. Masque doesn't hide or show any buttons. I need more info figure out what was causing it. The next time it happens, remember exactly what you were doing or what was happening at the time. IE, Were you in combat? Had you lost control of your character (stunned, feared, etc)? Is it when you try to change skin or just as you're playing? Etc.

ceylina commented 7 years ago

Adding a bit more - I am using caith- no shadow.

Now the thing is I never reset my skin after you released 7.2.2 so it still had modifications for "equipped"

Each time I am in combat when this triggers. The exact details I can't be certain because I only notice when bugsack shows a bug. If I can narrow down exactly what is happening I will add to this report.

I am also using dominos to issue a show state to fade my side action bars (bars 9 and 10) when in combat and return to a full state out of combat.

StormFX commented 7 years ago

Try a few things. First, reset the skin (click the big red reset button). Then, select the Blizzard skin (global), type in the chat window /rl. Re-select Caith - No Shadow and continue playing. If the error occurs again, log out, disable Masque, log back in and play awhile and see if the bug still occurs with Masque disabled.

ceylina commented 7 years ago

Yup already went through those steps right before I replied to this. I will let you know if I hit an error again. I have hope it was just needing to reset the skin. I even went so far as to remove the saved variable wtf file to be sure. This may take a few days to test out but I will report back what I find.

StormFX commented 7 years ago

FYI, I get a similar error with Mapster. Sometimes, add-ons using the same libraries will experience errors propagating through the library from other add-ons, so without explicit details, it's hard to track down the real issue. We'll see what happens with Masque disabled.

ceylina commented 7 years ago

No errors with masque disabled but this might be of interest:

This happens on my rogue the most (I am pretty sure only on my rogue at this point).

when it happens on my rogue it is from being knocked out of stealth due to entering combat. The latest error I have with masque enabled is the same as above only OverrideActionBarButton6:Show()

I will see if I can reproduce this repeatedly

StormFX commented 7 years ago

I did some looking around and it seems that an add-on accessing certain protected frames can cause a cascade of taint that will throw errors on otherwise "safe" action button calls. I've no idea what add-on is actually causing it (Masque doesn't access those frames) but I would imagine it could be found by elimination. First, test with only Masque and Dominos enabled. Then, enabled the others one at a time until the error occurs. In my case, I've a sneaking feeling it's MoveAnything.

ceylina commented 7 years ago

Well I don't use moveanything because that is a taint monster.

Ok I thought it was my rogue only but it just happened on my hunter

AddOn 'Masque' tried to call the protected function 'ActionButton1:Show()'.

So something with Dominos and the changes to masque are causing it to throw errors when stunned. I was in eye of azshara and was rooted by a mob at the end. This error happened shortly afterward. I can't confirm the root was the stun but it happened around that time

This has only started happening after the changes to masque and only happens with dominos. I can use bartender and it won't happen but combining bartender and masque adds about 5 MB of running memory to the game hence why I want to retain Dominos.

I am going to run masque with skinning disabled for dominos and see if I still get this error.

ceylina commented 7 years ago

The only addons I have the touch action bars are Dominos, TullaCC (to show range and resources on top of action buttons as colors), and OmniCC. Of the three the only one that could be interfering is Dominos. The only thing that is skinning buttons on dominos is MAsque.

ceylina commented 7 years ago

Since this is not an error that happens every time in combat it will take a while to narrow down. I can confirm with masque disabled at the addon level I get no errors. With masque enabled but dominos disabled in the settings of masque it DOES cause errors. I will try different setting with masque enabled to trace down if one of the enabled addons is interfering.

These are the masque enabled addons I have

Dominos, Pitbull Unit Frames, Raven, WeakAuras

Again, and I don't want to sound like I am pointing fingers as this could be another addon and finally I am seeing taint but this only happened since the recent update changes to masque. I had all these enabled working well together. The only one of all these addons that has been recently updated is Masque.

ceylina commented 7 years ago

Sorry for more replies. But I am going to try and rule out weakauras as the culprit. It could very well be that they are not compatible with your changes.

StormFX commented 7 years ago

Having Dominos disabled in Masque's options only tells Masque not to skin it. It does not stop Dominos from interacting with Masque. That said, I'm probably going to have to install Dominos myself to figure it out. Masque does not hide or show buttons, ever. So the error itself is clearly propagated from somewhere else. Have you tried enabling the taint log?

Type /console taintLog 1 into the chat log when you first log on and play until you get the error again. Afterwards, browse to the WoW logs folder and find the taint.log. Copy/paste the info here. I'm at work so can't really do much, but it may give us a clue.

ceylina commented 7 years ago

Trying my best to get this to throw something. I am trying just to simplify as much as possible and running only dominos, weakauras, and masque to see if either of these cause the issue.

Also, I am running a taintlog while fighting and getting into combat situations to see if I can throw something that can help

on a side note, you have a reference to a library in the toc that is not in the latest package

Libs\LibDualSpec-1.0\LibDualSpec-1.0.lua

StormFX commented 7 years ago

Good idea. I was trying to suggest only running Masque and Dominos. WeakAuras should be OK. As far as the missing library, it won't hurt anything. I just forgot to remove it when I removed the embedded library. I'll fix it next round.

And the more I look into similar issues people are having, the more I become convinced that this is merely propagation from another add-on. With 7.x (Not sure which version), Blizzard made the World Map protected. Any add-on that tries to do ANYTHING with it, especially during combat, will taint the entire execution path. This is why a lot of users are complaining of getting an error when closing the map.

ceylina commented 7 years ago

so here I am on multiple alts with the same few addons loaded trying my damndest to get this to reproduce.

I finally got it to go on my demon hunter after getting into a random world quest group for one of those rare elites. After getting stunned and pushed back and all sorts of things the error happened and a taint log actually showed up. Once I logged out this wall of text happened. Hopefully it can be useful

edit going to attach the taint file this is just too long taint.txt

ceylina commented 7 years ago

In case you want the function "ActionButton_UpdateUsable" from the FrameXML\Actionbutton.lua file it is

function ActionButton_UpdateUsable(self)
    local icon = self.icon;
    local normalTexture = self.NormalTexture;
    if ( not normalTexture ) then
        return;
    end

    local isUsable, notEnoughMana = IsUsableAction(self.action);
    if ( isUsable ) then
        icon:SetVertexColor(1.0, 1.0, 1.0);
        normalTexture:SetVertexColor(1.0, 1.0, 1.0);
    elseif ( notEnoughMana ) then
        icon:SetVertexColor(0.5, 0.5, 1.0);
        normalTexture:SetVertexColor(0.5, 0.5, 1.0);
    else
        icon:SetVertexColor(0.4, 0.4, 0.4);
        normalTexture:SetVertexColor(1.0, 1.0, 1.0);
    end
end
ceylina commented 7 years ago

Does this old forum post have anything to do with this?

https://us.battle.net/forums/en/wow/topic/10574157350

What I mean to say is one of the new functions in 7.2.5 that is now slowly being integrated causing a similar taint issue?

StormFX commented 7 years ago

That old forum post doesn't apply as Masque uses a secure hook for that function. I'm home now, so I'll do some testing.

What add-ons did you have enabled? I need to see if I can reproduce it.

ceylina commented 7 years ago

Masque / Masque Caith, bugsack, buggrabber, dominos (only dominos config and dominos modules enabled), tullarange (I had accidentally put tullacc earlier oops) weakauras, and sharedmedia (for weakauras)

ceylina commented 7 years ago

I am also downgrading to 7.2.0 for masque and caith to see if that version causes errors (2 mythic pluses and several world bosses / rare elites groups later and nothing)

StormFX commented 7 years ago

I've only gotten it once and only when using Dominos on my Shaman (but forgot to enable taint log). Couldn't get it to trigger on my Mage, even after being stunned, feared, etc. I've a few more characters to finish the daily stuff with so we'll see if I get it then. Thing is, if it only happens with Dominos, it's a clash between it and Masque. Bartender does not have this issue at all. So it's take some time to narrow it down.

StormFX commented 7 years ago

I did notice that there is certainly a bug with Dominos. If you change profiles, Dominos fidgets with the sizing of some of the layers, throwing the skin off. I also do NOT like the cooldown numbers on buttons with charges left. Annoying as hell. :p

ceylina commented 7 years ago

I appreciate you taking the time to check this. I downgraded and have now run 6 mythic pluses and numerous other combat situations and nothing so far as an error.

I love bartender but it really is a resource hog with masque. I wish it was optimized better because it has so many superior options.

I will just keep the older version for now unless you need me to test a potential work around of if you post something to dominos and they ever get around to updating

StormFX commented 7 years ago

Try something when you play next, in Masque/Core/Button.lua, change lines 476-480 from:

            if not Region.__MSQ_SetSwipeColor then
                Region.__MSQ_SetSwipeColor = Region.SetSwipeColor
                Region.SetSwipeColor = __MTF
            end
            Region:__MSQ_SetSwipeColor(GetColor(Color or Skin.Color or BaseColor))

To:

            --if not Region.__MSQ_SetSwipeColor then
                --Region.__MSQ_SetSwipeColor = Region.SetSwipeColor
                --Region.SetSwipeColor = __MTF
            --end
            --Region:__MSQ_SetSwipeColor(GetColor(Color or Skin.Color or BaseColor))
            Region:SetSwipeColor(GetColor(Color or Skin.Color or BaseColor))

(Basically, comment out all the lines using -- and then add the last line.)

And see if you get the error. I tried it on 4 different characters and never got it, but you'll likely be playing more than I in the next 24 hours. :)

ceylina commented 7 years ago

I'll make the change and try it tomorrow when I get on

ceylina commented 7 years ago

So far no errors. I will keep testing as much as I can to try and get it to error but I don't think it will

StormFX commented 7 years ago

Alright. I've got a secure hook dry-coded but I need to test it. Ran out of time. Will do that tonight. Let me know if you have any more errors.

spikelza commented 7 years ago

Im having alot this error / i have Dominos addon

1x [ADDON_ACTION_BLOCKED] AddOn 'Masque' tried to call the protected function 'OverrideActionBarButton4:Show()'. !BugGrabber\BugGrabber.lua:573: in function <!BugGrabber\BugGrabber.lua:573> [C]: in function Show' FrameXML\ActionButton.lua:363: in function <FrameXML\ActionButton.lua:337> [C]: in functionActionButton_Update' FrameXML\ActionButton.lua:719: in function `ActionButton_OnEvent' FrameXML\ActionButton.lua:206: in function <FrameXML\ActionButton.lua:203> Locals:

spikelza commented 7 years ago

1x [ADDON_ACTION_BLOCKED] AddOn 'Masque' tried to call the protected function 'OverrideActionBarButton4:Show()'. !BugGrabber\BugGrabber.lua:573: in function <!BugGrabber\BugGrabber.lua:573> [C]: in function Show' FrameXML\ActionButton.lua:363: in function <FrameXML\ActionButton.lua:337> [C]: in functionActionButton_Update' FrameXML\ActionButton.lua:719: in function `ActionButton_OnEvent' FrameXML\ActionButton.lua:206: in function <FrameXML\ActionButton.lua:203>

Locals:

StormFX commented 7 years ago

That's what this issue is about. Should be fixed "soon".

ceylina commented 7 years ago

Can't get an error with the change put in after running everything I can think of. This error is so haphazard that I can't guarantee with certainty it is fixed but after running this much today on alts I would have got it to happen at least once.

I'll keep going until you release your fix to make sure it doesn't happen but I wanted to report in.

StormFX commented 7 years ago

Thanks for testing it out. I'll test out the secure hook tonight and see if it causes issues. If I can't trigger anything, I'll let you try it out. I wouldn't be surprised if touching the cooldown frame in the wrong way causes taint, since even looking cross-eyed at the Questlog/WorldMap frames in Lua does lately.

ceylina commented 7 years ago

I think I can safely say the error is gone with the changes. There is no way after all the dumb stuff I did today that I would not have got that error. As soon as you have a patch up, I'll give it a shot.

ceylina commented 7 years ago

Ok will be testing it throughout the day and will let you know

StormFX commented 7 years ago

I made a few changes that should hopefully reduce memory usage. Try this one instead:

Button.lua.txt

This should be the last change that needs tested, assuming nothing going bonkers.

ceylina commented 7 years ago

I noticed a nice memory reduction so this should be even nicer. I haven't had a single error so I think your changes are good as far as I can test.

StormFX commented 7 years ago

I wasn't sure if the change in handling the hooked state would make much of a difference. Nice to hear that it did.

I do appreciate you testing this. While Dominos certainly has its benefits, it lacks too many per-bar options for me to use full time so testing is always a chore for me. Someone who uses it primarily is more likely to find problems.

I have some other things to tweak but haven't decided if I want to release them now or wait until the PTR patch goes live. It supposedly adds a method that allows the cooldown line (for charges, etc) to be round.

ceylina commented 7 years ago

Noticed there was a reference in the recently updated list on curse's site but looking at wowace's site the 7.2.2 on there is the same from last week. Has there been a change made or was it backed out?

StormFX commented 7 years ago

Not sure what you mean. The 7.2.2 should be the same on both sites. All I did was delete 7.2.1, which was replaced by 7.2.2. Curse's "recently updated" is probably a bit stale. :p

ceylina commented 7 years ago

I just wondered if you posted an update with the changes you made recently was all. Curse is reporting a new update on the recently updated page but when you go to the project site there is no indication of an update (curse gets odd like that)

untitled

StormFX commented 7 years ago

Probably just triggered because I deleted 7.2.1. Ie, triggers when files are updated.

Also, I just did some testing, Bartender only uses 1-2mb more than Dominos on my machine. Certainly worth it for the per-bar config. Hotkey text on the pet bar was annoying. :p

ceylina commented 7 years ago

Nothing to do with anything but just wanted to share why I use dominos over bartender, especially with masque. Granted I don't have per bar control in dominos (which I really miss) but... I do get a lot less usage in masque from dominos as show below.

BT + Masque idle is around 3.55 MB while Dominos + Masque is around 1.08 MB

So it seems that bartender's ability to have per bar skins really ups the memory consumption. I know it is not a lot but I am a stickler for low memory addons when I can get away with it.

wowscrnshot_060517_232307

StormFX commented 7 years ago

Ah. I just find a few megs to be negligible when I average 200-250 for add-ons. After all, it's out of like almost 16gb so. :)