TipTac Reborn

TipTac Reborn

862k Downloads

After looking in talent window a lot of skills are blocked

frozn opened this issue ยท 10 comments

commented

Source: https://www.curseforge.com/wow/addons/tiptac-reborn?comment=98

Hermonii:

Each time i take a look into the talent window i'll get the error that block lot of skills (if isnt all skills ?) during battle.
That's really anoying and make this add unusable.

After few test it was always after looking my talents.

Praesti:

This is the error I'm getting too. Every now and then I'm blocked from using a skill or an ability during combat.

commented

im able to reproduce it by opening my talents, mousing over a node with a choice of two talents, then either shifting into a druid form or mounting a dragonriding mount, both of which replaces my main action bar. then every time i attempt to use an ability on that action bar, it throws the error. i can use any button that isnt on that bar.

commented

Thank god someone figured out what is triggering this. Been a HUGE issue for me, crops up a lot when I am flying so this makes sense since I frequently accidentally press N when trying to open my map. Never put 2 and 2 together that this was the cause for it happening. I hope this gets fixed soon

commented

I've also been getting this error on any character. The most often way to trigger it is to open the talent window and (re)assign talent points. Within a couple of minutes, at random (seemingly), this error will pop up.

commented

I get this problem all the time, and it's pretty annoying to have to reload the whole UI in the middle of combat or while dragonriding or something.

commented

I continued on to learn how to log addon taints, and got these results in the taint log:

12/23 13:18:03.484  Global variable ON_BAR_HIGHLIGHT_MARKS tainted by TipTac - Interface/FrameXML/ActionButton.lua:67 ClearOnBarHighlightMarks()
12/23 13:18:03.484      Interface/AddOns/Blizzard_ClassTalentUI/Blizzard_ClassTalentButtonTemplates.lua:30 Button:ShowActionBarHighlights()
12/23 13:18:03.484      Interface/AddOns/Blizzard_ClassTalentUI/Blizzard_ClassTalentButtonTemplates.lua:158 Button:OnEnter()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:303 Button:UpdateMouseOverInfo()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:168 UpdateVisualState()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:483 Button:UpdateVisualState()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:172 FullUpdate()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:461 FullUpdate()
12/23 13:18:03.484      Interface/AddOns/Blizzard_ClassTalentUI/Blizzard_ClassTalentButtonTemplates.lua:134 Button:FullUpdate()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:112 Button:UpdateDefinitionInfo()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:104 Button:SetDefinitionID()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:390 UpdateEntryInfo()
12/23 13:18:03.484      Interface/AddOns/Blizzard_ClassTalentUI/Blizzard_ClassTalentButtonTemplates.lua:122 Button:UpdateEntryInfo()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:120 Button:SetEntryID()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentButtonTemplates.lua:405 updateMethod()
12/23 13:18:03.484      Interface/AddOns/Blizzard_SharedTalentUI/Blizzard_SharedTalentFrame.lua:233 OnUpdate()
12/23 13:18:03.484      Interface/AddOns/Blizzard_ClassTalentUI/Blizzard_ClassTalentTalentsTab.lua:97
12/23 13:18:03.484  Execution tainted by TipTac while reading ON_BAR_HIGHLIGHT_MARKS - Interface/FrameXML/ActionButton.lua:71 GetOnBarHighlightMark()
12/23 13:18:03.484      Interface/FrameXML/ActionButton.lua:486 MultiBarLeftButton8:UpdateSpellHighlightMark()
12/23 13:18:03.484      Interface/FrameXML/ActionButton.lua:392 MultiBarLeftButton8:Update()
12/23 13:18:03.484      Interface/FrameXML/ActionButton.lua:910 MultiBarLeftButton8:OnEvent()
12/23 13:18:03.484      Interface/FrameXML/ActionButton.lua:264
12/23 13:18:03.484  Interface/FrameXML/ActionButton.lua:1071 UpdateFlyout()
12/23 13:18:03.484  An action was blocked because of taint from TipTac - UseAction()
12/23 13:18:03.484      Interface/FrameXML/SecureTemplates.lua:364 handler()
12/23 13:18:03.484      Interface/FrameXML/SecureTemplates.lua:690 PerformAction()
12/23 13:18:03.484      Interface/FrameXML/SecureTemplates.lua:704 OnActionButtonClick()
12/23 13:18:03.484      Interface/FrameXML/SecureTemplates.lua:746 SecureActionButton_OnClick()
12/23 13:18:03.484      Interface/FrameXML/ActionButton.lua:109 TryUseActionButton()
12/23 13:18:03.484      Interface/FrameXML/ActionButton.lua:157 ActionButtonUp()
12/23 13:18:03.484      ACTIONBUTTON2:4

Through sheer luck and a lot of time spent reloading the UI and narrowing it down, I've found that removing these lines fixes the issue. Something is tainting a global variable when tip.NineSlice.SetCenterColor is reassigned. And it's the reassignment itself that seems to cause the issue; if you only remove the code inside of the function it will still cause an error.

Again, I'm unfamiliar with the WoW API so I'm not sure of the ramifications of removing this reassignment or why it fixes the issue.

		tip.NineSlice.SetCenterColor = function(self, ...)
			if (self:GetParent().ttSetBackdropColorLocked) then
				return;
			end
			if (tip_NineSlice_SetCenterColor_org) then
				tip_NineSlice_SetCenterColor_org(self, ...);
			end
		end

EDIT: This fixed the issue for me under my recreation steps but it doesn't seem fixed when caused by different steps. I've had the error pop up a couple times since but I'm not sure what it has been caused by.

commented

I started looking at this as this keeps popping up for me and I thought I could possibly help by submitting a fix PR. I'm a software engineer but I'm not familiar at all with WoW's API so take everything I say with a grain of salt!

Exact steps to reproduce:

  1. Put an action on button 2 that will fail (i.e. an attack but you don't have an enemy targeted, the action will fail/not be cast)
  2. In your current talent tree, unassign 1 point and assign it elsewhere. Confirm changes.
  3. Assign it back to where you had it. Confirm changes.
  4. Switch to a different spec
  5. Press button 2 using your keyboard, not your mouse

This also works for buttons 3, 4, and 5. Not button 1.

Here is the trace from BugSack:

4x [ADDON_ACTION_FORBIDDEN] AddOn 'TipTac' tried to call the protected function 'UseAction()'.
[string "@!BugGrabber/BugGrabber.lua"]:480: in function <!BugGrabber/BugGrabber.lua:480>
[string "=[C]"]: in function `UseAction'
[string "@FrameXML/SecureTemplates.lua"]:364: in function `handler'
[string "@FrameXML/SecureTemplates.lua"]:690: in function <FrameXML/SecureTemplates.lua:672>
[string "@FrameXML/SecureTemplates.lua"]:704: in function <FrameXML/SecureTemplates.lua:697>
[string "@FrameXML/SecureTemplates.lua"]:746: in function `SecureActionButton_OnClick'
[string "@FrameXML/ActionButton.lua"]:109: in function `TryUseActionButton'
[string "@FrameXML/ActionButton.lua"]:157: in function `ActionButtonUp'
[string "ACTIONBUTTON2"]:4: in function <[string "ACTIONBUTTON2"]:1>

As far as I can tell from searching through the codebase, TipTac doesn't use UseAction() or any action bar functions/events for that matter. From a cursory Google search, it seems this isn't the only time this has popped up since Dragonflight released. It may be an instance of addon taint? At this point I'm wondering if this is a bug in WoW's API rather than TipTac.

commented

I would like to add that only skills on Action Bar 1 are getting blocked for me.

commented

@JosefBud:
Thank you for digging deeper into it! ๐Ÿ‘ Unfortunately I didn't see this errors in the past for myself, but I suspected these function overrides to be the cause for the start of taint.

Currently I'm completely rewriting the lua files regarding "ttCore.lua" replacing the locking system (implemented with function overrides) with post-hooks (via hooksecurefunc). But this will still need some time...

commented

awesome thank you!. this has been such a pain to deal with lol

commented

Should be fixed with latest release v23.01.23. Please try again with this version.