FlightHUD

39 - 1x C stack overflow: <in C code>: in function `WatchFrame_Update'

Submitted Via

Curse Client 4.0.1.104, Microsoft Windows NT 6.1.7600.0

Installed Version

v0.9.29-nolib

Description

1x C stack overflow: <in C code>: in function `WatchFrame_Update' Interface\FrameXML\WatchFrame.lua:283: in function <Interface\FrameXML\WatchFrame.lua:239>: <in C code>: in function `SetMapToCurrentZone' FlightHUD-0.10.0\Libs\Astrolabe\Astrolabe.lua:318: in function <...erface\AddOns\FlightHUD\Libs\Astrolabe\Astrolabe.lua:309> (tail call): ?: FlightHUD-0.10.0\Libs\Astrolabe\Astrolabe.lua:500: in function `PlaceIconOnMinimap' FlightHUD-0.10.0\FlightHUD.lua:290: in function <FlightHUD\FlightHUD.lua:257> FlightHUD-0.10.0\FlightHUD.lua:1682: in function `AddQWaypoint' FlightHUD-0.10.0\FlightHUD.lua:1099: in function `ObjectivesChanged' FlightHUD-0.10.0\FlightHUD.lua:1004: in function <FlightHUD\FlightHUD.lua:1003> <in C code>: in function `WatchFrame_Update' Interface\FrameXML\WatchFrame.lua:283: in function <Interface\FrameXML\WatchFrame.lua:239>: ...: FlightHUD-0.10.0\FlightHUD.lua:1682: in function `AddQWaypoint' FlightHUD-0.10.0\FlightHUD.lua:1099: in function `ObjectivesChanged' FlightHUD-0.10.0\FlightHUD.lua:1004: in function <FlightHUD\FlightHUD.lua:1003> <in C code>: in function `WatchFrame_Update' Interface\FrameXML\WatchFrame.lua:335: in function `WatchFrame_Expand': Interface\FrameXML\WatchFrame.lua:404: in function <Interface\FrameXML\WatchFrame.lua:366>: <in C code>: in function `WatchFrame_Update' Interface\FrameXML\WatchFrame.lua:283: in function <Interface\FrameXML\WatchFrame.lua:239>: <in C code>: in function `SetMapZoom' TomTom-SCM\TomTom.lua:43: in main chunk Locals: (*temporary) = <function> @ Interface\FrameXML\WatchFrame.lua:366: = <function> @ Interface\FrameXML\WatchFrame.lua:366: = <function> @ FlightHUD\FlightHUD.lua:1003: ---

Steps to Reproduce

Happens with latest beta, no issue with v0.9.29-nolib

Installed Addons

!BugGrabber - r164 Ace2 - r1101 Ace3 - r998 AceGUI-3.0-SharedMediaWidgets - r37-nolib AceGUI-3.0-Spell-EditBox - r20090807071246 Addon Control Panel - r137 AddonLoader - r113-release AdiBags - v1.2-12-g2556a42-nolib Alt-Tab Toggle - 2.2.2beta-nolib AtlasQuest - Fan Update - 4.5.0 Beta Auctioneer - Auctioneer Suite 5.9.4961 Auditor - v4.3.3-nolib AutoRez - AutoRez-r57459.8 BadBoy: Anti Spam Automatic Reporter - v6.216 Baggins - r440-release-nolib Baggins_AnywhereBags - 1.0.77 BankItems - r161 BankStack - v21-nolib BetterBlizzOptions - r36-nolib BigWigs Bossmods - r7642-nolib BigWigs_AQ20 - r151-release BigWigs_AQ40 - r330 BigWigs_Azeroth - r206 BigWigs_BlackTemple - r6-release BigWigs_BWL - r228 BigWigs_CommonAuras - r169 BigWigs_CThunAssist - BigWigs_CThunAssist-r61747-nolib BigWigs_Hyjal - r6-release BigWigs_MC - r191 BigWigs_NefCount - BigWigs_NefCount-r61747 BigWigs_Outland - r6-release BigWigs_RazuviousAssistant - r57-nolib BigWigs_Sunwell - r7-release BigWigs_TheEye - r6-release BigWigs_ZG - r185 BigWigs_ZulAman - r6-release Boss Notes - 1.2.1 Broker uClock - v3.3.2-nolib Broker_CPU Memory - 40000.2 Broker_LFD - r48 Broker_Portals - r137 Broker_Regen - 1.1 Broker_repair - v2.6_lovelyedition Broker_Routes - 1.1 Broker_XPRate - 1.57-nolib BugSack - r244-nolib CallbackHandler-1.0 - 1.0.6 ChocolateBar Broker Display - r120-nolib ClassTimer - r357-nolib CompostLib - r61-nolib CowTip - v1.3.2-nolib CrayonLib - 3.0-release-nolib Cromulent - v1.5.8-nolib CurseProfiler 2.0 - v47 Decursive - 2.6.0.1-nolib Deformat - 3.0-release-nolib DewdropLib - r324-nolib Elitist Group - v1.7.7-1-ge9aa6fe-nolib EventHorizon - EventHorizon v1.9 r378 FlightHUD - v0.9.29-nolib FuBar - GroupFu - r141-nolib FuBar_LootTypeFu - FuBar_LootTypeFu-r81375-nolib FuBar_RepaFu - v3.3.0-r54 FuBar_switcherFu - FuBar_switcherFu-r26541.1073 FuBar2Broker - r88-release-nolib FuBarPlugin-2.0 - r9 GatherMate2 - 1.0.6.1-4-g549ef90-nolib GatherMate2_Data - v1.9 GratuityLib - r86-nolib Grid2 - r549-nolib GuildEventManager - 4.01beta1 HandyNotes - v1.1.6-nolib HandyNotes_CityGuide - r28 HandyNotes_Directions - r52 HandyNotes_FlightMasters - v1.0.4 HandyNotes_Guild - 1.3-nolib Healers have to die - 1.5.2-6-gf945f40-nolib LibAboutPanel - v1.51-nolib LibAlts-1.0 - 1.7-nolib LibBabble-Boss-3.0 - 4.0-release9 LibBabble-Class-3.0 - r56 LibBabble-Inventory-3.0 - 4.0-release9 LibBabble-TalentTree-3.0 - 4.0-release1 LibBabble-Zone-3.0 - 4.0-release9 LibBagUtils-1.0 - 1.0.19 LibBanzai-2.0 - r42 LibBetterBlizzOptions-1.0 - r5 LibBossIDs-1.0 - r48-nolib LibCandyBar-3.0 - r29 LibDBIcon-1.0 - r18 LibDBLayers-1.0 - r15-nolib LibDDI-1.0 - r8 LibDeformat-3.0 - v1 LibDogTag-3.0 - v40000.2 LibDogTag-Unit-3.0 - r210 LibDualSpec-1.0 - v1.4-1-g909eff6 LibFilter-1.0 - r51-nolib LibGraph-2.0 - v2.0.2 LibGratuity-3.0 - r42 LibGroupTalents-1.0 - r64 LibGuildPositions-1.0 - WoW-4.0-release LibHealComm-4.0 - v1.6.6 LibJostle-3.0 - v40000 LibMapData-1.0 - r73 LibNameplate-1.0 - 1.0.27 LibPeriodicTable-3.1 - r315 LibQTip-1.0 - r150-release LibQTipClick-1.1 - r10-nolib LibResComm-1.0 - v65 LibRock-1.0 - r298 LibRockComm-1.0 - r263 LibRockConfig-1.0 - WoW-3.2-release LibRockConsole-1.0 - WoW-3.0-release LibRockDB-1.0 - WoW-3.0-release LibRockEvent-1.0 - r236 LibRockHook-1.0 - WoW-3.0-release LibRockModuleCore-1.0 - WoW-3.0-release LibRockTimer-1.0 - WoW-3.0-release LibSchema-1.0 - r13-nolib LibSharedMedia-3.0 - 4 LibSink-2.0 - r72 LibStatLogic-1.1 - r112 LibStatLogic-1.2 - r29 LibStub - 1.0 LibTalentQuery-1.0 - 4.0 Release 1 LibTipHooker-1.1 - r14 LibTourist-3.0 - r104 LibWindow-1.1 - r5 Mapster - 1.4.0-3-gfec02aa-nolib Mendeleev - r298-nolib Omen Threat Meter - v3.1.0-nolib Parrot - v1.10.22-nolib PassLoot - r122-nolib Postal - r326-nolib Prat 3.0 - r758-nolib Quartz - 3.0.4-3-gda87e5d-nolib RatingBuster - r323-nolib Recount - v4.0.1d release-nolib Reputation - Reputation-r72535-nolib RollCall-1.0 - r45 Routes - v1.3.2-nolib SexyMap - v1.2.4-nolib Spamalyzer - 4.0.3-1.0.10-4-g510a423-nolib SpamBayes for World of Warcraft - r11 SpecialEventsEmbed - r218-nolib SpellBinder - r9-nolib Spew - 3.0.3.5-Release sRaidFrames - r747-nolib StatBlock_Memory - v2.1.2-nolib TabletLib - 3.0-release-nolib Talented - r706-nolib TomTom - v40000-1.0.8 TravelAgent - 4.0.3-1.0.11-nolib TweakHub_Automation - v2.0.2-2-nolib Volumizer - r61-nolib Waterfall-1.0 - r134 WowLua - r29 WoWonid - WoWonid-r58640-nolib Zoom!!! - r20081215111719

User When Change
Barfolomeu Feb 02, 2012 at 05:50 UTC
Barfolomeu Dec 12, 2010 at 20:03 UTC Changed status from New to Accepted
Archarodim Dec 12, 2010 at 00:29 UTC Create

You must login to post a comment. Don't have an account? Register to get one!

  • 7 comments
  • Avatar of Archarodim Archarodim Feb 05, 2011 at 21:29 UTC - 0 likes

    just to let you know that I'm still experiencing the issue. You should implement my fix to avoid the recursion loop.

  • Avatar of Archarodim Archarodim Dec 29, 2010 at 01:13 UTC - 0 likes

    I've done some more testing and I found it's related to the quest POI integration, if I disable FlightHUD.db.profile.QuestPOI then everything is alright.

    The problem won't happen either if blizzard's quest tracker is off (no quest being followed at load time)

    The stack over flow is triggered by the ObjectivesChanged() function.

    If I comment the hook to "WatchFrame_Update" the problem will not occur

    Now this simply means that something you are doing in ObjectivesChanged() may trigger a WatchFrame_Update under certain conditions calling back ObjectivesChanged() again in a loop.

    The issue is easily fixed by making sure ObjectivesChanged() can't be run while it's already being executed.

    such as this (notice the new AlreadyInObjectivesChanged script local variable):

    local AlreadyInObjectivesChanged;
    function FlightHUD:ObjectivesChanged()
    
        if AlreadyInObjectivesChanged then
            return
        end
        AlreadyInObjectivesChanged = true; -- XXX
    
        -- Again, borrowing from other addons, namely TomTomLite (I love you, jnwhiteh). Mostly verbatim
        --[===[@debug@
        FlightHUD:Debug(DEBUG1, "ObjectivesChanged")
        --@end-debug@]===]
        QuestPOIUpdateIcons()
        if CurrentQuest ~= -1 then
            FlightHUD:RemoveWaypoint (CurrentQuest, true)
            CurrentQuest = -1
        end
        local watchIndex = 1
        while true do
            -- Get the first quest item in the watch frame
            local questIndex = GetQuestIndexForWatch(watchIndex)
            -- FlightHUD.db.profile.QuestPOI's toggle calls this function to remove the waypoint
            if not questIndex or not FlightHUD.db.profile.QuestPOI then
                -- There are no quests being tracked. Remove the waypoint
                AlreadyInObjectivesChanged = false; -- XXX
                return
            end
            if questIndex then
                local title = GetQuestLogTitle(questIndex)
                local qid = select(9, GetQuestLogTitle(questIndex))
                local completed, x, y, objective = QuestPOIGetIconInfo(qid)
                -- Check to see if there was coordinate information for the current point
                if x and y then
                    local map, floor = GetCurrentMapAreaID()
                    if not floor then floor = 0 end
                    if completed then
                        title = "Turn in: " .. title
                    end
                    if x and y and map and floor then
                        FlightHUD:AddQWaypoint (map, floor, x, y, title, L["Current Quest"], qid)
                    end
                    AlreadyInObjectivesChanged = false; -- XXX
                    return
                end
            end
            watchIndex = watchIndex + 1
        end
        AlreadyInObjectivesChanged = false; -- XXX
    end
    

    after this modification the problem is fixed. Now there is maybe a better way of doing that, maybe by hooking another function, I don't know...

  • Avatar of Barfolomeu Barfolomeu Dec 13, 2010 at 22:50 UTC - 0 likes

    I also have Gathermate2 installed. I've been trying to bring this issue up in #wowdevui on Freenode, but no one seems interested. I've seen this happen at least 3-4 times now. It seems to have no ill effects. Not sure how to proceed.

  • Avatar of Archarodim Archarodim Dec 13, 2010 at 22:14 UTC - 0 likes

    actually it's a conflict with GatherMate2, the problem occurs only when GatherMate2 is loaded after FlightHud...

  • Avatar of Archarodim Archarodim Dec 13, 2010 at 22:06 UTC - 0 likes

    it seems to be systematical with me, I'm using 0.10.0 beta.
    It looks like an initialization issue...
    I made it load on demand and loaded it after my whole UI was loaded and I got no error.
    Astrolab must be accessing something when it's not there yet or something like that...

  • Avatar of Barfolomeu Barfolomeu Dec 12, 2010 at 20:04 UTC - 0 likes

    Actually, I just noticed you said it was version 0.9.29. This was still using the old Astrolabe 0.4, which might not be supported any more.

  • Avatar of Barfolomeu Barfolomeu Dec 12, 2010 at 20:02 UTC - 0 likes

    I've seen this too. It happened during ONE session of play, then never again. It also seems to be happening inside of Astrolabe. I honestly don't know what to make of this. I'm going to ask a few other developers to see what they think.

  • 7 comments

Facts

Last updated
Feb 02, 2012
Reported
Dec 12, 2010
Status
Fixed - Developer made requested changes. QA should verify.
Type
Defect - A shortcoming, fault, or imperfection
Priority
Medium - Normal priority.
Votes
0

Reported by

Possible assignees