TellMeWhen

TellMeWhen

25M Downloads

Invisible Profile Groups after WoW Crash

Closed this issue ยท 3 comments

commented

WoW Version

Vanilla

TellMeWhen Version

11.2.7

Describe the bug

After crashing WoW while attempting to view "groups" tab in Tellmewhen edit mode, profile groups on new characters are no longer visible. Golbal groups are visible, but not profile groups. Even after attempting to import/copy profiles from other local characters, profile groups are not visible.
I've attempted troubleshooting by reinstalling via curseforge, deleting old addon and character data, then reinstalling, installing old versions of Tellmewhen, and clearing Windows temp files.
See below: working Tellmewhen on existing character with profile groups

Image Image Image

followed by broken Tellmewhen on new character, before and after importing/overwriting from existing character to new character (2 pictures).

Export Strings

^1^T^SGroups^T ^N1^T ^SScale^N1.75 ^SPoint^T ^Sy^N35 ^t^SLocked^B ^SGUID^STMW:group:1biJGWDZSfe0 ^SColumns^N7 ^SName^SUniversal ^SIcons^T ^N2^T ^SShowTimer^B ^SType^Scooldown ^SShowTimerText^B ^SName^SKick ^SManaCheck^B ^SConditions^T ^N1^T ^SType^SCASTING ^SUnit^Starget ^SLevel^N1 ^t^N2^T ^SType^SREACT ^SUnit^Starget ^SLevel^N1 ^t^Sn^N2 ^t^SClockGCD^B ^SStates^T ^N2^T ^SAlpha^N0.3 ^t^N3^T ^SAlpha^N0.6 ^t^N4^T ^SAlpha^N0 ^t^t^SRangeCheck^B ^SEnabled^B ^SDurationMax^N2 ^t^N7^T ^SShowTimer^B ^SType^Sitem ^SConditions^T ^N1^T ^SType^SHEALTH ^SOperator^S< ^SLevel^N35 ^t^N2^T ^SType^SDEBUFFSTACKS ^SName^SRecently~`Bandaged ^t^N3^T ^SType^SCOMBAT ^SLevel^N1 ^SPrtsBefore^N1 ^t^N4^T ^SType^STHREATSCALED ^SOperator^S< ^SUnit^Starget ^SAndOr^SOR ^SLevel^N90 ^t^N5^T ^SType^SDEBUFFSTACKS ^SPrtsAfter^N1 ^SOperator^S> ^SUnit^Starget ^SAndOr^SOR ^SName^SGouge ^t^Sn^N5 ^t^SOnlyInBags^B ^SName^SHeavy~`Linen~`Bandage ^SClockGCD^B ^SEnabled^B ^t^t^SConditions^T ^N1^T ^SType^SALIVE ^t^Sn^N1 ^t^t^N2^T ^SScale^N1.35 ^SPoint^T ^Sx^F-4925811940315911 ^f-45^t ^SLocked^B ^SGUID^STMW:group:1biKRNt4ixiO ^SColumns^N5 ^SName^SAlt~`Spells ^SIcons^T ^N1^T ^SShowTimer^B ^SType^Scooldown ^SName^SEviscerate ^SConditions^T ^N1^T ^SType^SCOMBO ^SOperator^S>= ^SLevel^N2 ^t^N2^T ^SType^SCOMBO ^SOperator^S>= ^SLevel^N5 ^SPrtsBefore^N1 ^t^N3^T ^SType^SHEALTH ^SPrtsAfter^N1 ^SOperator^S< ^SUnit^Starget ^SAndOr^SOR ^SLevel^N30 ^t^Sn^N3 ^t^SEnabled^B ^SManaCheck^B ^SClockGCD^B ^SStates^T ^N4^T ^SAlpha^N0 ^t^t^SRangeCheck^B ^t^N3^T ^SShowTimer^B ^SType^Scooldown ^SName^SSlice~`and~`Dice ^SConditions^T ^N1^T ^SType^SCOMBO ^SOperator^S>= ^SLevel^N1 ^t^N2^T ^SType^SCOMBO ^SOperator^S>= ^SLevel^N2 ^SPrtsBefore^N1 ^t^N3^T ^SType^SGROUP2 ^SChecked^B ^SAndOr^SOR ^SBitFlags^N1 ^t^N4^T ^SType^SREACTIVE ^SPrtsAfter^N1 ^SLevel^N1 ^SName^SBackstab ^SAndOr^SOR ^t^N5^T ^SType^SBUFFDUR ^SOperator^S< ^SLevel^N1 ^SName^SSlice~`and~`Dice ^t^N6^T ^SType^SHEALTH ^SOperator^S>= ^SUnit^Starget ^SLevel^N30 ^SPrtsBefore^N1 ^t^N7^T ^SType^SCLASSIFICATION2 ^SChecked^B ^SUnit^Starget ^SAndOr^SOR ^SBitFlags^T ^Sminus^B ^Snormal^B ^t^SPrtsBefore^N1 ^t^N8^T ^SType^SGROUP2 ^SPrtsAfter^N1 ^SBitFlags^N2 ^t^N9^T ^SType^SGROUP2 ^SPrtsAfter^N1 ^SAndOr^SOR ^SBitFlags^N4 ^t^N10^T ^SType^SDEBUFFDUR ^SOperator^S< ^SUnit^Starget ^SLevel^N1.5 ^SName^SGouge ^t^Sn^N10 ^t^SEnabled^B ^SManaCheck^B ^SClockGCD^B ^SStates^T ^N4^T ^SAlpha^N0.3 ^t^t^t^t^SConditions^T ^N1^T ^SType^SALIVE ^t^N2^T ^SType^SALIVE ^SUnit^Starget ^t^N3^T ^SType^SREACT ^SUnit^Starget ^SLevel^N1 ^t^Sn^N3 ^t^t^N3^T ^SPoint^T ^Sy^F-8444250227389858 ^f-48^Spoint ^SLEFT^Sx ^F8444245614834659^f-47 ^t^SScale^N1.35 ^SRows^N2 ^SLocked^B ^SGUID^STMW:group:1biKcyl=90uL ^SColumns^N3 ^SName^SMovement~`Abilities ^SIcons^T ^N3^T ^SShowTimer^B ^SType^Scooldown ^SName^SStealth ^SShowTimerText^B ^SConditions^T ^N1^T ^SType^SBUFFSTACKS ^SName^SStealth ^t^N2^T ^SType^SCOMBAT ^SLevel^N1 ^t^Sn^N2 ^t^SClockGCD^B ^SStates^T ^N1^T ^SAlpha^N0.5 ^t^N2^T ^SAlpha^N0.2 ^t^t^SEnabled^B ^t^t^SConditions^T ^N1^T ^SType^SALIVE ^t^Sn^N1 ^t^t^N4^T ^SScale^N1.35 ^SPoint^T ^Sy^N-15 ^Spoint^STOP ^Sx^F-4925811298541716 ^f-45^t ^SLocked^B ^SGUID^STMW:group:1dEZ46qMKOig ^SColumns^N5 ^SName^SMelee ^SIcons^T ^N1^T ^SShowTimer^B ^SType^Scooldown ^SName^SSinister~`Strike ^SConditions^T ^N1^T ^SType^SENERGY_ABS ^SOperator^S>= ^SLevel^N60 ^t^N2^T ^SType^SCOMBO ^SOperator^S< ^SLevel^N5 ^t^N3^T ^SType^SDEBUFFDUR ^SOperator^S< ^SUnit^Starget ^SLevel^N1.5 ^SName^SGouge ^SPrtsBefore^N1 ^t^N4^T ^SType^SENERGY_ABS ^SPrtsAfter^N1 ^SOperator^S>= ^SAndOr^SOR ^SLevel^N90 ^t^Sn^N4 ^t^SEnabled^B ^SManaCheck^B ^SClockGCD^B ^SStates^T ^N3^T ^SAlpha^N0.6 ^t^N4^T ^SAlpha^N0 ^t^N102^T ^SAlpha^N0.2 ^t^t^SRangeCheck^B ^t^N3^T ^SShowTimer^B ^SType^Scooldown ^SShowTimerText^B ^SManaCheck^B ^SName^SRiposte ^SConditions^T ^N1^T ^SType^SREACTIVE ^SName^SRiposte ^t^Sn^N1 ^t^SClockGCD^B ^SStates^T ^N2^T ^SAlpha^N0.2 ^t^N4^T ^SAlpha^N0 ^t^t^SRangeCheck^B ^SEnabled^B ^t^N4^T ^SShowTimer^B ^SType^Scooldown ^SShowTimerText^B ^SManaCheck^B ^SName^SGouge ^SConditions^T ^N1^T ^SType^SDEBUFFSTACKS ^SUnit^Starget ^SName^SGarrote ^t^N2^T ^SType^SDEBUFFSTACKS ^SUnit^Starget ^SName^SRupture ^t^N3^T ^SType^SHEALTH ^SOperator^S< ^SLevel^N35 ^SPrtsBefore^N2 ^t^N4^T ^SType^SDEBUFFSTACKS ^SName^SRecently~`Bandaged ^t^N5^T ^SType^STHREATSCALED ^SPrtsAfter^N1 ^SOperator^S>= ^SUnit^Starget ^SLevel^N100 ^t^N6^T ^SType^SCASTING ^SUnit^Starget ^SLevel^N1 ^SPrtsBefore^N1 ^SAndOr^SOR ^t^N7^T ^SType^SSPELLCD ^SOperator^S> ^SName^SKick ^SPrtsBefore^N1 ^t^N8^T ^SType^SSPELL_LEARNED ^SPrtsAfter^N3 ^SLevel^N1 ^SName^SKick ^SAndOr^SOR ^t^Sn^N8 ^t^SClockGCD^B ^SStates^T ^N2^T ^SAlpha^N0.3 ^t^N3^T ^SAlpha^N0.6 ^t^N4^T ^SAlpha^N0 ^t^t^SRangeCheck^B ^SEnabled^B ^t^t^SConditions^T ^N1^T ^SType^SALIVE ^t^N2^T ^SType^SALIVE ^SUnit^Starget ^t^N3^T ^SType^SREACT ^SUnit^Starget ^SLevel^N1 ^t^N4^T ^SType^SBUFFSTACKS ^SName^SStealth ^t^N5^T ^SType^SREACTIVE ^SLevel^N1 ^SName^SBackstab ^t^Sn^N5 ^t^t^N5^T ^SScale^N1.35 ^SPoint^T ^Sy^N-90 ^Sx^N-140 ^t^SLocked^B ^SGUID^STMW:group:1dwnRCEKvdS3 ^SColumns^N5 ^SName^SStealth ^SIcons^T ^N1^T ^SShowTimer^B ^SType^Scooldown ^SName^SAmbush ^SConditions^T ^N1^T ^SType^SENERGY_ABS ^SOperator^S>= ^SLevel^N85 ^t^N2^T ^SType^SCOMBO ^SOperator^S< ^SLevel^N5 ^t^N3^T ^SType^SREACTIVE ^SName^SAmbush ^t^Sn^N3 ^t^SClockGCD^B ^SStates^T ^N3^T ^SAlpha^N0.6 ^t^t^SRangeCheck^B ^SEnabled^B ^t^N2^T ^SShowTimer^B ^SType^Scooldown ^SName^SGarrote ^SConditions^T ^N1^T ^SType^SENERGY_ABS ^SOperator^S>= ^SLevel^N60 ^t^N2^T ^SType^SCOMBO ^SOperator^S< ^SLevel^N5 ^t^Sn^N2 ^t^SEnabled^B ^SManaCheck^B ^SClockGCD^B ^SStates^T ^N3^T ^SAlpha^N0.6 ^t^N4^T ^SAlpha^N0 ^t^N102^T ^SAlpha^N0.2 ^t^t^SRangeCheck^B ^t^N3^T ^SShowTimer^B ^SType^Scooldown ^SName^SSap ^SEnabled^B ^SManaCheck^B ^SClockGCD^B ^SStates^T ^N1^T ^SAlpha^N0.7 ^t^N3^T ^SAlpha^N0.4 ^t^N4^T ^SAlpha^N0 ^t^t^SRangeCheck^B ^t^N5^T ^SShowTimer^B ^SType^Scooldown ^SName^SPick~`Pocket ^SClockGCD^B ^SStates^T ^N1^T ^SAlpha^N0.7 ^t^N3^T ^SAlpha^N0.4 ^t^t^SRangeCheck^B ^SEnabled^B ^t^t^SConditions^T ^N1^T ^SType^SALIVE ^t^N2^T ^SType^SALIVE ^SUnit^Starget ^t^N3^T ^SType^SREACT ^SUnit^Starget ^SLevel^N1 ^t^N4^T ^SType^SBUFFSTACKS ^SOperator^S> ^SName^SStealth ^t^Sn^N4 ^t^t^N6^T ^SScale^N1.35 ^SPoint^T ^Sy^N-60 ^Sx^N-140 ^t^SLocked^B ^SGUID^STMW:group:1eOhO1aZQTWT ^SColumns^N5 ^SName^SBackstab ^SIcons^T ^N1^T ^SShowTimer^B ^SType^Scooldown ^SName^SSinister~`Strike ^SConditions^T ^N1^T ^SType^SENERGY_ABS ^SOperator^S>= ^SLevel^N60 ^SPrtsBefore^N2 ^t^N2^T ^SType^SCOMBO ^SOperator^S< ^SLevel^N5 ^t^N3^T ^SType^STHREATSCALED ^SPrtsAfter^N1 ^SOperator^S>= ^SUnit^Starget ^SLevel^N100 ^t^N4^T ^SType^SSPELLCD ^SOperator^S>= ^SLevel^N1.5 ^SName^SGouge ^SPrtsBefore^N1 ^t^N5^T ^SType^SGROUP2 ^SChecked^B ^SPrtsAfter^N1 ^SAndOr^SOR ^SBitFlags^N1 ^t^N6^T ^SType^SDEBUFFSTACKS ^SPrtsAfter^N1 ^SUnit^Starget ^SName^SGouge ^t^N7^T ^SType^SENERGY_ABS ^SOperator^S>= ^SLevel^N90 ^SPrtsBefore^N1 ^SAndOr^SOR ^t^N8^T ^SType^SCOMBAT ^SPrtsAfter^N1 ^t^Sn^N8 ^t^SEnabled^B ^SManaCheck^B ^SClockGCD^B ^SStates^T ^N3^T ^SAlpha^N0.6 ^t^N4^T ^SAlpha^N0 ^t^N102^T ^SAlpha^N0.2 ^t^t^SRangeCheck^B ^t^N2^T ^SShowTimer^B ^SType^Scooldown ^SName^SBackstab ^SConditions^T ^N1^T ^SType^SCOMBO ^SOperator^S< ^SLevel^N5 ^t^N2^T ^SType^SUNITISUNIT ^SOperator^S< ^SUnit^Stargettarget ^SLevel^N1 ^SName^Splayer ^SPrtsBefore^N1 ^t^N3^T ^SType^SGROUP2 ^SAndOr^SOR ^SBitFlags^N1 ^SPrtsBefore^N1 ^t^N4^T ^SType^SDEBUFFSTACKS ^SPrtsAfter^N2 ^SOperator^S> ^SUnit^Starget ^SName^SGouge ^t^N5^T ^SType^SENERGY_ABS ^SOperator^S>= ^SLevel^N80 ^SPrtsBefore^N1 ^t^N6^T ^SType^SDEBUFFDUR ^SPrtsAfter^N1 ^SOperator^S< ^SUnit^Starget ^SAndOr^SOR ^SName^SGouge ^SLevel^N1.5 ^t^Sn^N6 ^t^SClockGCD^B ^SStates^T ^N3^T ^SAlpha^N0.6 ^t^N102^T ^SAlpha^N0.15 ^t^t^SRangeCheck^B ^SEnabled^B ^t^N4^T ^SShowTimer^B ^SType^Scooldown ^SShowTimerText^B ^SManaCheck^B ^SName^SGouge ^SConditions^T ^N1^T ^SType^SDEBUFFSTACKS ^SUnit^Starget ^SName^SGarrote ^t^N2^T ^SType^SDEBUFFSTACKS ^SUnit^Starget ^SName^SRupture ^t^N3^T ^SType^SHEALTH ^SOperator^S< ^SLevel^N35 ^SPrtsBefore^N2 ^t^N4^T ^SType^SDEBUFFSTACKS ^SName^SRecently~`Bandaged ^t^N5^T ^SType^STHREATSCALED ^SPrtsAfter^N1 ^SOperator^S>= ^SUnit^Starget ^SLevel^N100 ^t^N6^T ^SType^SCASTING ^SUnit^Starget ^SLevel^N1 ^SPrtsBefore^N1 ^SAndOr^SOR ^t^N7^T ^SType^SSPELLCD ^SOperator^S> ^SName^SKick ^SPrtsBefore^N1 ^t^N8^T ^SType^SSPELL_LEARNED ^SPrtsAfter^N2 ^SLevel^N1 ^SName^SKick ^SAndOr^SOR ^t^N9^T ^SType^SENERGY_ABS ^SOperator^S>= ^SLevel^N65 ^SPrtsBefore^N1 ^SAndOr^SOR ^t^N10^T ^SType^SBUFFDUR ^SOperator^S< ^SLevel^N3 ^SName^SSlice~`and~`Dice ^t^N11^T ^SType^SUNITISUNIT ^SPrtsAfter^N2 ^SOperator^S>= ^SUnit^Stargettarget ^SName^Splayer ^t^Sn^N11 ^t^SClockGCD^B ^SStates^T ^N2^T ^SAlpha^N0.3 ^t^N3^T ^SAlpha^N0.6 ^t^N4^T ^SAlpha^N0 ^t^t^SRangeCheck^B ^SEnabled^B ^t^t^SConditions^T ^N1^T ^SType^SALIVE ^t^N2^T ^SType^SALIVE ^SUnit^Starget ^t^N3^T ^SType^SREACT ^SUnit^Starget ^SLevel^N1 ^t^N4^T ^SType^SBUFFSTACKS ^SName^SStealth ^t^N5^T ^SType^SREACTIVE ^SName^SBackstab ^t^Sn^N5 ^t^t^t^SNumGroups^N6 ^SVersion^N11020701 ^t^N11020701^S~`~| ^Sprofile^SDoobiemon~`-~`Dreamscythe ^^
commented

Are you seeing any Lua errors? Make sure the Lua errors are enabled - BugGrabber and BugSack are a great, non-intrusive way to capture addon errors.

commented

Thanks for the fast reply. I attempted to get those two addons, but they weren't available via curseforge. I didn't receive any lua errors when the crash happened, or when attempting to fix issues. Are there any files I can provide from my computer that would help you troubleshoot?

Edit: Disregard my inability to get BugGrabber. I was running a VPN and it was giving Curseforge a hard time. Downloading now.

Edit 2: I've used BugGrabber and BugSack. Please see below

/buggrabber 1

Usage: /buggrabber <1-2>.
57x bad argument #2 to '?' (Usage: local id, name, description, icon, role, recommended, allowedForBoost, masterySpell1, masterySpell2 = GetSpecializationInfoForClassID(classID, index [, gender]))
[tail call]: ?
[C]: in function 'GetSpecializationInfoForClassID'
[TellMeWhen/Components/Core/Utils.lua]:1643: in function <TellMeWhen/Components/Core/Utils.lua:1640>
[TellMeWhen/Components/Core/Group.lua]:353: in function 'ShouldUpdateIcons'
[TellMeWhen/Components/Core/Group.lua]:394: in function 'Setup_Conditions'
[TellMeWhen/Components/Core/Group.lua]:478: in function <TellMeWhen/Components/Core/Group.lua:426>
[tail call]: ?
[C]: ?
[safecall Dispatcher[1]]:9: in function <[string "safecall Dispatcher[1]"]:5>
[tail call]: ?
[TellMeWhen/TellMeWhen.lua]:2662: in function 'UpdateNormally'
[TellMeWhen/TellMeWhen.lua]:2809: in function 'Update'
[TellMeWhen/TellMeWhen.lua]:2944: in function 'LockToggle'
[TellMeWhen/TellMeWhen.lua]:3062: in function '?'
[TellMeWhen/Lib/AceConsole-3.0-7/AceConsole-3.0.lua]:90: in function '?'
[Blizzard_ChatFrameBase/Classic/ChatFrame.lua]:2786: in function 'ChatEdit_ParseText'
[Blizzard_ChatFrameBase/Classic/ChatFrame.lua]:2438: in function 'ChatEdit_SendText'
[Blizzard_ChatFrameBase/Classic/ChatFrame.lua]:2474: in function 'ChatEdit_OnEnterPressed'
[*ChatFrame.xml:120_OnEnterPressed]:1: in function <[string "*ChatFrame.xml:120_OnEnterPressed"]:1>

Locals:

/buggrabber 2

6x TellMeWhen: bad argument #2 to '?' (Usage: local id, name, description, icon, role, recommended, allowedForBoost, masterySpell1, masterySpell2 = GetSpecializationInfoForClassID(classID, index [, gender]))
[TellMeWhen/Components/Core/Utils.lua]:453: in function 'Error'
[TellMeWhen/TellMeWhen.lua]:2754: in function <TellMeWhen/TellMeWhen.lua:2711>

Locals:
self = TMW {
 modules = <table> {
 }
 DS = <table> {
 }
 db = <table> {
 }
 ALLOW_LOCKDOWN_CONFIG = true
 operators = <table> {
 }
 COMMON = <table> {
 }
 TEXT = <table> {
 }
 EquivFullIDLookup = <table> {
 }
 InitializedDatabase = true
 name = "TellMeWhen"
 Defaults = <table> {
 }
 C = <table> {
 }
 BackupDate = "06:35:04 PM"
 SNIPPETS = <table> {
 }
 L = <table> {
 }
 OrderedTypes = <table> {
 }
 justifyVPoints = <table> {
 }
 Views = <table> {
 }
 CHANGELOG = "## v11.2.7
* Fix #2309 Additional assorted talent/spec errors on Classic Era.

## v11.2.6
* Fix #2307 C_SpecializationInfo.GetTalent: query.specializationIndex must be specified.

## v11.2.5
* New condition: Armor Repair Level - Checks the lowest durability percentage of any equipped gear.
* Meta Icons and Icon Shown conditions now use pure event-driven updates. This is made possible by dynamic, dependency-aware ordering of icon update checks. If you have circular dependencies between icons, you may find that some updates may be delayed by at least one update interval. 
* While Condition Set Passing and On Condition Set Passing triggers for notifications no longer evaluate while their icon's group is not shown/active. This now matches the behavior of all other notification triggers.
* Unit Conditions no longer evaluate while the icon that requested them is not shown/active.

## v11.2.4
* Fix Spells.lua:27: attempt to index field "SpellBookSpellBank" (a nil value)

## v11.2.3
* Fix missing Spell defaultModuleState = true
 CHANGELOG_LASTVER = "10.0.0"
 HELP = <table> {
 }
 UPD_INTV = 0.051000
 Locked = false
 NAMES = <table> {
 }
 GUIDToOwner = <table> {
 }
 justifyPoints = <table> {
 }
 EventList = <table> {
 }
 EVENTS = <table> {
 }
 EquivOriginalLookup = <table> {
 }
 CONST = <table> {
 }
 indentLib = <table> {
 }
 GroupsToUpdate = <table> {
 }
 GCDSpell = 53
 Classes = <table> {
 }
 Backupdb = <table> {
 }
 Group_Defaults = <table> {
 }
 SpellTexturesMetaIndex = <table> {
 }
 performedEvent = "TMW_UPGRADE_PERFORMED"
 UNITS = <table> {
 }
 profile = <table> {
 }
 DOGTAG = <table> {
 }
 IconStateArbitrator = <table> {
 }
 time = 6240.243000
 baseName = "TellMeWhen"
 TIMERS = <table> {
 }
 SUG = <table> {
 }
 strlowerCache = <table> {
 }
 DD = <table> {
 }
 DROPDOWNMENU = <table> {
 }
 IconEventUpdateEngine = Frame {
 }
 points = <table> {
 }
 enabledState = true
 IE = TellMeWhen_IconEditor {
 }
 CI = <table> {
 }
 spellTextureCache = <table> {
 }
 Initialized = true
 EquivFirstIDLookup = <table> {
 }
 EquivFullNameLookup = <table> {
 }
 DEFAULT_ICON_SETTINGS = <table> {
 }
 isNumber = <table> {
 }
 Icon_Defaults = <table> {
 }
 BE = <table> {
 }
 PreviousGUIDToOwner = <table> {
 }
 defaultModuleLibraries = <table> {
 }
 CNDT = <table> {
 }
 global = <table> {
 }
 COUNTERS = <table> {
 }
 IconsToUpdate = <table> {
 }
 ValidityCheckQueue = <table> {
 }
 IconDragger = <table> {
 }
 OrderedViews = <table> {
 }
 Types = <table> {
 }
 CompareFuncs = <table> {
 }
 callbackregistry = <table> {
 }
 orderedModules = <table> {
 }
}
text = "bad argument #2 to '?' (Usage: local id, name, description, icon, role, recommended, allowedForBoost, masterySpell1, masterySpell2 = GetSpecializationInfoForClassID(classID, index [, gender]))"
success = true
result = "bad argument #2 to '?' (Usage: local id, name, description, icon, role, recommended, allowedForBoost, masterySpell1, masterySpell2 = GetSpecializationInfoForClassID(classID, index [, gender]))"
commented

I implemented fix: #2310. Problem solved. Thanks ascott18