Thread Tools Display Modes
11-01-12, 02:19 PM   #1
Angrysteel
A Murloc Raider
Join Date: Jan 2008
Posts: 6
UI Error - (Compact Raid Frame)

Code:
Message: CreateFrame: Can't create protected 'Button' now
Time: 11/01/12 14:04:09
Count: 2
Stack: [C]: ?
[C]: ?
[C]: in function `CreateFrame'
...actRaidFrames\Blizzard_CompactRaidFrameContainer.lua:342: in function `CompactRaidFrameContainer_GetUnitFrame'
...actRaidFrames\Blizzard_CompactRaidFrameContainer.lua:314: in function `CompactRaidFrameContainer_AddUnitFrame'
...actRaidFrames\Blizzard_CompactRaidFrameContainer.lua:254: in function `CompactRaidFrameContainer_AddPlayers'
...actRaidFrames\Blizzard_CompactRaidFrameContainer.lua:176: in function `CompactRaidFrameContainer_LayoutFrames'
...actRaidFrames\Blizzard_CompactRaidFrameContainer.lua:130: in function `CompactRaidFrameContainer_TryUpdate'
...actRaidFrames\Blizzard_CompactRaidFrameContainer.lua:57: in function `CompactRaidFrameContainer_OnEvent'
[string "*:OnEvent"]:1: in function <[string "*:OnEvent"]:1>

Locals: (*temporary) = "Button"
(*temporary) = "CompactRaidFrame3"
(*temporary) = CompactRaidFrameContainer {
 unitFrameUnusedFunc = <function> defined @Interface\AddOns\Blizzard_CompactRaidFrames\Blizzard_CompactRaidFrameContainer.lua:46
 flowSortFunc = <function> defined @Interface\AddOns\Blizzard_CompactRaidFrames\Blizzard_CompactRaidFrameManager.lua:762
 groupMode = "flush"
 raidUnits = <table> {
 }
 frameUpdateList = <table> {
 }
 flowOrientation = "vertical"
 borderFrame = CompactRaidFrameContainerBorderFrame {
 }
 flowFilterFunc = <function> defined @Interface\AddOns\Blizzard_CompactRaidFrames\Blizzard_CompactRaidFrameManager.lua:830
 groupFilterFunc = <function> defined @Interface\AddOns\Blizzard_CompactRaidFrames\Blizzard_CompactRaidFrameManager.lua:860
 partyUnits = <table> {
 }
 flowMaxPrimaryUsed = 72.000001094068
 flowMaxSecondaryUsed = 35.999985230089
 units = <table> {
 }
 flowPauseUpdates = true
 enabled = true
 frameReservations = <table> {
 }
 flowFrames = <table> {
 }
 0 = <userdata>
}
(*temporary) = "CompactUnitFrameTemplate"
Is this a blizzard error, or an addon creating these errors? I am having the hardest time tracking this down.

It looks like its just the default Blizzard Raid frames erroring. I have tried deleting the Blizzard CompactRaidFrames.lua file and letting blizzard create a new one. Still same errors.
  Reply With Quote
11-01-12, 04:05 PM   #2
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Blizzard's CompactRaidFrames are probably the worst code they have ever included in the WoW UI. It's even worse than the UIDropDownMenu.

Technically the problem you're seeing is caused by addons -- because taint cannot occur if no addons are present -- but realistically, it's likely that none of your addons are actually doing anything wrong, and something somewhere just touched a variable that, 1500 indirect links in some nebulous chain of unrelated actions later, the CompactRaidFrames decided was tainted.

If the errors don't noticably break anything, just ignore them. Install BugSack so they don't pop up and annoy you.

If you can consistently reproduce the problem (eg. it happens every time you enter combat, or something like that) then you could try narrowing it down:

1. Enable half of your addons, disable the other half, and log in.
3. If the problem does not occur, log out, disable all enabled addons, and enable the other half.
4. If the problem does occur, log out, disable half of the enabled addons, and log in.
5. Repeat until you have narrowed it down to 1 addon that causes the problem.
__________________
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
03-21-13, 08:31 AM   #3
VincentSDSH
Non-Canadian Luzer!
 
VincentSDSH's Avatar
AddOn Author - Click to view addons
Join Date: Jun 2006
Posts: 350
I know this is an old thread but for those searching this error:

http://us.battle.net/wow/en/forum/to...1970?page=1#15

To reproduce:
1. Disable all addons. All of them.
2. /console taintLog 1
3. /reload
4. Copy-paste this to chat:

/run local frame=CreateFrame("Frame","TaintTest") frame.name="Taint Test" InterfaceOptions_AddCategory(frame)

5. Go enter combat. I recommend using a target dummy and just auto attacking for a more pure test. (/run and /script macros have the same taint potential as addons)
6. While in combat hit ESC->Interface
7. Close the window
8. BAM! You've just added 8k to your taint.log. The major events in the log are:
Verified this is still an issue in 5.2.
  Reply With Quote
03-21-13, 01:59 PM   #4
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Oh, so that's the taint bug with InterfaceOptions_AddToCategory. Well, I guess I can stop telling myself I should get around to looking into why I get so many "omg an addon tainted the compact raid frames you're not even using!" errors in BugSack.
__________________
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
03-21-13, 02:08 PM   #5
Nibelheim
local roygbi-
 
Nibelheim's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2010
Posts: 1,600
Wish Blizzard didn't have optionphobia and added in an option to not load their raid frames.
  Reply With Quote
03-21-13, 02:59 PM   #6
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
I wonder if something like this would solve all the problems (for people not using the Blizzard raid frames)?

Code:
CompactRaidFrameContainer:UnregisterAllEvents()
CompactRaidFrameContainer:SetScript("OnEvent", nil)
CompactRaidFrameContainer:SetScript("OnSizeChanged", nil)
CompactRaidFrameContainer:Hide()

CompactRaidFrameManager:UnregisterAllEvents()
CompactRaidFrameManager:SetScript("OnEvent", nil)
CompactRaidFrameManager:Hide()
__________________
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
03-22-13, 08:56 AM   #7
Nibelheim
local roygbi-
 
Nibelheim's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2010
Posts: 1,600
Originally Posted by Phanx View Post
I wonder if something like this would solve all the problems (for people not using the Blizzard raid frames)?
I ran WoW with a lone addon with that code in it [plus an additional LoadAddOn("Blizzard_CompactRaidFrames")]. The Blizz Raid Frames still appeared after going into the Interface Options window then leaving the Interface Options window, but never disappeared on leaving a raid or showed more than one column in a raid.

Not sure why entering/leaving Interface Options causes the Raid Frames to load, but it's a good way to test code functionality.

Last edited by Nibelheim : 03-22-13 at 09:00 AM.
  Reply With Quote
03-25-13, 04:11 PM   #8
VincentSDSH
Non-Canadian Luzer!
 
VincentSDSH's Avatar
AddOn Author - Click to view addons
Join Date: Jun 2006
Posts: 350
Originally Posted by Leatrix View Post
The end result is that only the 'okay' button is shown in the panel and ciicking the button, or pressing the escape key, performs the 'okay' click action, thus taint never occurs even during combat. I personally don't feel that the loss of the cancel ability amounts to anything since hardly any other part of the UI (and very few addons) feature a cancel button. I'm sure users would prefer a taint-free addon anyway.
And for addons, I'd tend to agree with you; however, doesn't that mean you can't cancel changes you make in the client's interface options?
  Reply With Quote
03-25-13, 05:14 PM   #9
Foxlit
A Warpwood Thunder Caller
AddOn Author - Click to view addons
Join Date: Nov 2006
Posts: 91
Originally Posted by Leatrix View Post
It most certainly does. However, as I said in my previous reply, I don't think that's important.
Please don't break functionality in other addons just because you don't think that functionality is important. Some configuration panels are more than just a list of checkboxes, and undoing all actions is not always as simple as repeating what you did in reverse.

You could instead call the cancel handlers on other addons' configuration panels before you convert the cancel action into an okay one. Alternatively, replace the cancel handlers on just the Blizzard panels that are causing issues with null functions.
__________________
... and you do get used to it, after a while.
  Reply With Quote
03-25-13, 06:59 PM   #10
Foxlit
A Warpwood Thunder Caller
AddOn Author - Click to view addons
Join Date: Nov 2006
Posts: 91
Originally Posted by Leatrix View Post
The problem here is that the cancel function is used for all addons and options collectively and it has caused UI taint for years for this reason. The taint occurs if you have any addon installed which uses the Blizzard interface options panel regardless of what that addon actually does (it needn't do anything).
I think you misunderstood: the suggestion was that you should replace panel.cancel functions on Blizzard panels that actually need to be called securely (or they'll propagate taint to places that can't tolerate it) with functions that do not do anything. In practice, this is as simple as doing
Code:
CompactUnitFrameProfiles.cancel = function() end
after Blizzard_CUFProfiles loads; if you identify other problematic panels, you can do the same for those. The point here is that InterfaceOptionsFrameCancel_OnClick does not taint anything important by itself -- it's the individual cancel handlers that might cause problems.
__________________
... and you do get used to it, after a while.

Last edited by Foxlit : 03-25-13 at 07:07 PM.
  Reply With Quote

WoWInterface » AddOns, Compilations, Macros » AddOn Help/Support » UI Error - (Compact Raid Frame)


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