The Gold Road Chapter – which includes the Scribing system – and Update 42 is now available to test on the PTS! You can read the latest patch notes here: https://forums.elderscrollsonline.com/en/discussion/656454/
Maintenance for the week of April 22:
• [COMPLETE] PC/Mac: NA and EU megaservers for patch maintenance – April 22, 4:00AM EDT (08:00 UTC) - 9:00AM EDT (13:00 UTC)
• Xbox: NA and EU megaservers for patch maintenance – April 24, 6:00AM EDT (10:00 UTC) - 12:00PM EDT (16:00 UTC)
• PlayStation®: NA and EU megaservers for patch maintenance – April 24, 6:00AM EDT (10:00 UTC) - 12:00PM EDT (16:00 UTC)

Add-On API Bug - Untrusted Stack When Showing Dialog In Gamepad Mode

xeiocub18_ESO
xeiocub18_ESO
Soul Shriven
So this one is weird, but it seems to be a bug with the ZO_Dialogs_ShowDialog method. It seems like this should be callable from custom Add-On code without causing issues in the UI but it seems to break other functionality which is... odd.

Steps to reproduce:
1. Have UI in Gamepad mode
2. Show a dialog from custom API code, this can be replicated by typing the below into chat (dismiss the dialog afterward by pressing A). Note the last parameter "true" tells it to open in Gamepad mode. If that is "false" it will show a non-gamepad dialog, and not reproduce the exception. The dialog used doesn't matter, and even creating a custom dialog and calling it will cause this to happen.
/script ZO_Dialogs_ShowDialog("TOO_FREQUENT_BUG_SCREENSHOT", nil, nil, true)
3. Open inventory
4. Attempt to delete an item
5. When you attempt to confirm the deletion on the Delete Item dialog, "insecure code" exception:
EsoUI/Ingame/Inventory/Gamepad/GamepadInventory.lua:308: Attempt to access a private function 'RespondToDestroyRequest' from insecure code. The callstack became untrusted 2 stack frame(s) from the top.
stack traceback:
EsoUI/Ingame/Inventory/Gamepad/GamepadInventory.lua:308: in function 'ReleaseDialog'
EsoUI/Ingame/Inventory/Gamepad/GamepadInventory.lua:349: in function 'buttonCallback'
EsoUI/Libraries/ZO_Dialog/Gamepad/ZO_GenericDialog_Gamepad.lua:31: in function 'callback'
EsoUI/Libraries/ZO_KeybindStrip/ZO_KeybindStrip.lua:645: in function 'ZO_KeybindStrip:TryHandlingKeybindDown'
(tail call): ?
EsoUI/Libraries/ZO_Dialog/ZO_Dialog.lua:1258: in function 'ZO_Dialogs_ButtonKeybindPressed'
:1: in function '(main chunk)'

Edited by xeiocub18_ESO on December 12, 2019 5:04AM
  • Moohemoth
    Moohemoth
    Soul Shriven
    Gonna second this. If my addon creates the first gamepad dialog then every dialog after it, like the one for accepting a dungeon queue, gives me insecure code errors:
    /EsoUI/Ingame/PlayerToPlayer/PlayerToPlayer.lua:1464: Attempt to access a private function 'CancelTaskbarWindowFlash' from insecure code. The callstack became untrusted 3 stack frame(s) from the top.
    stack traceback:
    /EsoUI/Ingame/PlayerToPlayer/PlayerToPlayer.lua:1464: in function 'ZO_PlayerToPlayer:RemoveEntryFromIncomingQueueTable'
    <Locals> self = [table:1]{lastFailedPromptTime = 4047797, hasResurrectPending = F, hasRequiredSoulGem = F, showingResponsePrompt = F, msToDelayToShowPrompt = 500, shouldShowNotificationKeybindLayer = F, isBeingResurrected = F, failedRaidRevives = F, resurrectable = F}, index = 1, incomingEntry = [table:2]{messageFormat = 7700, acceptText = "Ready", seen = T, expiresAtS = 4273.5825195312, pendingResponse = T, dialogTitle = "Activity Finder", incomingType = 13} </Locals>
    /EsoUI/Ingame/PlayerToPlayer/PlayerToPlayer.lua:1406: in function 'ZO_PlayerToPlayer:Decline'
    <Locals> self = [table:1], incomingEntry = [table:2], index = 1 </Locals>
    /EsoUI/Ingame/Globals/InGameDialogs.lua:3590: in function 'buttonCallback'
    <Locals> dialog = ud </Locals>
    /EsoUI/Libraries/ZO_Dialog/Gamepad/ZO_GenericDialog_Gamepad.lua:25: in function 'callback'
    <Locals> pressState = F </Locals>
    /EsoUI/Libraries/ZO_KeybindStrip/ZO_KeybindStrip.lua:680: in function 'ZO_KeybindStrip:TryHandlingKeybindDown'
    <Locals> self = [table:3]{batchUpdating = F, insertionId = 500, allowDefaultExit = T}, keybind = "DIALOG_NEGATIVE", buttonOrEtherealDescriptor = ud, keybindButtonDescriptor = [table:4]{onShowCooldown = 2000, sound = "Dialog_Decline", keybind = "DIALOG_NEGATIVE", alignment = 1}, enabled = T </Locals>
    (tail call): ?
    /EsoUI/Libraries/ZO_Dialog/ZO_Dialog.lua:1268: in function 'ZO_Dialogs_ButtonKeybindPressed'
    <Locals> keybind = "DIALOG_NEGATIVE", dialog = ud, handledButton = F </Locals>
    :1: in function '(main chunk)'
    <Locals> keybind = "DIALOG_NEGATIVE" </Locals>

    I work around it for now by just using the keyboard dialogs, but it'd be nice to have a way to still use the gamepad flavored ones like the rest of the game does
Sign In or Register to comment.