Stanzilla / WoWUIBugs

World of Warcraft UI Bug Tracker
153 stars 7 forks source link

Random blocked actions as of 10.1.7.51421 #483

Closed Meorawr closed 8 months ago

Meorawr commented 9 months ago

As of the 10.1.7.51421 hotfix build to fix protections on ClearTarget there's been a number of reports where unrelated addons are getting blamed for blocked or forbidden actions in locations that are seemingly nonsense - such as in return statements of functions, or in the iterator of for ... in pairs loops.

This ticket is mostly to just collect the various reports and figure out if there's some common thread between everything.

The issue itself also reportedly occurs on the 10.2.0 PTR.

Test case

A reproducible test case has been worked out: WowUIBugs_483.zip

The preconditions for this test case are that the client version is 10.1.7.51421 and that the player logging in must be located in the outdoor section of Valdrakken. The author of this test case has noted that on some client startups this error may not be 100% reproducible, and that they sometimes had to fully exit and restart the client a few times before it'd work.

Shortly after logging in - or reloading the UI - you'll get an addon action blocked popup with the taint log suggesting an unnamed action was blocked, despite the addon itself calling no secure functions.

9/22 11:33:13.765  An action was blocked because of taint from WowUIBugs_483 - 
9/22 11:33:13.765      Interface/AddOns/WowUIBugs_483/WowUIBugs_483.lua:21 work()
9/22 11:33:13.765      Interface/AddOns/WowUIBugs_483/WowUIBugs_483.lua:44

Line 21 in the above taint log corresponds to a table allocation:

local data = {}

Common things

At the moment the only common aspect between all but one of these reports is that seemingly whenever the blocked action occurs, the client is in a state where the debugstack API is locked down and made to return a nil value.

We know this restriction applies during execution of __gc finalizers, but no reported cases have addon code making use of these. The other possibility is aspects of scenescript lockdown are going awry, as a number of reports have noted the issue occurs more frequently (or only at all) in Valdrakken.

Action blocked because of... table creation?

The following taint log supplied by @plusmouse doesn't name what action was blocked. The source line being blamed is a return statement where a table is constructed: https://github.com/Auctionator/Auctionator/blob/040975cfccda96a132a4dfbcae533f227fe3d9ca/Source_Mainline/Utilities/ItemInfoFromLocation.lua#L29

  return {
    itemKey = itemKey,
    itemLink = itemLink,
    count = itemCount,
    iconTexture = icon,
    itemType = itemType,
    location = location,
    quality = quality,
    classId = classID,
    auctionable = C_AuctionHouse.IsSellItemValid(location, false),
    bagListing = quality ~= Enum.ItemQuality.Poor or Auctionator.Utilities.IsEquipment(classID),
  }
9/21 14:41:36.519  An action was blocked because of taint from Auctionator - 
9/21 14:41:36.519      Interface/AddOns/Auctionator/Source_Mainline/Utilities/ItemInfoFromLocation.lua:29 ItemInfoFromLocation()
9/21 14:41:36.519      Interface/AddOns/Auctionator/Source/Tabs/DataProviders/Bag.lua:63 Frame:LoadBagData()
9/21 14:41:36.519      Interface/AddOns/Auctionator/Source/Tabs/DataProviders/Bag.lua:13 Frame:Reload()
9/21 14:41:36.519      Interface/AddOns/Auctionator/Source/Tabs/DataProviders/Bag.lua:93

Additionally there's another instance of this one - though not returning a table but assigning a newly constructed one: https://github.com/rossnichols/LibSerialize/blob/5a1cbe3d7df11ac432252f05d0ac9239d87fdbbc/LibSerialize.lua#L760

 value = {}
9/20 20:55:36.356  An action was blocked because of taint from PointBlankSniper - 
9/20 20:55:36.356      Interface/AddOns/PointBlankSniper/Libs/LibSerialize/LibSerialize.lua:760
9/20 20:55:36.356      Interface/AddOns/PointBlankSniper/Libs/LibSerialize/LibSerialize.lua:765
9/20 20:55:36.356      Interface/AddOns/PointBlankSniper/Libs/LibSerialize/LibSerialize.lua:807 _ReadPair()
9/20 20:55:36.356      Interface/AddOns/PointBlankSniper/Libs/LibSerialize/LibSerialize.lua:749
9/20 20:55:36.356      Interface/AddOns/PointBlankSniper/Libs/LibSerialize/LibSerialize.lua:1351
9/20 20:55:36.356      pcall()
9/20 20:55:36.356      Interface/AddOns/PointBlankSniper/Libs/LibSerialize/LibSerialize.lua:1362 Deserialize()

Action blocked because of... string concatenation?

The following taint log supplied by @glassleo doesn't name what action was blocked. The source line in question is the following from this addon - note that the committed version of the code doesn't quite match what was used in game; line 146 in the taint log corresponds to line 144 in this commit: https://github.com/glassleo/ZigiAuras/blob/8dced36290b781b317141b0004a54f16222f7b27/!ZigiAuras/ZigiAuras.lua#L144

tstr = tstr .. c
9/21 16:04:39.873  An action was blocked because of taint from !ZigiAuras - 
9/21 16:04:39.873      Interface/AddOns/!ZigiAuras/ZigiAuras.lua:146 Transliterate()
9/21 16:04:39.873      return function():3
9/21 16:04:39.873      xpcall()
9/21 16:04:39.873      Interface/AddOns/WeakAuras/WeakAuras.lua:4579 RunCustomTextFunc()
9/21 16:04:39.873      Interface/AddOns/WeakAuras/RegionTypes/Text.lua:255 ?()
9/21 16:04:39.873      Interface/AddOns/WeakAuras/SubscribableObject.lua:90 Notify()
9/21 16:04:39.873      Interface/AddOns/WeakAuras/RegionTypes/RegionPrototype.lua:641

Action blocked because of... a for ... in iterator?

A number of random addons are getting blamed for blocked actions in for .. in iterators - with some of these confirmed to just be using pairs/next as the iterator function. An example from TSM:

for itemString, state in pairs(private.pendingItems) do
9/20 19:33:29.666  An action was blocked because of taint from TradeSkillMaster - (for generator)()
9/20 19:33:29.666      Interface/AddOns/TradeSkillMaster/LibTSM/Service/ItemInfo.lua:1178 _callback()
9/20 19:33:29.666      Interface/AddOns/TradeSkillMaster/LibTSM/Util/Delay.lua:100 value()
9/20 19:33:29.666      Interface/AddOns/TradeSkillMaster/External/LibTSMClass/LibTSMClass.lua:332 _CheckIfDone()
9/20 19:33:29.666      Interface/AddOns/TradeSkillMaster/LibTSM/Util/Delay.lua:123

And one blaming WeakAuras - no taint log, unfortunately:

image

Action blocked when... resuming a coroutine?

This one is a bit special - where all the others occurred in states where stack traces weren't permitted (debugstack() returned nil), this one didn't run into that restriction. This reportedly occurred quite often while in Valdrakken.

1x [ADDON_ACTION_FORBIDDEN] AddOn 'ZGV-dev' tried to call the protected function 'resume()'.

Stack:
!BugGrabber/BugGrabber.lua:521: in function <:521>
[C code]: ?
ZGV-dev/ZygorGuidesViewer.lua:998: in function 'StartupStep'
ZGV-dev/MasterFrame.lua:7: in function <:5>
doadin commented 9 months ago

This seems to be happening on Classic as well. 1.14.4.51395 . As far as I can tell.

doadin commented 9 months ago

sorry for another post but it does NOT seem to happen on wrath classic 3.4.2.50664. idk if that is helpful in any way but thought id mention in case it is.

DFortun81 commented 9 months ago

The AllTheThings addon has received error reports for the for-generator, resume, and string concatenation errors mentioned in this thread as well. We've instructed folks to ignore the errors as they go away (sometimes) with a /reload, but an actual fix on your end would be swell. The player experience is definitely not great when they think that every addon in the game is broken when, in fact, they aren't.

Tequima commented 9 months ago

Not sure if this is related, but just got an Action Forbidden from tdBattleScript whilst mid-way through a pet battle with Jeremy Feasel in Darkmoon Faire 2x [ADDON_ACTION_FORBIDDEN] AddOn 'tdBattlePetScript' tried to call the protected function 'UNKNOWN()'. [string "@!BugGrabber/BugGrabber.lua"]:480: in function <!BugGrabber/BugGrabber.lua:480>

string "=[C]": in function UseContainerItem' [string "@FrameXML/ContainerFrame.lua"]:1384: in functionContainerFrameItemButton_OnClick' [string "@FrameXML/ContainerFrame.lua"]:1435: in function <FrameXML/ContainerFrame.lua:1423>

paradisewoods commented 9 months ago

This happened to me in Exile's Reach, as well, through CinematicCanceler (which admittedly is LONG out of date, but that addon is causing these errors elsewhere as well. Just wanted to add that Exile's Reach sees these issues). I don't recall if ArkInventory, VuhDo, or Auctionator also triggered it out there or not. These are the only 4 addons I run that trigger it (so far).

glassleo commented 9 months ago

I'm still getting 1-2 popups within the first 5 minutes of logging in that a random addon has done something forbidden (usually WeakAuras). Every time I log in. Are we just living with this or is this a me thing where it happens constantly all the time?

This happened to me in Exile's Reach, as well, through CinematicCanceler (which admittedly is LONG out of date, but that addon is causing these errors elsewhere as well. Just wanted to add that Exile's Reach sees these issues). I don't recall if ArkInventory, VuhDo, or Auctionator also triggered it out there or not. These are the only 4 addons I run that trigger it (so far).

Every time I cancel a cinematic via Leatrix Plus (which is not out of date) I get the annoying popup.

hollo6 commented 9 months ago

I'm still getting 1-2 popups within the first 5 minutes of logging in that a random addon has done something forbidden (usually WeakAuras). Every time I log in. Are we just living with this or is this a me thing where it happens constantly all the time?

This is happening to me too constantly, every time I log in or zone in to Valdrakken, I get the popup and a LUA error, usually blaming ArkInventory or WeakAuras, sometimes Prat or Postal or whatever is doing something, anything, at that moment.

InfusOnWoW commented 9 months ago

@Meorawr any news on this? We get questions every day from confussed users on the weakauras discord, whose taint logs point to clearly bogus places.

Meorawr commented 9 months ago

@Meorawr any news on this? We get questions every day from confussed users on the weakauras discord, whose taint logs point to clearly bogus places.

It's been reproduced internally and is being investigated.

pouljin commented 9 months ago

Seems to be tied to valdrakken. I don't get it anywhere else. But I get it several times a session from random addons there.

glassleo commented 9 months ago

Yep there's definitely something with Valdrakken.

Ghostopheles commented 9 months ago

Valdrakken has the correct conditions to cause the issue more frequently - it's not the cause though.

And some people say dragons are the good guys... 🤠

Shauren commented 8 months ago

10.1.7.51754 might have changed something here, I'm no longer getting action blocked popups on King's Rest cinematic (that was the most consistent reproduction, 100% of the time)

eltreum0 commented 8 months ago

I still get the ClearTarget taint

Meorawr commented 8 months ago

I'll mark this as fixed in 10.1.7.51754 once a few more people chime in and confirm the issue isn't occuring anymore - I at least can't reproduce it with the originally attached test case addon.

paradisewoods commented 8 months ago

So far it seems quiet. Cautiously optimistic here.

glassleo commented 8 months ago

I also have not seen any errors the past few days! :)

hollo6 commented 8 months ago

Since 10.1.7.51754, I seem to be not getting the error popups in Valdrakken for random nonsense functions, also CancelScene() is functioning OK again.

pouljin commented 8 months ago

Still saw it happen in 3 different random addons in valdraken this morning.

ascott18 commented 7 months ago

Still getting user reports of blocked actions when resuming a coroutine with no usable information in the stack trace as to where the blocked action actually occurred. "Last hotfix" is in reference to the hotfix that blocked range check functions in combat.

image

doadin commented 7 months ago

This apparently still happening in classic wow. Still getting reports.

Meorawr commented 7 months ago

If you mean Wrath, that isn't surprising - I doubt it's had a hotfix to resolve the underlying issue.

Re: the other "latest hotfix" report I'm waiting to hear that this is really a thing from >1 person as so far the original test case that reliably triggered it apparently works fine now. Certainly not impossible this is a regression with a slightly different profile, but this is the sole report I've seen of the issue since the hotfix.

doadin commented 7 months ago

i mean classic era 1.15.0.52212 .

Ghostopheles commented 7 months ago

If you mean Wrath, that isn't surprising - I doubt it's had a hotfix to resolve the underlying issue.

Re: the other "latest hotfix" report I'm waiting to hear that this is really a thing from >1 person as so far the original test case that reliably triggered it apparently works fine now. Certainly not impossible this is a regression with a slightly different profile, but this is the sole report I've seen of the issue since the hotfix.

I still have been unable to repro this on 10.2.0.52188 (or 10.2.5.52206) whereas previously I could trigger it reliably it on every attempt. That error specifically is interesting but until someone else reports it... 🤷

doadin commented 7 months ago

3x [ADDON_ACTION_BLOCKED] AddOn '' tried to call the protected function 'CancelUnitBuff()'. [string "@!BugGrabber/BugGrabber.lua"]:481: in function <!BugGrabber/BugGrabber.lua:481> [string "=[C]"]: in function CancelUnitBuff' [string "@FrameXML/BuffFrame.lua"]:309: in functionBuffButton_OnClick'

Locals: _ = Frame { RegisterEvent = defined @!BugGrabber/BugGrabber.lua:487 0 = UnregisterEvent = defined @!BugGrabber/BugGrabber.lua:487 SetScript = defined @!BugGrabber/BugGrabber.lua:487 } event = "ADDON_ACTION_BLOCKED" events =

{ ADDON_ACTION_BLOCKED = defined @!BugGrabber/BugGrabber.lua:553 ADDON_ACTION_FORBIDDEN = defined @!BugGrabber/BugGrabber.lua:553 PLAYER_LOGIN = defined @!BugGrabber/BugGrabber.lua:547 LUA_WARNING = defined @!BugGrabber/BugGrabber.lua:562 ADDON_LOADED = defined @!BugGrabber/BugGrabber.lua:507 }

of course the addon mentioned does not call that function at all. Also it only happens when tryinng to right click a buff in combat. as far as I know.

Meorawr commented 7 months ago

That just means you've got an addon installed that's tainted the default buff frames and is entirely unrelated to this issue.

doadin commented 7 months ago

@Meorawr I only have 2 addons enabled both I am author of and neither touch the default buff frames.

funkydude commented 7 months ago

This isn't a discussion forum. If you don't understand what this bug is reporting, discuss it on discord, don't derail it.