Errors in CompactUnitFrame.lua

I’ve been sitting inside the the Follower version of Operation: Floodgate, tinkering with my UI, and a few times now I’ve - seemingly at random - seen an explosion of LUA errors. The biggest offender seems to be

Blizzard_UnitFrame/Shared/CompactUnitFrame.lua:1179: attempt to compare local 'health' (a secret value)

This one :backhand_index_pointing_up: , once it gets going, generates a few errors per second, and doesn’t stop (until I reload UI). I think the most recent time it happened, it also coincided with one of my action bars disappearing - I tried dragging an ability to it, and it was just not there.

In addition to it, there’s a couple of other similar errors coming from the same file:

Blizzard_UnitFrame/Shared/CompactUnitFrame.lua:1151: attempt to compare local 'maxHealth' (a secret value)
Blizzard_UnitFrame/Shared/CompactUnitFrame.lua:1026: attempt to perform boolean test on local 'checkedRange' (a secret value)

I don’t know if dumping the errors is useful, but here they are:

8313x ...ddOns/Blizzard_UnitFrame/Shared/CompactUnitFrame.lua:1179: attempt to compare local 'health' (a secret value)
[Blizzard_UnitFrame/Shared/CompactUnitFrame.lua]:1179: in function 'CompactUnitFrame_UpdateHealPrediction'
[Blizzard_UnitFrame/Shared/CompactUnitFrame.lua]:240: in function <...ddOns/Blizzard_UnitFrame/Shared/CompactUnitFrame.lua:224>

Locals:
frame = CompactPartyFrameMember1 {
 dispelDebuffFrames = <table> {
 }
 DispelOverlay = Frame {
 }
 DispelOverlayAuraOffset = 0
 Debuff2 = CompactPartyFrameMember1Debuff2 {
 }
 maxDispelDebuffs = 3
 powerBar = CompactPartyFrameMember1PowerBar {
 }
 privateAuraBorderScale = 1.800000
 updateAllEvent = "GROUP_ROSTER_UPDATE"
 myHealPrediction = CompactPartyFrameMember1MyHealPrediction {
 }
 CenterDefensiveBuff = Button {
 }
 Debuff1 = CompactPartyFrameMember1Debuff1 {
 }
 groupType = 4
 overHealAbsorbGlow = CompactPartyFrameMember1OverHealAbsorbGlow {
 }
 newUnit = true
 myHealAbsorbOverlay = CompactPartyFrameMember1MyHealAbsorbOverlay {
 }
 totalAbsorbOverlay = CompactPartyFrameMember1TotalAbsorbOverlay {
 }
 unit = "player"
 unitExists = true
 aurasDirty = false
 dispels = <table> {
 }
 maxBuffs = 6
 editModeStatus = "IncomingSummonPending"
 displayedUnit = "player"
 debuffs = <table> {
 }
 PrivateAuraAnchor4 = Frame {
 }
 privateAuraSize = 29.700000
 background = CompactPartyFrameMember1Background {
 }
 IsPingable = true
 healthBar = CompactPartyFrameMember1HealthBar {
 }
 overAbsorbGlow = CompactPartyFrameMember1OverAbsorbGlow {
 }
 PrivateAuraAnchor5 = Frame {
 }
 PrivateAuraAnchors = <table> {
 }
 totalAbsorb = CompactPartyFrameMember1TotalAbsorb {
 }
 name = CompactPartyFrameMember1Name {
 }
 aggroHighlight = CompactPartyFrameMember1AggroHighlight {
 }
 PrivateAuraAnchor3 = Frame {
 }
 myHealAbsorbRightShadow = CompactPartyFrameMember1MyHealAbsorbRightShadow {
 }
 healPredictionDirty = true
 selectionHighlight = CompactPartyFrameMember1SelectionHighlight {
 }
 Debuff3 = CompactPartyFrameMember1Debuff3 {
 }
 myHealAbsorbLeftShadow = CompactPartyFrameMember1MyHealAbsorbLeftShadow {
 }
 debuffFrames = <table> {
 }
 PrivateAuraAnchor2 = Frame {
 }
 bigDefensives = <table> {
 }
 buffs = <table> {
 }
 dispelsChanged = false
 needsUpdate = true
 statusText = CompactPartyFrameMember1StatusText {
 }
 inVehicle = false
 debuffsChanged = false
 roleIcon = CompactPartyFrameMember1RoleIcon {
 }
 otherHealPrediction = CompactPartyFrameMember1OtherHealPrediction {
 }
 PrivateAuraAnchor1 = Frame {
 }
 optionTable = <table> {
 }
 isLootObject = false
 TempMaxHealthLoss = CompactPartyFrameMember1TempMaxHealthLoss {
 }
 hideCastbar = false
 powerBarUsedHeight = 8
 outOfRange = <no value>
 myHealAbsorb = CompactPartyFrameMember1MyHealAbsorb {
 }
 buffsChanged = false
 maxDebuffs = 3
 centerStatusIcon = CompactPartyFrameMember1CenterStatusIcon {
 }
 readyCheckIcon = CompactPartyFrameMember1ReadyCheckIcon {
 }
 buffFrames = <table> {
 }
}
_ = <no value>
maxHealth = <no value>
health = <no value>
myIncomingHeal = <no value>
allIncomingHeal = <no value>
totalAbsorb = <no value>
myCurrentHealAbsorb = <no value>
(*temporary) = "player"
(*temporary) = <no value>
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to compare local 'health' (a secret value)"
MAX_INCOMING_HEAL_OVERFLOW = 1.050000

1x ...ddOns/Blizzard_UnitFrame/Shared/CompactUnitFrame.lua:1151: attempt to compare local 'maxHealth' (a secret value)
[Blizzard_UnitFrame/Shared/CompactUnitFrame.lua]:1151: in function 'CompactUnitFrame_UpdateHealPrediction'
[Blizzard_UnitFrame/Shared/CompactUnitFrame.lua]:240: in function <...ddOns/Blizzard_UnitFrame/Shared/CompactUnitFrame.lua:224>

Locals:
frame = CompactPartyFrameMember1 {
 dispelDebuffFrames = <table> {
 }
 DispelOverlay = Frame {
 }
 DispelOverlayAuraOffset = 0
 Debuff2 = CompactPartyFrameMember1Debuff2 {
 }
 maxDispelDebuffs = 3
 powerBar = CompactPartyFrameMember1PowerBar {
 }
 privateAuraBorderScale = 1.800000
 updateAllEvent = "GROUP_ROSTER_UPDATE"
 myHealPrediction = CompactPartyFrameMember1MyHealPrediction {
 }
 CenterDefensiveBuff = Button {
 }
 Debuff1 = CompactPartyFrameMember1Debuff1 {
 }
 groupType = 4
 overHealAbsorbGlow = CompactPartyFrameMember1OverHealAbsorbGlow {
 }
 newUnit = true
 myHealAbsorbOverlay = CompactPartyFrameMember1MyHealAbsorbOverlay {
 }
 totalAbsorbOverlay = CompactPartyFrameMember1TotalAbsorbOverlay {
 }
 unit = "player"
 unitExists = true
 aurasDirty = false
 dispels = <table> {
 }
 maxBuffs = 6
 editModeStatus = "IncomingSummonPending"
 displayedUnit = "player"
 debuffs = <table> {
 }
 PrivateAuraAnchor4 = Frame {
 }
 privateAuraSize = 29.700000
 background = CompactPartyFrameMember1Background {
 }
 IsPingable = true
 healthBar = CompactPartyFrameMember1HealthBar {
 }
 overAbsorbGlow = CompactPartyFrameMember1OverAbsorbGlow {
 }
 PrivateAuraAnchor5 = Frame {
 }
 PrivateAuraAnchors = <table> {
 }
 totalAbsorb = CompactPartyFrameMember1TotalAbsorb {
 }
 name = CompactPartyFrameMember1Name {
 }
 aggroHighlight = CompactPartyFrameMember1AggroHighlight {
 }
 PrivateAuraAnchor3 = Frame {
 }
 myHealAbsorbRightShadow = CompactPartyFrameMember1MyHealAbsorbRightShadow {
 }
 healPredictionDirty = true
 selectionHighlight = CompactPartyFrameMember1SelectionHighlight {
 }
 Debuff3 = CompactPartyFrameMember1Debuff3 {
 }
 myHealAbsorbLeftShadow = CompactPartyFrameMember1MyHealAbsorbLeftShadow {
 }
 debuffFrames = <table> {
 }
 PrivateAuraAnchor2 = Frame {
 }
 bigDefensives = <table> {
 }
 buffs = <table> {
 }
 dispelsChanged = false
 needsUpdate = true
 statusText = CompactPartyFrameMember1StatusText {
 }
 inVehicle = false
 debuffsChanged = false
 roleIcon = CompactPartyFrameMember1RoleIcon {
 }
 otherHealPrediction = CompactPartyFrameMember1OtherHealPrediction {
 }
 PrivateAuraAnchor1 = Frame {
 }
 optionTable = <table> {
 }
 isLootObject = false
 TempMaxHealthLoss = CompactPartyFrameMember1TempMaxHealthLoss {
 }
 hideCastbar = false
 powerBarUsedHeight = 8
 outOfRange = <no value>
 myHealAbsorb = CompactPartyFrameMember1MyHealAbsorb {
 }
 buffsChanged = false
 maxDebuffs = 3
 centerStatusIcon = CompactPartyFrameMember1CenterStatusIcon {
 }
 readyCheckIcon = CompactPartyFrameMember1ReadyCheckIcon {
 }
 buffFrames = <table> {
 }
}
_ = <no value>
maxHealth = <no value>
health = <no value>
(*temporary) = CompactPartyFrameMember1HealthBar {
}
(*temporary) = <no value>
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to compare local 'maxHealth' (a secret value)"
MAX_INCOMING_HEAL_OVERFLOW = 1.050000
2x ...ddOns/Blizzard_UnitFrame/Shared/CompactUnitFrame.lua:1026: attempt to perform boolean test on local 'checkedRange' (a secret value)
[Blizzard_UnitFrame/Shared/CompactUnitFrame.lua]:1026: in function 'CompactUnitFrame_UpdateInRange'
[Blizzard_UnitFrame/Shared/CompactUnitFrame.lua]:457: in function 'func'
[Blizzard_UnitFrame/Shared/CompactRaidGroup.lua]:29: in function 'CompactRaidGroup_ApplyFunctionToAllFrames'
[Blizzard_UnitFrame/Shared/CompactPartyFrame.lua]:40: in function 'applyFunc'
[Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua]:138: in function 'ApplyToFrames'
[Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua]:150: in function 'ApplyMultipleToFrames'
[Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua]:29: in function <...actRaidFrames/Blizzard_CompactRaidFrameContainer.lua:28>
[C]: ?
[Blizzard_SharedXMLBase/CallbackRegistry.lua]:210: in function <...eBlizzard_SharedXMLBase/CallbackRegistry.lua:209>
[C]: ?
[Blizzard_SharedXMLBase/CallbackRegistry.lua]:213: in function 'TriggerEvent'
[Blizzard_EditMode/Shared/EditModeManager.lua]:108: in function 'ExitEditMode'
...[C]: in function 'Hide'
[Blizzard_UIParentPanelManager/Shared/UIParentPanelManager.lua]:445: in function 'SetUIPanel'
[Blizzard_UIParentPanelManager/Shared/UIParentPanelManager.lua]:476: in function 'MoveUIPanel'
[Blizzard_UIParentPanelManager/Shared/UIParentPanelManager.lua]:530: in function 'HideUIPanelImplementation'
[Blizzard_UIParentPanelManager/Shared/UIParentPanelManager.lua]:489: in function 'HideUIPanel'
[Blizzard_UIParentPanelManager/Shared/UIParentPanelManager.lua]:137: in function <...UIParentPanelManager/Shared/UIParentPanelManager.lua:128>
[C]: in function 'SetAttribute'
[Blizzard_UIParentPanelManager/Shared/UIParentPanelManager.lua]:870: in function 'HideUIPanel'
[Blizzard_EditMode/Shared/EditModeManager.lua]:42: in function 'onCloseCallback'
[Blizzard_SharedXML/Mainline/SharedUIPanelTemplates.lua]:143: in function <...izzard_SharedXML/Mainline/SharedUIPanelTemplates.lua:138>

Locals:
frame = CompactPartyFrameMember1 {
 dispelDebuffFrames = <table> {
 }
 DispelOverlay = Frame {
 }
 DispelOverlayAuraOffset = 0
 Debuff2 = CompactPartyFrameMember1Debuff2 {
 }
 maxDispelDebuffs = 3
 powerBar = CompactPartyFrameMember1PowerBar {
 }
 privateAuraBorderScale = 1.800000
 updateAllEvent = "GROUP_ROSTER_UPDATE"
 myHealPrediction = CompactPartyFrameMember1MyHealPrediction {
 }
 CenterDefensiveBuff = Button {
 }
 Debuff1 = CompactPartyFrameMember1Debuff1 {
 }
 groupType = 4
 overHealAbsorbGlow = CompactPartyFrameMember1OverHealAbsorbGlow {
 }
 newUnit = true
 myHealAbsorbOverlay = CompactPartyFrameMember1MyHealAbsorbOverlay {
 }
 totalAbsorbOverlay = CompactPartyFrameMember1TotalAbsorbOverlay {
 }
 unit = "player"
 unitExists = true
 aurasDirty = true
 dispels = <table> {
 }
 maxBuffs = 6
 editModeStatus = "IncomingSummonPending"
 displayedUnit = "player"
 debuffs = <table> {
 }
 PrivateAuraAnchor4 = Frame {
 }
 privateAuraSize = 29.700000
 background = CompactPartyFrameMember1Background {
 }
 IsPingable = true
 healthBar = CompactPartyFrameMember1HealthBar {
 }
 overAbsorbGlow = CompactPartyFrameMember1OverAbsorbGlow {
 }
 PrivateAuraAnchor5 = Frame {
 }
 PrivateAuraAnchors = <table> {
 }
 totalAbsorb = CompactPartyFrameMember1TotalAbsorb {
 }
 name = CompactPartyFrameMember1Name {
 }
 aggroHighlight = CompactPartyFrameMember1AggroHighlight {
 }
 PrivateAuraAnchor3 = Frame {
 }
 myHealAbsorbRightShadow = CompactPartyFrameMember1MyHealAbsorbRightShadow {
 }
 healPredictionDirty = true
 selectionHighlight = CompactPartyFrameMember1SelectionHighlight {
 }
 Debuff3 = CompactPartyFrameMember1Debuff3 {
 }
 myHealAbsorbLeftShadow = CompactPartyFrameMember1MyHealAbsorbLeftShadow {
 }
 debuffFrames = <table> {
 }
 PrivateAuraAnchor2 = Frame {
 }
 bigDefensives = <table> {
 }
 buffs = <table> {
 }
 dispelsChanged = false
 needsUpdate = true
 statusText = CompactPartyFrameMember1StatusText {
 }
 inVehicle = false
 debuffsChanged = false
 roleIcon = CompactPartyFrameMember1RoleIcon {
 }
 otherHealPrediction = CompactPartyFrameMember1OtherHealPrediction {
 }
 PrivateAuraAnchor1 = Frame {
 }
 optionTable = <table> {
 }
 isLootObject = false
 TempMaxHealthLoss = CompactPartyFrameMember1TempMaxHealthLoss {
 }
 hideCastbar = false
 powerBarUsedHeight = 8
 outOfRange = <no value>
 myHealAbsorb = CompactPartyFrameMember1MyHealAbsorb {
 }
 buffsChanged = false
 maxDebuffs = 3
 centerStatusIcon = CompactPartyFrameMember1CenterStatusIcon {
 }
 readyCheckIcon = CompactPartyFrameMember1ReadyCheckIcon {
 }
 buffFrames = <table> {
 }
}
inRange = <no value>
checkedRange = <no value>
(*temporary) = <no value>
(*temporary) = <no value>
(*temporary) = nil
(*temporary) = "attempt to perform boolean test on local 'checkedRange' (a secret value)"
1 Like

I’ve been getting similiar errors happening (random which element prompts it) rearranging the default blizzard bars in editmode. It reminders me of the problems that used to occur with how Blizzard handled snapping elements to each.

EDIT: looks like fixes for these, and others like them, might be on the immediate radar:

  • Fixed an issue where the C_UnitAuras.AddPrivateAuraAppliedSound API caused Lua errors at the time of the sound playing.
  • Fixed various issues with secrets in tooltips causing Lua errors.
  • Fixed an issue causing secret-related Lua errors when addons created dropdowns.

Yeah, I thought about reporting each one, but it feels like there’s over a dozen of errors, all from different components (or different places within the same component), many of which have to do with inability to read secret values. Given how many and how regularly I get those, it feels like reporting them is unnecessary, Blizz must be getting those inhouse too.

I have the sames errors when i open the edit mode but it happens only when i have PhoenixCastBars enabled. When i disable it, i don’t have any errors.