Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Camera selector panel turn grey randomly #302

Closed
sivolc73 opened this issue Dec 12, 2024 · 4 comments · Fixed by #309
Closed

Camera selector panel turn grey randomly #302

sivolc73 opened this issue Dec 12, 2024 · 4 comments · Fixed by #309
Labels
bug Something isn't working

Comments

@sivolc73
Copy link
Contributor

This bug have existed for a long time now but I never could catch it.

The camera and layout selector panel will sometime just turn grey, no crash, no log event, I even tried to trigger this bug with flutter debug but I never could trigger it while debugging.

I can't quite reproduce it at will but it will happens at least once or twice a week. I have the feeling that it happens when I switch layout while a stream is still loading (but I'm not 100% sure) If I switch back to another view like setting and come back it will reappear.

Version: 3.0.0-beta20 and at least 5-6 previous versions, also on last bleeding edge
System: Windows (10) and Linux (Seen on Ubuntu 20.04, 22.04 and PopOS)

image

@curtishall
Copy link
Member

Thanks, the next time this occurs can you attach the logs in the settings.

@sivolc73
Copy link
Contributor Author

This bug doesn't seem to produce log entries, I have these but the crash at this instance happens at 10:58

[2024-12-13T10:55:28.045943] Running on UnityVideoPlayerFlutterInterface video playback
[2024-12-13T10:57:30.491505]Uncaught error
[2024-12-13T10:57:30.491505]Error: LateInitializationError: Field 'instance' has not been initialized.
[2024-12-13T10:57:30.491505]Stack trace: #0      writeLogToFile (package:bluecherry_client/utils/logging.dart)
<asynchronous suspension>

[2024-12-13T10:57:31.471934] Running on UnityVideoPlayerFlutterInterface video playback

One thing I noticed is if I start the app, then switch layout few time the bug will likely occur, but once all the streams are loaded if I go to another tab and come back to live view to let this widget rebuild I can't trigger the bug anymore, hope this help.

@bdlukaa
Copy link
Collaborator

bdlukaa commented Dec 13, 2024

This issue has been haunting us for a very, very long time. I have tried to fix it a few times (f98ed1b, e3f4ed5, 13105a3). Resizing the window usually fixes it. I believe the issue is that the Dart garbage collector collects our devices data when it shouldn't, causing to the Cannot assign Null to Iterable<Device> error.

It may be necessary to rewrite the sidebar logic.

@bdlukaa bdlukaa added the bug Something isn't working label Dec 13, 2024
@bdlukaa bdlukaa moved this to In Progress in Bluecherry Unity Dec 17, 2024
@bdlukaa
Copy link
Collaborator

bdlukaa commented Dec 25, 2024

The error that causes this issue:

══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following _TypeError was thrown building DesktopSidebar(dependencies: [InheritedCupertinoTheme,
_InheritedProviderScope<ServersProvider?>, _InheritedProviderScope<SettingsProvider?>,
_InheritedTheme, _LocalizationsScope-[GlobalKey#c9ca8]], state: _DesktopSidebarState#0b6c3):
type 'Null' is not a subtype of type 'List<Device>' in type cast

The relevant error-causing widget was:
  DesktopSidebar
  DesktopSidebar:file:///C:/Users/bruno/Documents/flutter/paid_projects/unity/lib/screens/layouts/desktop/layout_view.dart:99:16

When the exception was thrown, this was the stack:
#0      MapBase.entries.<anonymous closure> (dart:collection/maps.dart:76:62)
#1      MappedIterator.moveNext (dart:_internal/iterable.dart:403:20)
#2      new _GrowableList._ofOther (dart:core-patch/growable_array.dart:202:26)
#3      new _List._ofOther (dart:core-patch/array.dart:176:43)
#4      new _List.of (dart:core-patch/array.dart:130:18)
#5      new List.of (dart:core-patch/array_patch.dart:39:50)
#6      Iterable.toList (dart:core/iterable.dart:498:7)
#7      _DesktopSidebarState.build (package:bluecherry_client/screens/layouts/desktop/sidebar.dart:88:41)
#8      StatefulElement.build (package:flutter/src/widgets/framework.dart:5729:27)
#9      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5617:15)
#10     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#11     Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#12     StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#13     Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#14     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6907:14)
#15     Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#16     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#17     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#18     Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#19     StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#20     Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#21     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#22     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#23     Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#24     StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#25     Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#26     Element.updateChildren (package:flutter/src/widgets/framework.dart:4090:32)
#27     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:7060:17)
#28     Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#29     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642:16)
#30     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:11)
#31     Element.rebuild (package:flutter/src/widgets/framework.dart:5333:7)
#32     StatefulElement.update (package:flutter/src/widgets/framework.dart:5803:5)
#33     Element.updateChild (package:flutter/src/widgets/framework.dart:3941:15)
#34     _LayoutBuilderElement._rebuildWithConstraints.updateChildCallback
(package:flutter/src/widgets/layout_builder.dart:207:18)
#35     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3038:19)
#36     _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:231:12)
#37     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2719:59)
#38     PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1098:15)
#39     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2719:14)
#40     RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:278:5)
#41     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:369:5)
#42     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#43     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#44     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#45     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#46     RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:569:11)
#47     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#48     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#49     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1448:11)
#50     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#51     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#52     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#53     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#54     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#55     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#56     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#57     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#58     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#59     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#60     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#61     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#62     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#63     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#64     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#65     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#66     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#67     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#68     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#69     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#70     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#71     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61:11)
#72     RenderStack._computeSize (package:flutter/src/rendering/stack.dart:595:43)
#73     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:622:12)
#74     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#75     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#76     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1448:11)
#77     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#78     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61:11)
#79     RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:1009:71)
#80     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:1051:32)
#81     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#82     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61:11)
#83     RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:1009:71)
#84     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:1051:32)
#85     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#86     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:173:12)
#87     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1092:7)
#88     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:237:7)
#89     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:404:14)
#90     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#91     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#92     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#93     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#94     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1448:11)
#95     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#96     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:371:14)
#97     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#98     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#99     RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#100    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#101    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#102    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#103    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#104    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#105    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#106    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#107    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#108    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#109    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#110    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#111    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#112    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#113    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#114    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#115    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#116    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#117    RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3728:13)
#118    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#119    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#120    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#121    _RenderTheaterMixin.layoutChild (package:flutter/src/widgets/overlay.dart:1002:13)
#122    _RenderTheater.performLayout (package:flutter/src/widgets/overlay.dart:1311:9)
#123    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#124    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#125    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#126    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#127    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#128    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#129    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#130    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#131    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#132    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#133    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#134    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#135    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#136    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#137    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#138    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#139    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#140    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#141    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#142    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:21)
#143    RenderObject.layout (package:flutter/src/rendering/object.dart:2608:7)
#144    RenderView.performLayout (package:flutter/src/rendering/view.dart:281:14)
#145    RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2446:7)
#146    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1052:18)
#147    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1065:15)
#148    RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:602:23)
#149    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1164:13)
#150    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:468:5)
#151    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1397:15)
#152    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1318:9)
#153    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1176:5)
#157    _invoke (dart:ui/hooks.dart:314:10)
#158    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:419:5)
#159    _drawFrame (dart:ui/hooks.dart:283:31)
(elided 3 frames from dart:async)

════════════════════════════════════════════════════════════════════════════════════════════════════

Another exception was thrown: type 'Null' is not a subtype of type 'List<Device>' in type cast

@bdlukaa bdlukaa mentioned this issue Dec 30, 2024
8 tasks
@github-project-automation github-project-automation bot moved this from In Progress to Done in Bluecherry Unity Jan 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

3 participants