1. #1

    Troubleshooting a Conflict Between Addons

    Hello, I've been working on a loot distribution addon for my guild over the past... well let's just say a long time, and I've run into an issue with some users saying various other addons they use stop working when my addon is enabled at the same time. These addons always spew LUA errors having to do with Ace3 libraries so I imagine it's some sort of conflict with libraries, but I also know that the client should automatically find the most up to date instance of each library and only use that version for all addons that require it.

    I've done some googling on the issue and haven't found much useful other than tickets to other addon projects saying "Your addon conflicts with this addon, please fix" and "(not) fixed!".

    My addon is called FALoot and all of the source code can be found here:
    https://github.com/aggixx/FALoot

    Two examples of the lua errors I've recieved from users can be found here:
    http://pastebin.com/uM2w1MMx
    http://pastebin.com/wTWHPm6Z

    If anyone has any insight on this issue and how to troubleshoot it, I would appreciate it. Thanks!


    Druid / Demon Hunter SimulationCraft Maintainer

  2. #2
    Deleted
    The first step of troubleshooting any sort of conflict is always getting rid of any leaking globals (especially SETGLOBALs).

    Code:
    D:\FALoot>luac -l -p main.lua | lua D:\globals.lua main.lua
    main <main.lua:0,0> (529 instructions, 2116 bytes at 00571948)
    	[19]	SETGLOBAL	9 -1	; FALoot
    	[634]	SETGLOBAL	48 -97	; SLASH_RT1
    	[635]	SETGLOBAL	48 -99	; SLASH_FALOOT1
    	[636]	SETGLOBAL	48 -101	; SLASH_FA1
    	[715]	SETGLOBAL	49 -107	; SLASH_FAROLL1
    function debug(msg, verbosity)	<main.lua:58,69> (36 instructions, 144 bytes at 0059EF30)
    	[60]	GETGLOBAL	2 -1	; type
    	[60]	GETGLOBAL	2 -1	; type
    	[61]	GETGLOBAL	2 -4	; print
    	[62]	GETGLOBAL	2 -1	; type
    	[63]	GETGLOBAL	2 -6	; DevTools_Dump
    	[64]	GETGLOBAL	2 -7	; LoadAddOn
    	[66]	GETGLOBAL	2 -6	; DevTools_Dump
    function str_split(delimiter, text)	<main.lua:71,88> (40 instructions, 160 bytes at 00578318)
    	[74]	GETGLOBAL	4 -2	; strfind
    	[75]	GETGLOBAL	4 -4	; error
    	[78]	GETGLOBAL	4 -2	; strfind
    	[80]	GETGLOBAL	6 -6	; tinsert
    	[80]	GETGLOBAL	8 -7	; strsub
    	[83]	GETGLOBAL	6 -6	; tinsert
    	[83]	GETGLOBAL	8 -7	; strsub
    function string.levenshtein(str1, str2)	<main.lua:90,129> (81 instructions, 324 bytes at 0057A290)
    	[91]	GETGLOBAL	2 -1	; string
    	[92]	GETGLOBAL	3 -1	; string
    	[123]	GETGLOBAL	15 -6	; math
    function ItemLinkStrip(itemLink)	<main.lua:131,144> (27 instructions, 108 bytes at 0057A2E8)
    	[134]	GETGLOBAL	1 -1	; string
    function ItemLinkAssemble(itemString)	<main.lua:146,157> (29 instructions, 116 bytes at 0059EEA0)
    	[147]	GETGLOBAL	1 -1	; string
    	[148]	GETGLOBAL	1 -1	; string
    	[150]	GETGLOBAL	5 -7	; GetItemInfo
    function isNameInGuild(name)	<main.lua:159,168> (18 instructions, 72 bytes at 0057E900)
    	[160]	GETGLOBAL	1 -1	; SetGuildRosterShowOffline
    	[161]	GETGLOBAL	1 -2	; GetNumGuildMembers
    	[163]	GETGLOBAL	7 -4	; GetGuildRosterInfo
    function isGuildGroup(threshold)	<main.lua:170,196> (53 instructions, 212 bytes at 0057E838)
    	[171]	GETGLOBAL	1 -1	; GuildRoster
    	[173]	GETGLOBAL	2 -2	; IsInRaid
    	[181]	GETGLOBAL	8 -8	; UnitExists
    	[182]	GETGLOBAL	8 -9	; GetRaidRosterInfo
    	[186]	GETGLOBAL	9 -10	; UnitIsConnected
    	[191]	GETGLOBAL	4 -11	; GetNumGroupMembers
    function isMainRaid()	<main.lua:198,228> (67 instructions, 268 bytes at 005A5FA0)
    	[199]	GETGLOBAL	0 -1	; GuildRoster
    	[201]	GETGLOBAL	1 -2	; IsInRaid
    	[209]	GETGLOBAL	7 -8	; UnitExists
    	[210]	GETGLOBAL	7 -9	; GetRaidRosterInfo
    	[211]	GETGLOBAL	8 -10	; SetGuildRosterShowOffline
    	[212]	GETGLOBAL	8 -11	; GetNumGuildMembers
    	[214]	GETGLOBAL	14 -12	; GetGuildRosterInfo
    	[215]	GETGLOBAL	17 -13	; string
    	[217]	GETGLOBAL	17 -13	; string
    function FALoot:addonEnabled(overrideDebug)	<main.lua:230,250> (55 instructions, 220 bytes at 005A64D8)
    	[235]	GETGLOBAL	2 -3	; IsInInstance
    	[243]	GETGLOBAL	4 -9	; GetRaidDifficultyID
    	[243]	GETGLOBAL	4 -9	; GetRaidDifficultyID
    	[245]	GETGLOBAL	4 -13	; GetNumGroupMembers
    function FALoot:checkFilters(itemString, checkItemLevel)	<main.lua:252,294> (82 instructions, 328 bytes at 005A6308)
    	[254]	GETGLOBAL	3 -1	; type
    	[272]	GETGLOBAL	4 -9	; GetItemInfo
    	[287]	GETGLOBAL	11 -19	; GetAverageItemLevel
    function FALoot:sendMessage(prefix, text, distribution, target, prio, needsCompress)	<main.lua:300,329> (48 instructions, 192 bytes at 005A8F20)
    	[328]	GETGLOBAL	11 -7	; FALoot
    function FALoot:OnCommReceived(prefix, text, distribution, sender)	<main.lua:331,437> (283 instructions, 1132 bytes at 005AB5D0)
    	[349]	GETGLOBAL	8 -6	; UnitName
    	[360]	GETGLOBAL	8 -12	; FALoot
    	[364]	GETGLOBAL	9 -14	; pairs
    	[373]	GETGLOBAL	9 -14	; pairs
    	[377]	GETGLOBAL	18 -12	; FALoot
    	[386]	GETGLOBAL	8 -12	; FALoot
    	[396]	GETGLOBAL	9 -28	; table
    	[398]	GETGLOBAL	9 -28	; table
    	[400]	GETGLOBAL	10 -31	; GetTime
    	[402]	GETGLOBAL	8 -12	; FALoot
    	[415]	GETGLOBAL	9 -12	; FALoot
    	[425]	GETGLOBAL	8 -14	; pairs
    	[428]	GETGLOBAL	17 -28	; table
    	[434]	GETGLOBAL	8 -28	; table
    	[435]	GETGLOBAL	8 -12	; FALoot
    function(self, event)	<main.lua:508,519> (22 instructions, 88 bytes at 005AB628)
    	[511]	GETGLOBAL	6 -3	; pairs
    function FALoot:generateIcons()	<main.lua:538,632> (118 instructions, 472 bytes at 005AB6D8)
    	[551]	GETGLOBAL	4 -11	; pairs
    function(self, button)	<main.lua:558,577> (37 instructions, 148 bytes at 005AB730)
    	[564]	GETGLOBAL	3 -3	; pairs
    	[574]	GETGLOBAL	3 -6	; GameTooltip
    	[575]	GETGLOBAL	3 -6	; GameTooltip
    	[576]	GETGLOBAL	3 -6	; GameTooltip
    function(self, button)	<main.lua:578,584> (10 instructions, 40 bytes at 005AB788)
    	[583]	GETGLOBAL	2 -2	; GameTooltip
    function(self, button)	<main.lua:585,622> (79 instructions, 316 bytes at 005AB7E0)
    	[587]	GETGLOBAL	2 -2	; IsModifiedClick
    	[588]	GETGLOBAL	2 -4	; ChatEdit_InsertLink
    	[589]	GETGLOBAL	2 -2	; IsModifiedClick
    	[590]	GETGLOBAL	2 -7	; DressUpItemLink
    	[594]	GETGLOBAL	3 -9	; pairs
    	[605]	GETGLOBAL	2 -12	; coroutine
    	[615]	GETGLOBAL	2 -14	; UnitIsGroupAssistant
    	[615]	GETGLOBAL	2 -16	; UnitIsGroupLeader
    	[616]	GETGLOBAL	2 -17	; StaticPopupDialogs
    	[618]	GETGLOBAL	2 -17	; StaticPopupDialogs
    	[620]	GETGLOBAL	2 -23	; StaticPopup_Show
    function()	<main.lua:605,614> (33 instructions, 132 bytes at 005AB838)
    	[607]	GETGLOBAL	0 -5	; UnitIsGroupAssistant
    	[607]	GETGLOBAL	0 -7	; UnitIsGroupLeader
    	[608]	GETGLOBAL	0 -8	; FALoot
    	[613]	GETGLOBAL	0 -8	; FALoot
    function slashparse(msg, editbox)	<main.lua:637,710> (227 instructions, 908 bytes at 005AB890)
    	[638]	GETGLOBAL	2 -1	; string
    	[642]	GETGLOBAL	3 -1	; string
    	[643]	GETGLOBAL	3 -1	; string
    	[652]	GETGLOBAL	3 -1	; string
    	[653]	GETGLOBAL	3 -12	; tonumber
    	[653]	GETGLOBAL	4 -1	; string
    	[660]	GETGLOBAL	3 -18	; FALoot
    	[663]	GETGLOBAL	3 -18	; FALoot
    	[667]	GETGLOBAL	3 -1	; string
    	[668]	GETGLOBAL	3 -1	; string
    	[669]	GETGLOBAL	4 -28	; table
    	[672]	GETGLOBAL	3 -1	; string
    	[673]	GETGLOBAL	3 -1	; string
    	[676]	GETGLOBAL	8 -28	; table
    	[683]	GETGLOBAL	3 -1	; string
    	[703]	GETGLOBAL	3 -47	; print
    	[704]	GETGLOBAL	3 -47	; print
    	[705]	GETGLOBAL	3 -47	; print
    	[706]	GETGLOBAL	3 -47	; print
    	[707]	GETGLOBAL	3 -47	; print
    	[708]	GETGLOBAL	3 -47	; print
    function FARoll(value)	<main.lua:716,732> (44 instructions, 176 bytes at 005AB9F0)
    	[717]	GETGLOBAL	1 -1	; tonumber
    	[719]	GETGLOBAL	1 -4	; print
    	[720]	GETGLOBAL	1 -6	; math
    	[726]	GETGLOBAL	1 -10	; RandomRoll
    	[728]	GETGLOBAL	1 -10	; RandomRoll
    	[730]	GETGLOBAL	1 -4	; print
    OnAccept = function(self)	<main.lua:741,744> (10 instructions, 40 bytes at 005ABA48)
    	[743]	GETGLOBAL	1 -3	; coroutine
    function(self)	<main.lua:747,751> (12 instructions, 48 bytes at 005ABAF8)
    	[749]	GETGLOBAL	1 -2	; coroutine
    	[750]	GETGLOBAL	1 -4	; StaticPopup_Hide
    function(self)	<main.lua:752,754> (4 instructions, 16 bytes at 005ABBA8)
    	[753]	GETGLOBAL	1 -1	; StaticPopup_Hide
    function(self, event)	<main.lua:760,790> (41 instructions, 164 bytes at 005ABC00)
    	[763]	GETGLOBAL	6 -3	; pairs
    	[770]	GETGLOBAL	6 -6	; coroutine
    	[787]	GETGLOBAL	6 -8	; StaticPopupDialogs
    	[788]	GETGLOBAL	6 -13	; StaticPopup_Show
    function(self)	<main.lua:770,786> (50 instructions, 200 bytes at 005ABC58)
    	[772]	GETGLOBAL	1 -4	; tonumber
    	[772]	SETGLOBAL	1 -3	; bid
    	[773]	GETGLOBAL	1 -3	; bid
    	[773]	GETGLOBAL	1 -3	; bid
    	[773]	GETGLOBAL	1 -3	; bid
    	[777]	GETGLOBAL	1 -3	; bid
    	[778]	GETGLOBAL	1 -11	; math
    	[778]	GETGLOBAL	2 -3	; bid
    	[778]	SETGLOBAL	1 -3	; bid
    	[779]	GETGLOBAL	1 -3	; bid
    	[780]	GETGLOBAL	1 -3	; bid
    	[780]	SETGLOBAL	1 -3	; bid
    	[785]	GETGLOBAL	1 -15	; FALoot
    	[785]	GETGLOBAL	4 -3	; bid
    OnAccept = function()	<main.lua:799,801> (5 instructions, 20 bytes at 005ABCB0)
    	[800]	GETGLOBAL	0 -1	; coroutine
    function FALoot:itemAdd(itemString, checkCache)	<main.lua:806,878> (173 instructions, 692 bytes at 005ABD08)
    	[809]	GETGLOBAL	3 -3	; type
    	[821]	GETGLOBAL	8 -7	; table
    	[828]	GETGLOBAL	4 -7	; table
    	[836]	GETGLOBAL	4 -12	; FALoot
    	[843]	GETGLOBAL	4 -17	; GetItemInfo
    	[845]	GETGLOBAL	15 -12	; FALoot
    	[846]	GETGLOBAL	15 -4	; string
    	[853]	GETGLOBAL	4 -17	; GetItemInfo
    	[855]	GETGLOBAL	15 -12	; FALoot
    	[856]	GETGLOBAL	15 -4	; string
    	[868]	GETGLOBAL	4 -12	; FALoot
    	[871]	GETGLOBAL	4 -32	; UnitAffectingCombat
    function FALoot:itemTableUpdate()	<main.lua:880,957> (178 instructions, 712 bytes at 005ABD60)
    	[883]	GETGLOBAL	2 -1	; pairs
    	[902]	GETGLOBAL	10 -1	; pairs
    	[917]	GETGLOBAL	10 -20	; table
    	[937]	GETGLOBAL	17 -30	; wnil
    	[948]	GETGLOBAL	2 -32	; FALoot
    function FALoot:itemBid(itemString, bid)	<main.lua:959,972> (41 instructions, 164 bytes at 005ABDB8)
    	[960]	GETGLOBAL	3 -1	; tonumber
    	[971]	GETGLOBAL	3 -13	; FALoot
    function FALoot:itemEnd(itemString)	<main.lua:974,981> (19 instructions, 76 bytes at 005ABE10)
    	[977]	GETGLOBAL	3 -4	; GetTime
    	[978]	GETGLOBAL	2 -5	; FALoot
    	[979]	GETGLOBAL	2 -5	; FALoot
    function FALoot:itemRemove(itemString)	<main.lua:983,986> (6 instructions, 24 bytes at 005ABF18)
    	[985]	GETGLOBAL	2 -2	; FALoot
    function FALoot:checkBids()	<main.lua:988,1003> (78 instructions, 312 bytes at 005ABF70)
    	[989]	GETGLOBAL	1 -1	; pairs
    	[992]	GETGLOBAL	6 -10	; SendChatMessage
    	[992]	GETGLOBAL	7 -11	; tostring
    	[992]	GETGLOBAL	8 -6	; bid
    	[996]	GETGLOBAL	7 -6	; bid
    	[1002]	GETGLOBAL	1 -21	; FALoot
    function FALoot:generateStatusText()	<main.lua:1005,1044> (106 instructions, 424 bytes at 005ABFC8)
    	[1007]	GETGLOBAL	4 -2	; pairs
    function FALoot:setLeaderUIVisibility()	<main.lua:1046,1053> (21 instructions, 84 bytes at 005AC020)
    	[1048]	GETGLOBAL	1 -1	; UnitIsGroupAssistant
    	[1048]	GETGLOBAL	1 -3	; UnitIsGroupLeader
    function FALoot:onTableSelect(id)	<main.lua:1055,1071> (29 instructions, 116 bytes at 005AC078)
    	[1059]	GETGLOBAL	3 -3	; pairs
    function onUpdate(self,elapsed)	<main.lua:1078,1136> (106 instructions, 424 bytes at 005AC128)
    	[1079]	GETGLOBAL	2 -1	; GetTime
    	[1082]	GETGLOBAL	3 -2	; pairs
    	[1085]	GETGLOBAL	8 -7	; FALoot
    	[1115]	GETGLOBAL	4 -7	; FALoot
    	[1117]	GETGLOBAL	4 -7	; FALoot
    	[1132]	GETGLOBAL	9 -16	; print
    function FALoot:parseChat(msg, author)	<main.lua:1141,1256> (367 instructions, 1468 bytes at 005AC180)
    	[1144]	GETGLOBAL	7 -4	; GetRaidRosterInfo
    	[1146]	SETGLOBAL	8 -5	; rank
    	[1151]	GETGLOBAL	3 -5	; rank
    	[1151]	GETGLOBAL	3 -5	; rank
    	[1152]	GETGLOBAL	3 -6	; string
    	[1154]	GETGLOBAL	5 -6	; string
    	[1156]	GETGLOBAL	7 -6	; string
    	[1160]	GETGLOBAL	7 -6	; string
    	[1164]	GETGLOBAL	8 -6	; string
    	[1168]	GETGLOBAL	8 -6	; string
    	[1175]	GETGLOBAL	8 -6	; string
    	[1177]	GETGLOBAL	8 -6	; string
    	[1178]	GETGLOBAL	9 -21	; tonumber
    	[1178]	GETGLOBAL	10 -6	; string
    	[1182]	GETGLOBAL	8 -6	; string
    	[1183]	GETGLOBAL	8 -6	; string
    	[1184]	GETGLOBAL	8 -6	; string
    	[1185]	GETGLOBAL	8 -6	; string
    	[1187]	SETGLOBAL	8 -28	; winners
    	[1188]	GETGLOBAL	9 -28	; winners
    	[1189]	GETGLOBAL	9 -28	; winners
    	[1190]	GETGLOBAL	12 -29	; math
    	[1191]	GETGLOBAL	15 -31	; GetNumGroupMembers
    	[1192]	GETGLOBAL	18 -6	; string
    	[1192]	GETGLOBAL	19 -28	; winners
    	[1192]	GETGLOBAL	20 -33	; UnitName
    	[1199]	GETGLOBAL	14 -28	; winners
    	[1199]	GETGLOBAL	15 -33	; UnitName
    	[1203]	GETGLOBAL	15 -6	; string
    	[1203]	GETGLOBAL	16 -28	; winners
    	[1203]	GETGLOBAL	17 -33	; UnitName
    	[1205]	GETGLOBAL	15 -37	; LootWonAlertFrame_ShowAlert
    	[1205]	GETGLOBAL	18 -39	; LOOT_ROLL_TYPE_NEED
    	[1213]	GETGLOBAL	16 -45	; FALoot
    	[1217]	GETGLOBAL	19 -6	; string
    	[1217]	GETGLOBAL	20 -28	; winners
    	[1219]	GETGLOBAL	19 -37	; LootWonAlertFrame_ShowAlert
    	[1219]	GETGLOBAL	22 -39	; LOOT_ROLL_TYPE_NEED
    	[1232]	GETGLOBAL	15 -50	; tostring
    	[1238]	GETGLOBAL	15 -51	; table
    	[1238]	GETGLOBAL	17 -28	; winners
    	[1241]	GETGLOBAL	16 -53	; pairs
    	[1246]	GETGLOBAL	16 -45	; FALoot
    	[1251]	GETGLOBAL	8 -45	; FALoot
    	[1252]	GETGLOBAL	8 -45	; FALoot
    function FALoot:setAutoLoot()	<main.lua:1258,1275> (50 instructions, 200 bytes at 005AC1D8)
    	[1259]	GETGLOBAL	1 -1	; GetCVar
    	[1259]	GETGLOBAL	2 -3	; GetModifiedClick
    	[1260]	GETGLOBAL	3 -5	; FALoot
    	[1262]	GETGLOBAL	3 -9	; SetCVar
    	[1263]	GETGLOBAL	3 -11	; SetModifiedClick
    	[1269]	GETGLOBAL	3 -11	; SetModifiedClick
    	[1271]	GETGLOBAL	3 -9	; SetCVar
    function events:ADDON_LOADED(name)	<main.lua:1278,1303> (85 instructions, 340 bytes at 005AC230)
    	[1280]	GETGLOBAL	2 -1	; FALoot_options
    	[1280]	SETGLOBAL	2 -1	; FALoot_options
    	[1281]	GETGLOBAL	2 -1	; FALoot_options
    	[1282]	GETGLOBAL	2 -1	; FALoot_options
    	[1283]	GETGLOBAL	2 -1	; FALoot_options
    	[1284]	GETGLOBAL	2 -1	; FALoot_options
    	[1285]	GETGLOBAL	2 -1	; FALoot_options
    	[1286]	GETGLOBAL	2 -1	; FALoot_options
    	[1288]	GETGLOBAL	2 -8	; FALoot
    	[1291]	GETGLOBAL	2 -8	; FALoot
    	[1292]	GETGLOBAL	2 -8	; FALoot
    	[1293]	GETGLOBAL	2 -8	; FALoot
    	[1294]	GETGLOBAL	2 -8	; FALoot
    	[1295]	GETGLOBAL	2 -8	; FALoot
    	[1296]	GETGLOBAL	2 -8	; FALoot
    	[1297]	GETGLOBAL	2 -8	; FALoot
    	[1298]	GETGLOBAL	2 -8	; FALoot
    	[1298]	GETGLOBAL	5 -20	; UnitName
    function events:PLAYER_LOGIN()	<main.lua:1304,1343> (72 instructions, 288 bytes at 005AC288)
    	[1307]	GETGLOBAL	2 -1	; GetCVar
    	[1313]	GETGLOBAL	3 -6	; GetModifiedClick
    	[1315]	GETGLOBAL	3 -6	; GetModifiedClick
    	[1317]	GETGLOBAL	3 -6	; GetModifiedClick
    	[1322]	GETGLOBAL	3 -15	; StaticPopupDialogs
    	[1324]	GETGLOBAL	5 -21	; YES
    	[1325]	GETGLOBAL	5 -23	; NO
    	[1335]	GETGLOBAL	5 -32	; STATICPOPUPS_NUMDIALOGS
    	[1337]	GETGLOBAL	3 -33	; StaticPopup_Show
    	[1339]	GETGLOBAL	1 -34	; FALoot
    	[1342]	GETGLOBAL	1 -34	; FALoot
    OnAccept = function(self)	<main.lua:1330,1334> (12 instructions, 48 bytes at 005AC2E0)
    	[1331]	GETGLOBAL	1 -1	; GetModifiedClick
    	[1332]	GETGLOBAL	1 -3	; GetCVar
    	[1333]	GETGLOBAL	1 -5	; FALoot
    function events:PLAYER_LOGOUT(...)	<main.lua:1344,1353> (15 instructions, 60 bytes at 005AC338)
    	[1352]	SETGLOBAL	2 -1	; FALoot_options
    function events:LOOT_OPENED(...)	<main.lua:1354,1419> (137 instructions, 548 bytes at 005AC390)
    	[1355]	GETGLOBAL	2 -1	; FALoot
    	[1359]	GETGLOBAL	4 -4	; GetNumLootItems
    	[1360]	GETGLOBAL	8 -5	; GetLootSourceInfo
    	[1368]	GETGLOBAL	14 -7	; GetLootSlotLink
    	[1369]	GETGLOBAL	14 -1	; FALoot
    	[1370]	GETGLOBAL	15 -9	; max
    	[1374]	GETGLOBAL	18 -10	; table
    	[1382]	GETGLOBAL	3 -12	; pairs
    	[1390]	GETGLOBAL	4 -12	; pairs
    	[1407]	GETGLOBAL	4 -1	; FALoot
    	[1412]	GETGLOBAL	4 -12	; pairs
    	[1415]	GETGLOBAL	13 -1	; FALoot
    function events:CHAT_MSG_RAID(msg, author)	<main.lua:1420,1422> (6 instructions, 24 bytes at 005AC3E8)
    	[1421]	GETGLOBAL	3 -1	; FALoot
    function events:CHAT_MSG_RAID_LEADER(msg, author)	<main.lua:1423,1425> (6 instructions, 24 bytes at 005AC440)
    	[1424]	GETGLOBAL	3 -1	; FALoot
    function events:CHAT_MSG_CHANNEL(msg, author, _, _, _, _, _, _, channelName)	<main.lua:1426,1452> (79 instructions, 316 bytes at 005AC498)
    	[1431]	GETGLOBAL	10 -2	; string
    	[1436]	GETGLOBAL	12 -2	; string
    	[1440]	GETGLOBAL	13 -2	; string
    	[1441]	GETGLOBAL	15 -2	; string
    	[1442]	GETGLOBAL	15 -2	; string
    	[1442]	GETGLOBAL	15 -2	; string
    	[1443]	GETGLOBAL	15 -12	; UnitIsGroupAssistant
    	[1443]	GETGLOBAL	15 -14	; UnitIsGroupLeader
    	[1444]	GETGLOBAL	15 -15	; FALoot
    	[1449]	GETGLOBAL	15 -15	; FALoot
    function events:GROUP_JOINED()	<main.lua:1453,1459> (15 instructions, 60 bytes at 005AC4F0)
    	[1454]	GETGLOBAL	1 -1	; IsInRaid
    	[1455]	GETGLOBAL	1 -2	; FALoot
    function events:GROUP_ROSTER_UPDATE()	<main.lua:1460,1463> (7 instructions, 28 bytes at 005AC548)
    	[1461]	GETGLOBAL	1 -1	; FALoot
    	[1462]	GETGLOBAL	1 -1	; FALoot
    function events:RAID_ROSTER_UPDATE()	<main.lua:1464,1467> (7 instructions, 28 bytes at 005CBA38)
    	[1465]	GETGLOBAL	1 -1	; FALoot
    	[1466]	GETGLOBAL	1 -1	; FALoot
    function events:GET_ITEM_INFO_RECEIVED()	<main.lua:1474,1479> (15 instructions, 60 bytes at 005CBAE8)
    	[1477]	GETGLOBAL	6 -3	; FALoot

    I doubt that that's the issue, though. I'm assuming it's something in the custom FALootWindow AceGUI widget, though I am not experienced enough with AceGUI code to find any issue in there.
    Looking through the main.lua itself, I'm curious though - why do you even mess with AceGUI in the first place? You only seem to call :Create once in the file's body, and then use the frame reference itself instead of the AceGUI object. In other words, you could simply create the frame in the main.lua (replacing the :Create call) and not bother with AceGUI custom widgets at all.

  3. #3
    First off, I understand why SETGLOBAL is generally a bad thing and I've fixed the bid, rank, and winners variables (woops!), but do you mean to imply that the GETGLOBAL actions listed could be considered leaks? How could that sort of thing potentially cause issues?

    Regarding the usage of AceGUI: Originally I had the GUI completely custom-coded. A week ago or so I revamped it since I wanted it to look a little cleaner than it did and I planned to do so by using AceGUI (for every element except for the ScrollingTable), but I quickly realized I could achieve the cleanliness I was looking for simply by using the AceGUI "Frame" object and simply attaching my existing GUI elements to it.

    So you think the best route to pursue would be to remove dependency on AceGUI altogether and just replicate the functionality of the AceGUI elements I am using? Wouldn't be terribly difficult to just anchor the whole thing to a plain frame and remove the AceGUI components to see if it solves the conflict issues. And then from there, if it did work, it would be worth the effort since it would mostly just be selectively copying the code I need.
    Last edited by aggixx; 2013-05-31 at 09:47 AM.


    Druid / Demon Hunter SimulationCraft Maintainer

  4. #4
    Deleted
    1) One addon leaks table "foo".
    2) Second addon GETGLOBAL's "foo" (say, because the author meant to use the local "foobar" but made a typo), then does "local t = foo t.key = value".
    3) Addon has now modified the leaked table "foo" inadvertedly (because it had a GETGLOBAL).

    Besides, they're also bad for performance.

    PS: Yes, I'd suggest dropping AceGUI.

  5. #5
    Alright, I've redone the GUI to be completely identical without the usage of AceGUI, and the conflicts seem to be gone for at least one of my users! I'll update this thread if I run into issues but for now it seems solved.

    Thanks for your help Treeston!


    Druid / Demon Hunter SimulationCraft Maintainer

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •