GNOME Bugzilla – Bug 723661
JS ERROR: Exception in callback for signal: updated: Error: can't convert 1.1643481557558656e+26 to an integer
Last modified: 2021-07-05 14:14:59 UTC
LayoutManager<.findIndexForActor@resource:///org/gnome/shell/ui/layout.js:892 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 LayoutManager<.findMonitorForActor@resource:///org/gnome/shell/ui/layout.js:897 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 LayoutManager<._updateVisibility@resource:///org/gnome/shell/ui/layout.js:872 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 LayoutManager<._sessionUpdated@resource:///org/gnome/shell/ui/layout.js:271 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 _emit@resource:///org/gnome/gjs/modules/signals.js:124 SessionMode<._sync@resource:///org/gnome/shell/ui/sessionMode.js:199 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 SessionMode<.popMode@resource:///org/gnome/shell/ui/sessionMode.js:168 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 ScreenShield<._continueDeactivate@resource:///org/gnome/shell/ui/screenShield.js:1214 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 ScreenShield<.deactivate/<@resource:///org/gnome/shell/ui/screenShield.js:1199 AuthPrompt<.finish@resource:///org/gnome/shell/gdm/authPrompt.js:490 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 UnlockDialog<.finish@resource:///org/gnome/shell/ui/unlockDialog.js:147 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 ScreenShield<.deactivate@resource:///org/gnome/shell/ui/screenShield.js:1198 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 ScreenShield<._init/</<@resource:///org/gnome/shell/ui/screenShield.js:570 _emit@resource:///org/gnome/gjs/modules/signals.js:124 _convertToNativeSignal@resource:///org/gnome/gjs/modules/overrides/Gio.js:129 Don't ask me how that is possible!
Followed by (gnome-shell:2062): Gjs-WARNING **: JS ERROR: Error: can't convert 1.168745859543038e+26 to an integer LayoutManager<.findIndexForActor@resource:///org/gnome/shell/ui/layout.js:892 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 LayoutManager<.findMonitorForActor@resource:///org/gnome/shell/ui/layout.js:897 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 LayoutManager<._updateVisibility@resource:///org/gnome/shell/ui/layout.js:872 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 LayoutManager<._windowsRestacked@resource:///org/gnome/shell/ui/layout.js:931 wrapper@resource:///org/gnome/gjs/modules/lang.js:169 At each windows-restacked emission.
Created attachment 268524 [details] [review] LayoutManager: untrack actors that are destroyed If an actor is destroyed, calling get_transformed_size()/position() can return bogus values and trigger JS exceptions. This can happen if a tracked actor comes from an extension (such as classic mode's window-list) and that extension is deactivated.
Created attachment 268525 [details] [review] LayoutManager: don't crash if an actor has no allocation Inside _sessionUpdated()/_updateVisibility(), we might call findIndexForActor() for actors that were just created (for example because they come from extensions that were just enabled due to the session-mode change). For them, get_transformed_position() and get_transformed_size() return bogus values, that later cause a JS exception when we pass them to MetaRectangle, because they can't be converted to int.
Review of attachment 268524 [details] [review]: OK.
Comment on attachment 268524 [details] [review] LayoutManager: untrack actors that are destroyed Attachment 268524 [details] pushed as 477f28a - LayoutManager: untrack actors that are destroyed
Review of attachment 268525 [details] [review]: I'm quite sure if !has_allocation(), get_transformed_position() / get_transformed_size() should return -1.
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org. As part of that, we are mass-closing older open tickets in bugzilla.gnome.org which have not seen updates for a longer time (resources are unfortunately quite limited so not every ticket can get handled). If you can still reproduce the situation described in this ticket in a recent and supported software version, then please follow https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines and create a new ticket at https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/ Thank you for your understanding and your help.