Topic action blocked because of taint.. why
Direball
Frostmane
Direball
70 Human Mage
1080
im kind of confused as to why my addon was being blocked. its a small addon that does a few things, none of which involve what i was trying to do, replace a glyph.

every time i tried to replace a glyph. it would confirm that it would take 1 dust to wipe out the old glyph, and after clicking that, it would do the cast animation and sound to apply the new glyph, but it never used up the dust or removed the old glyph.

the taint log shows this:

12/23 02:33:37.050 An action was blocked because of taint from mymods - PlaceGlyphInSocket()
12/23 02:33:37.050 Interface\FrameXML\StaticPopup.lua:76 OnAccept()
12/23 02:33:37.050 Interface\FrameXML\StaticPopup.lua:3490 StaticPopup_OnClick()
12/23 02:33:37.050 StaticPopup1Button1:OnClick()
12/23 02:33:37.051 An action was blocked because of taint from mymods - PlaceGlyphInSocket()
12/23 02:33:37.051 Interface\FrameXML\StaticPopup.lua:76 OnAccept()
12/23 02:33:37.051 Interface\FrameXML\StaticPopup.lua:3490 StaticPopup_OnClick()
12/23 02:33:37.051 StaticPopup1Button1:OnClick()

my addon only does like 4 things.. it puts all my chat windows where i want them on world_map_update (so i can hit m to position them), it plays the "work complete" sound when a quest is done, it puts timestamps in every window, and it moves the bag frame up so its not overtop of my ui. heres the code:

local frame, events = CreateFrame("Frame"), {};
local oldcomp, oldquest, oldob, newcomp, newquest, newob

function movestuff()
ChatFrame1:ClearAllPoints()
ChatFrame1:SetPoint("BOTTOMLEFT", 18, 15)
ChatFrame1:SetWidth(727)
ChatFrame1:SetHeight(116)

ChatFrame2:ClearAllPoints()
ChatFrame2:SetPoint("BOTTOMRIGHT", -315, 15)
ChatFrame2:SetWidth(431)
ChatFrame2:SetHeight(123)

ChatFrame3:ClearAllPoints()
ChatFrame3:SetPoint("BOTTOMRIGHT", -20, 15)
ChatFrame3:SetWidth(280)
ChatFrame3:SetHeight(117)
end

function events:WORLD_MAP_UPDATE(...)
movestuff()
end

function events:QUEST_LOG_UPDATE(...)
oldcomp, oldquest, oldob = newcomp, newquest, newob
newcomp, newquest, newob = 0, 0, 0

for qid = 1, GetNumQuestLogEntries() do
local _,_,_,_,header,_,iscomp = GetQuestLogTitle(qid)

if not header then
newquest = newquest + 1

if iscomp == 1 then
newcomp = newcomp + 1
else
for qob = 1, GetNumQuestLeaderBoards(qid) do
if select(3,GetQuestLogLeaderBoard(qob, qid)) == 1 then
newob = newob + 1
end
end
end
end
end

if oldquest == newquest then
if (newcomp - oldcomp) == 1 then
PlaySoundFile("Sound\\Creature\\Peon\\PeonBuildingComplete1.wav")
end
end
end

frame:SetScript("OnEvent", function(self,event,...) events[event](self,...); end)
for k,v in pairs(events) do
frame:RegisterEvent(k)
end

local myUpdater = updateContainerFrameAnchors;
function updateContainerFrameAnchors()
CONTAINER_OFFSET_Y = 185
myUpdater()
end

function addTimeStamp(self,msg,...)
return self:myAddMessage(date("|cffdebc01[%I:%M:%S]|r ")..msg,...)
end

for i=1,NUM_CHAT_WINDOWS do
local tab = _G["ChatFrame"..i];
tab.myAddMessage = tab.AddMessage;
tab.AddMessage = addTimeStamp;
end


im sure something in there is probably badly written, i havent had any trouble with it until now so i havent looked at it.. i really dont see how any of that could be tainting the glyph window though?
Llewwellyn
Winterhoof
Llewwellyn
85 Night Elf Druid
4910
Until recently, I haven't had any taint issues either. Just google "from a tainted execution path" WITH the quotes intact.

The consensus of the addon community (whether right or wrong) is that the issue is with some code from Blizz being tainted and hooking into that taints other code. The problem is ubiquitous and I'm getting errors all the time. Have to /reload ui until it happens again. So, it *might* not be your code. Also bear in mind the errors, at least from Swatter, are blaming random addons. Some of my errors below:

*Here's a repeat of yours (and I don't have your addon :) )
Error: AddOn Auc-Advanced attempted to call a forbidden function (PlaceGlyphInSocket()) from a tainted execution path

*Don't you hate it when Auctioneer cancels your buffs?
Error: AddOn Auc-Advanced attempted to call a forbidden function (CancelUnitBuff()) from a tainted execution path.

*I set /focus from the chat window, not OPie
Error: AddOn OPie attempted to call a forbidden function (FocusUnit()) from a tainted execution path.

*Umm...no. This is a macro, executed this time from an action button
Error: AddOn ShadowedUnitFrames attempted to call a forbidden function (PlaceRaidMarker()) from a tainted execution path

*Huh? Stubby you say? This time was using OPie to set raid marker
Error: AddOn Stubby attempted to call a forbidden function (PlaceRaidMarker()) from a tainted execution path

And now atlas loot.
Error: AddOn AtlasLoot attempted to call a forbidden function (PlaceRaidMarker()) from a tainted execution path.

So, well, enough said.
Prenumbra
Uther
Prenumbra
85 Goblin Priest
5925
I had the Dominos config block me from dropping raid markers a while back...
Llewwellyn
Winterhoof
Llewwellyn
85 Night Elf Druid
4910
Yeah. I think I've had errors for just about every addon listed. If it was just the Raid Markers, meh, wouldn't be horrible (although I love to use them), but it's other random things.

What's confusing (and I'm not a Lua programmer) is I thought all blizz code was considered untainted. If that's the case, how could a path from them cause the error? Anyone who understands this stuff, feel free to chime in.

Is it possible that some common addon is causing the problem? Something like ACP that pretty much everyone with an addon has? Just questions and wild speculation. I don't know if this is an issue blizz has acknowledged or one the addon developers are assuming. It could be any addon tainting the path once, which would affect the rest...?

Well, it gives me something to read about during lunch.
Prenumbra
Uther
Prenumbra
85 Goblin Priest
5925
12/23/2010 10:14 AMPosted by Llewwellyn
What's confusing (and I'm not a Lua programmer) is I thought all blizz code was considered untainted. If that's the case, how could a path from them cause the error? Anyone who understands this stuff, feel free to chime in.

I'm not really a LUA person myself, but a wild guess: It isn't that Blizzard's code can't have taint, it's that taint is supposed to be ignored when Blizzard code is running.
Alestane
Bloodhoof
Alestane
MVP
85 Human Warlock
5030
Blizzard's code doesn't generate taint. But if Blizzard code picks up a tainted value that some add-on code handled, it will carry that taint until the current Lua event finishes being handled and returns to the main game engine. This is how add-on code is prevented to interfering in what functions like CastSpellByName do...if at any point on the way to doing something secure, Blizzard code has come into contact with a value modified by an add-on (with certain exceptions made under tight restrictions for things like custom action buttons), then that protected action will fail.

That said, I believe I have heard that there is an issue with some part of the code spreading taint it shouldn't have to, which means it will (we hope) be corrected in a future patch.
Mattaeus
Stormreaver
Mattaeus
46 Human Paladin
240
haha

you all said the word "taint"

and spreading taint...haha

Please report any Code of Conduct violations, including:

Threats of violence. We take these seriously and will alert the proper authorities.

Posts containing personal information about other players. This includes physical addresses, e-mail addresses, phone numbers, and inappropriate photos and/or videos.

Harassing or discriminatory language. This will not be tolerated.

Click here to view the Forums Code of Conduct.

Report Post # written by
Reason
Explain (256 characters max)

Reported!

[Close]