NeatPlates

NeatPlates

7M Downloads

Script ran too long (game freezing)

zaphon opened this issue ยท 3 comments

commented

What version of the game you are experiencing the issue with:
Retail

Describe the bug
Tanking dungeons today (leveling toons), keep getting freezes and they tie back to 2 errors I'm getting with

1x ...nterface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:468: script ran too long
[string "@Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua"]:468: in function `UpdatePoints'
[string "@Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua"]:376: in function `Expire'
[string "@Interface/AddOns/NeatPlatesWidgets/WidgetCore.lua"]:61: in function <Interface/AddOns/NeatPlatesWidgets/WidgetCore.lua:52>

Locals:
(*temporary) = Frame {
 0 = <userdata>
 UpdatePoints = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:418
 _Hide = <function> defined =[C]:-1
 guid = "Creature-0-4216-2287-16184-167892-00037171E6"
 Update = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:471
 Points = <table> {
 }
 UpdateContext = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:484
 Hide = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:573
}
(*temporary) = <table> {
 1 = <table> {
 }
 2 = <table> {
 }
 3 = <table> {
 }
 4 = <table> {
 }
 5 = <table> {
 }
 6 = <table> {
 }
}
(*temporary) = 6
(*temporary) = 16
(*temporary) = -8
(*temporary) = <table> {
 1 = 0
 2 = 0
 3 = 0
 4 = 0
 5 = 0
 6 = 0
}
(*temporary) = <function> defined =[C]:-1
(*temporary) = <table> {
 1 = <table> {
 }
 2 = <table> {
 }
 3 = <table> {
 }
 4 = <table> {
 }
 5 = <table> {
 }
 6 = <table> {
 }
}
(*temporary) = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:434
(*temporary) = "script ran too long"
GetPlayerPower = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:313
CalculatePointSpacing = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:355
CreateResourceIcon = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:380
GetResourceTexture = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:327
PolledHideIn = <function> defined @Interface/AddOns/NeatPlatesWidgets/WidgetCore.lua:78

and

13x ...nterface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:93: attempt to perform arithmetic on local 'start' (a nil value)
[string "@Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua"]:93: in function <...nterface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:65>
[string "=(tail call)"]: ?
[string "@Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua"]:421: in function `UpdatePoints'
[string "@Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua"]:376: in function `Expire'
[string "@Interface/AddOns/NeatPlatesWidgets/WidgetCore.lua"]:61: in function <Interface/AddOns/NeatPlatesWidgets/WidgetCore.lua:52>

Locals:
self = <table> {
 GetPower = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:65
 POWER = 5
 POINT = "DK-Rune"
}
points = <table> {
}
runeMap = <table> {
 2 = "Frost"
 RUNETYPE_CHROMATIC = "Unholy"
 3 = "Unholy"
 RUNETYPE_BLOOD = "Blood"
 RUNETYPE_FROST = "Frost"
 4 = "Death"
 RUNETYPE_DEATH = "Death"
 1 = "Blood"
}
runeOrder = <table> {
 1 = 1
 2 = 2
 3 = 3
 4 = 4
 5 = 5
 6 = 6
}
(for generator) = <function> defined =[C]:-1
(for state) = <table> {
 1 = 1
 2 = 2
 3 = 3
 4 = 4
 5 = 5
 6 = 6
}
(for control) = 1
_ = 1
i = 1
point = <table> {
 EXPIRATION = 0
 ICON = "DK-Rune"
 DURATION = 0
 STATE = "Off"
}
start = nil
duration = nil
runeReady = nil
(*temporary) = "string"
(*temporary) = "DK-Rune"
(*temporary) = "string"
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to perform arithmetic on local 'start' (a nil value)"
getPointIcon = <function> defined @Interface/AddOns/NeatPlatesWidgets/ResourceWidget.lua:51

commented

This should be fixed in the latest release(v426).

It's really odd that it doesn't manage to get a rune to compare duration against, but I've added an extra check to make sure it actually gets a rune instead of just assuming.

As for the "Scrip ran too long" issue, I've removed the "Expiration" function that it seems to stem from. It shouldn't be needed as it should function properly without it, but it just existed to make sure rune states don't get stuck. That should hopefully fix the issue altogether. But if you notice any issues with runes getting stuck I would love to know.

commented

Thanks, will check it out and let you know. I was able to reproduce it really rapidly on my DK in dungeons.

commented

This issue is stale because it has been open for 90 days with no activity. If you feel the issue is still relevant, please leave a comment to prevent the issue from being closed in 30 days