Thread Tools Display Modes
02-02-15, 09:13 AM   #1
Resike
A Pyroguard Emberseer
AddOn Author - Click to view addons
Join Date: Mar 2010
Posts: 1,290
The Big Taint thread

Since many of the addons suffer from taints, and it's very hard to track some of them, i tought it would be a good idea to make a thread to create the list of the most common taints, and how to avoid them.
If any of you have more usefull information from any of the existing taints, i would like to ask you to share it in this thread.

Dropdown taint

Error Message: [ADDON_ACTION_BLOCKED] AddOn "AddonName" tried to call the protected function "CompactRaidFrame1-8:Show()".

Caused by: This taint happens when you use Blizzard's built in dropdown menu templates from the UIDropDownMenu.lua, UIDropDownMenuTemplates.xml and EasyMenu.lua. The taint sooner or later will spread to the CompactRaidFrames, because it's using the same templates when you right click on raid members. Additionally it can also infect the Battleground dropdown queues, making it impossible to queue to battlegrounds.

Spread by: UIDropDownMenu_SetSelectedName, UIDropDownMenu_SetSelectedValue, UIDropDownMenu_SetSelectedID calls.

Fix: Use NoTaint UIDropDownMenu instead of the Blizzard ones, or use your own customly created dropdowns.

ActionButton taint

Error Message: [ADDON_ACTION_BLOCKED] AddOn 'AddonName' tried to call the protected function 'ActionButton1-12:Show()'.

Caused by: It's pretty similar to the dropdown taint, mostly spread by using templates from ActionBarFrame.xml, ActionButton.lua and ActionButtonTemplate.xml. Also can be caused by ActionButton_ShowOverlayGlow and ActionButton_HideOverlayGlow API calls.

Spread by: ActionButton_ShowOverlayGlow, ActionButton_HideOverlayGlow calls.

Fix: I have a half-fix notaint template lib coming for this soon.

More coming soon...
  Reply With Quote
02-02-15, 09:13 AM   #2
Resike
A Pyroguard Emberseer
AddOn Author - Click to view addons
Join Date: Mar 2010
Posts: 1,290
Reserved for the future.
  Reply With Quote
02-02-15, 01:21 PM   #3
p3lim
A Pyroguard Emberseer
 
p3lim's Avatar
AddOn Author - Click to view addons
Join Date: Feb 2007
Posts: 1,710
See if you can make any sense out of this one:

Code:
8/22 20:29:10.594  Interface\FrameXML\WatchFrame.lua:328
8/22 20:29:10.594  An action was blocked in combat because of taint from Overhead - NamePlate690:SetScale()
8/22 20:29:10.594      Interface\AddOns\Overhead\Overhead.lua:161 Initialize()
8/22 20:29:10.594      Interface\AddOns\Overhead\Overhead.lua:224
Overhead is my nameplate addon, it has no fancy features, just skinning the nameplates.
This happened before 6.0 though.
  Reply With Quote
02-02-15, 02:27 PM   #4
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view addons
Join Date: Sep 2007
Posts: 1,060
You can't call SetScale on a nameplate in combat because they're protected unit frames, I don't know what that has to do with the watchframe though.
  Reply With Quote
02-02-15, 08:52 PM   #5
p3lim
A Pyroguard Emberseer
 
p3lim's Avatar
AddOn Author - Click to view addons
Join Date: Feb 2007
Posts: 1,710
Originally Posted by semlar View Post
You can't call SetScale on a nameplate in combat because they're protected unit frames, I don't know what that has to do with the watchframe though.
The odd thing is that this happened while not in combat, happened on login in a city.
Might not be relevant any more, but it still boggled me when I encountered it.
  Reply With Quote
02-02-15, 03:25 PM   #6
Resike
A Pyroguard Emberseer
AddOn Author - Click to view addons
Join Date: Mar 2010
Posts: 1,290
Originally Posted by p3lim View Post
See if you can make any sense out of this one:

Code:
8/22 20:29:10.594  Interface\FrameXML\WatchFrame.lua:328
8/22 20:29:10.594  An action was blocked in combat because of taint from Overhead - NamePlate690:SetScale()
8/22 20:29:10.594      Interface\AddOns\Overhead\Overhead.lua:161 Initialize()
8/22 20:29:10.594      Interface\AddOns\Overhead\Overhead.lua:224
Overhead is my nameplate addon, it has no fancy features, just skinning the nameplates.
This happened before 6.0 though.
Thats intresting, since if i know well WatchFrame.lua got removed from the game, it's called Blizzard_ObjectiveTracker.lua now and it's an AddOn.
  Reply With Quote
02-02-15, 06:02 PM   #7
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Originally Posted by Resike View Post
Thats intresting, since if i know well WatchFrame.lua got removed from the game, it's called Blizzard_ObjectiveTracker.lua now and it's an AddOn.
Yes, as he mentioned in his post, the error was from pre-6.0, so it's probably not relevant to anything at all at this point.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
04-23-15, 10:47 AM   #8
sezz
A Chromatic Dragonspawn
AddOn Author - Click to view addons
Join Date: Apr 2008
Posts: 158
Originally Posted by Resike View Post
Error Message: [ADDON_ACTION_BLOCKED] AddOn 'AddonName' tried to call the protected function 'ActionButton1-12:Show()'.

Caused by: It's pretty similar to the dropdown taint, mostly spread by using templates from ActionBarFrame.xml, ActionButton.lua and ActionButtonTemplate.xml. Also can be caused by ActionButton_ShowOverlayGlow and ActionButton_HideOverlayGlow API calls.

Spread by: ActionButton_ShowOverlayGlow, ActionButton_HideOverlayGlow calls.
Any other possible causes for this?

I'm not using any of the templates and I'm not messing with ActionButton_* but still encounter that error most of the time upon engaging combat or shortly after combat ends (but not every time - it's hard to debug where it comes from, I have absolutely no idea yet because everything works as expected).
  Reply With Quote
04-23-15, 03:12 PM   #9
Rilgamon
Premium Member
 
Rilgamon's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Sep 2009
Posts: 822
Code:
/console taintLog 1
This enables a logfile which gets big quite fast. So you should not run it too long or while raiding.
Going through this file (logs/taint.log) you'll see the order in which taints are happening and where.
If you're still not happy with that switch it to verbose mode
Code:
/console taintLog 2
and never forget
Code:
/console taintLog 0
to disable.

Its a painful process digging through a gigabyte logfile ...
__________________
The cataclysm broke the world ... and the pandas could not fix it!
  Reply With Quote
04-23-15, 03:39 PM   #10
sezz
A Chromatic Dragonspawn
AddOn Author - Click to view addons
Join Date: Apr 2008
Posts: 158
Originally Posted by Rilgamon View Post
Code:
/console taintLog 1
This enables a logfile which gets big quite fast. So you should not run it too long or while raiding.
Going through this file (logs/taint.log) you'll see the order in which taints are happening and where.
If you're still not happy with that switch it to verbose mode
Code:
/console taintLog 2
and never forget
Code:
/console taintLog 0
to disable.

Its a painful process digging through a gigabyte logfile ...

Thanks but the taintLog doesn't help because it doesn't tell me where the error occurs in my addon, only where it happens in Blizzard's code?

Code:
4/23 23:37:50.364  An action was blocked in combat because of taint from sUI - ActionButton9:Show()
4/23 23:37:50.364      Interface\FrameXML\ActionButton.lua:301
4/23 23:37:50.364      ActionButton_Update()
4/23 23:37:50.364      Interface\FrameXML\ActionButton.lua:263 ActionButton_UpdateAction()
4/23 23:37:50.364      Interface\FrameXML\ActionBarController.lua:145 ActionBarController_ResetToDefault()
4/23 23:37:50.364      Interface\FrameXML\ActionBarController.lua:134 ActionBarController_UpdateAll()
4/23 23:37:50.364      Interface\FrameXML\DraenorZoneAbility.lua:75
  Reply With Quote
04-23-15, 03:53 PM   #11
Torhal
A Pyroguard Emberseer
 
Torhal's Avatar
AddOn Author - Click to view addons
Join Date: Aug 2008
Posts: 1,196
Taint means "user code touched this" which then taints the rest of that codepath. You didn't touch the action buttons directly, but you (or someone else - the taint reporting isn't always foolproof) tainted part of the Blizzard code which at some point calls the action button code. That's why there's a stack track in the "action blocked" report; you trace back and hopefully discover where things went pear-shaped.
__________________
Whenever someone says "pls" because it's shorter than "please", I say "no" because it's shorter than "yes".

Author of NPCScan and many other AddOns.
  Reply With Quote
04-23-15, 03:58 PM   #12
sezz
A Chromatic Dragonspawn
AddOn Author - Click to view addons
Join Date: Apr 2008
Posts: 158
Originally Posted by Torhal View Post
Taint means "user code touched this" which then taints the rest of that codepath. You didn't touch the action buttons directly, but you (or someone else - the taint reporting isn't always foolproof) tainted part of the Blizzard code which at some point calls the action button code. That's why there's a stack track in the "action blocked" report; you trace back and hopefully discover where things went pear-shaped.
This means the only way to fix the taint is to disable everything step by step, right?
  Reply With Quote
02-10-19, 06:09 AM   #13
Ferodra
A Defias Bandit
Join Date: Jul 2018
Posts: 3
I usually don't necro threads, but as it just ate about 2 hours of debugging, i'm happy to say that ActionButton_GetOverlayGlow also causes Actionbutton taint, as it seems to create a new overlay frame, which i wasn't aware of.

For me, it just occured when hovering a spell in my spellbook while in combat.
  Reply With Quote

WoWInterface » Developer Discussions » Tutorials & Other Helpful Info. » The Big Taint thread

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off