app-center icon indicating copy to clipboard operation
app-center copied to clipboard

Missing locale causes `DateFormat` to throw an exception

Open Snubletunge opened this issue 1 year ago • 20 comments

When I choose an app in the Ubuntu App Center, it won't show details about the app, or the information images just flash for a moment.

** (snap-store:17779): WARNING **: 18:43:14.817: atk-bridge: get_device_events_reply: unknown signature flutter: Another exception was thrown: Instance of 'DiagnosticsProperty'

I have tried to reinstall Ubuntu, but the issue persist.

System Details Report


Report details

  • Date generated: 2024-04-29 18:49:50

Hardware Information:

  • Hardware Model: Apple Inc. MacBookPro12,1
  • Memory: 8,0 GiB
  • Processor: Intel® Coreâ„¢ i5-5257U × 4
  • Graphics: Intel® Iris® Graphics 6100 (BDW GT3)
  • Disk Capacity: 121,3 GB

Software Information:

  • Firmware Version: 430.140.3.0.0
  • OS Name: Ubuntu 24.04 LTS
  • OS Build: (null)
  • OS Type: 64-bit
  • GNOME Version: 46
  • Windowing System: Wayland
  • Kernel Version: Linux 6.8.0-31-generic

bilde

Snubletunge avatar Apr 29 '24 16:04 Snubletunge

Thanks for the report - could you provide the log files from $HOME/snap/snap-store/current/.local/share/snap-store and the output of glxinfo -B to help diagnose possible rendering issues?

d-loose avatar Apr 30 '24 13:04 d-loose

This looks like the error widget in release mode :) (a widget that flutter draws when something went wrong) Could you start snap-store from the terminal and provide any errors / outputs / exceptions here?

Feichtmeier avatar Apr 30 '24 14:04 Feichtmeier

Here is the error message when running the snap from terminal:

Gtk-Message: 19:02:17.408: Not loading module "atk-bridge": The functionality is provided by GTK natively. Please try to not load it. flutter: INFO snap-store: Logging to /home/chello/snap/snap-store/1134/.local/share/snap-store/snap-store.log flutter: INFO appstream: Unsupported locale: nn. Defaulting to "en".

** (snap-store:3529): WARNING **: 19:02:42.600: atk-bridge: get_device_events_reply: unknown signature

@d-loose $HOME /snap/snap-store/current/.local/share/snap-store$ glxinfo -b Command 'glxinfo' not found, but can be installed with: sudo apt install mesa-utils

snap-store.log (Copy).txt

Snubletunge avatar Apr 30 '24 17:04 Snubletunge

And another when I start snap-store from Terminal, and select an app from the main page (Transmission) to view in the store:

$ snap run snap-store
Gtk-Message: 19:33:49.940: Not loading module "atk-bridge": The functionality is provided by GTK natively. Please try to not load it.
flutter: INFO snap-store: Logging to /home/chello/snap/snap-store/1134/.local/share/snap-store/snap-store.log
flutter: INFO appstream: Unsupported locale: nn. Defaulting to "en".
flutter: Invalid argument(s): Invalid locale "nn"
flutter: #0      _throwLocaleError (package:intl/src/intl_helpers.dart:204)
flutter: #1      verifiedLocale (package:intl/src/intl_helpers.dart:198)
flutter: #2      verifiedLocale (package:intl/src/intl_helpers.dart:183)
flutter: #3      new DateFormat (package:intl/src/intl/date_format.dart:267)
flutter: #4      new DateFormat.yMMMd (package:intl/src/intl/date_format.dart:470)
flutter: #5      _SnapView.build (package:app_center/src/snapd/snap_page.dart:129)
flutter: #6      _ConsumerState.build (package:flutter_riverpod/src/consumer.dart:476)
flutter: #7      StatefulElement.build (package:flutter/src/widgets/framework.dart:5592)
flutter: #8      ConsumerStatefulElement.build (package:flutter_riverpod/src/consumer.dart:539)
flutter: #9      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5480)
flutter: #10     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643)
flutter: #11     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
flutter: #12     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
flutter: #13     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5634)
flutter: #14     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
flutter: #15     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
flutter: #16     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
flutter: #17     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
flutter: #18     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
flutter: #19     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
flutter: #20     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
flutter: #21     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
flutter: #22     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
flutter: #23     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
flutter: #24     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
flutter: #25     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
flutter: #26     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
flutter: #27     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
flutter: #28     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
flutter: #29     _LayoutBuilderElement._layout.layoutCallback (package:flutter/src/widgets/layout_builder.dart:155)
flutter: #30     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2844)
flutter: #31     _LayoutBuilderElement._layout (package:flutter/src/widgets/layout_builder.dart:173)
flutter: #32     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2686)
flutter: #33     PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1097)
flutter: #34     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2686)
flutter: #35     RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:248)
flutter: #36     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:331)
flutter: #37     RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
flutter: #38     RenderBox.layout (package:flutter/src/rendering/box.dart:2389)
flutter: #39     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105)
flutter: #40     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2414)
flutter: #41     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1051)
flutter: #42     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1064)
flutter: #43     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:582)
flutter: #44     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:991)
flutter: #45     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:448)
flutter: #46     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1386)
flutter: #47     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1311)
flutter: #48     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1169)
flutter: #49     _invoke (dart:ui/hooks.dart:312)
flutter: #50     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:399)
flutter: #51     _drawFrame (dart:ui/hooks.dart:283)

Snubletunge avatar Apr 30 '24 17:04 Snubletunge

OK, so the locale nn (Norwegian nynorsk) that I am using, is crashing this, changed to the locale nb (Norwegian bokmål) and the store works as it should.

Still seems something is off when I run it from Terminal:

$ snap run snap-store Gtk-Message: 19:46:14.151: Not loading module "atk-bridge": The functionality is provided by GTK natively. Please try to not load it. flutter: INFO snap-store: Logging to /home/chello/snap/snap-store/1134/.local/share/snap-store/snap-store.log flutter: INFO appstream: Unsupported locale: nb_NO. Defaulting to "en".

** (snap-store:5753): WARNING **: 19:46:39.348: atk-bridge: get_device_events_reply: unknown signature

Snubletunge avatar Apr 30 '24 17:04 Snubletunge

Thanks for providing those additional details. The issue seems to be that, even though the proper localization delegates for nn_NO and others are provided by ubuntu_localizations, they're only available if the corresponding locale is listed in the supportedLocales for the MaterialApp. With our current setup that requires the existence of the respective .arb file. I'm adding nn_NO through weblate to see if that solves the problem for this specific locale. I'll keep this issue open though, since we should find a proper solution for all cases.

d-loose avatar May 06 '24 15:05 d-loose

Also having this problem.

mguinhos avatar Jun 04 '24 06:06 mguinhos

Also having this problem.

Which locale are you using? Are you seeing a similar error message when running snap-store from the terminal?

d-loose avatar Jun 04 '24 08:06 d-loose

@d-loose

flutter: INFO appstream: Unsupported locale: und. Defaulting to "en".

(snap-store:14198): Gdk-CRITICAL **: 15:11:19.710: gdk_device_get_source: assertion 'GDK_IS_DEVICE (device)' failed
flutter: Invalid argument(s): Invalid locale "und"
flutter: #0      _throwLocaleError (package:intl/src/intl_helpers.dart:208)
flutter: #1      verifiedLocale (package:intl/src/intl_helpers.dart:202)
flutter: #2      verifiedLocale (package:intl/src/intl_helpers.dart:182)
flutter: #3      new DateFormat (package:intl/src/intl/date_format.dart:267)
flutter: #4      new DateFormat.yMMMd (package:intl/src/intl/date_format.dart:548)

its saying my locale is und.

mguinhos avatar Aug 31 '24 18:08 mguinhos

its saying my locale is und.

That means the locale is 'undetermined', so either the flutter framework has problems parsing your locale, or there's already something broken in your system setup. In either case, we should handle this case properly.

Could you post the output of

locale

as well?

d-loose avatar Sep 02 '24 16:09 d-loose

Sure,

$ locale
LANG=pt_BR.UTF-8
LANGUAGE=pt_BR:
LC_CTYPE="pt_BR.UTF-8"
LC_NUMERIC="pt_BR.UTF-8"
LC_TIME="pt_BR.UTF-8"
LC_COLLATE="pt_BR.UTF-8"
LC_MONETARY="pt_BR.UTF-8"
LC_MESSAGES="pt_BR.UTF-8"
LC_PAPER="pt_BR.UTF-8"
LC_NAME="pt_BR.UTF-8"
LC_ADDRESS="pt_BR.UTF-8"
LC_TELEPHONE="pt_BR.UTF-8"
LC_MEASUREMENT="pt_BR.UTF-8"
LC_IDENTIFICATION="pt_BR.UTF-8"
LC_ALL=

mguinhos avatar Sep 02 '24 18:09 mguinhos

@d-loose

mguinhos avatar Sep 05 '24 18:09 mguinhos

Seems like Flutter doesn't parse LANGUAGE=pt_BR: correctly. The resulting locale is 'und' in this case. Both pt_BR and pt_BR:pt work correctly though.

@robert-ancell I suppose this happens at the level of the engine - do you know more?

d-loose avatar Sep 05 '24 19:09 d-loose

We used g_get_language_names in the engine instead of writing our own parser with the hope this would do the right thing... However it seems to make both duplicate and empty locales; parsing LANGUAGE=pt_BR: returns "pt_BR", "pt", "", "C". I suspect the empty string is confusing Flutter and making the "und" locale.

robert-ancell avatar Sep 10 '24 22:09 robert-ancell

Sigh, and LANGUAGE="pt_BR: :" also returns " " and "".

robert-ancell avatar Sep 10 '24 22:09 robert-ancell

See https://github.com/flutter/engine/pull/55091, this should hopefully improve things.

robert-ancell avatar Sep 10 '24 23:09 robert-ancell

Great, thanks a lot for digging into this!

d-loose avatar Sep 11 '24 08:09 d-loose

I've got the same issue:

snap-store
Gtk-Message: 10:33:46.311: Not loading module "atk-bridge": The functionality is provided by GTK natively. Please try to not load it.
/usr/share/libdrm/amdgpu.ids: No such file or directory
embedder.cc (3066): 'FlutterEngineUpdateLocales' returned 'kInvalidArguments'. Language code is required but not present in FlutterLocale.

** (snap-store:8361): WARNING **: 10:33:46.553: Failed to set up Flutter locales
flutter: INFO snap-store: Logging to /home/.../snap/snap-store/1270/.local/share/snap-store/snap-store.log
flutter: INFO appstream: Unsupported locale: und. Defaulting to "en"

and after clicking an snap app:

flutter: Invalid argument(s): Invalid locale "und"
flutter: #0      _throwLocaleError (package:intl/src/intl_helpers.dart:208)
flutter: #1      verifiedLocale (package:intl/src/intl_helpers.dart:202)
flutter: #2      verifiedLocale (package:intl/src/intl_helpers.dart:182)
flutter: #3      new DateFormat (package:intl/src/intl/date_format.dart:267)
flutter: #4      new DateFormat.yMMMd (package:intl/src/intl/date_format.dart:548)
flutter: #5      _SnapView.build (package:app_center/snapd/snap_page.dart:116)
flutter: #6      StatelessElement.build (package:flutter/src/widgets/framework.dart:5687)
flutter: #7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5617)
flutter: #8      Element.rebuild (package:flutter/src/widgets/framework.dart:5333)
flutter: #9      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5599)
flutter: #10     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5593)
flutter: #11     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4468)
flutter: #12     Element.updateChild (package:flutter/src/widgets/framework.dart:3963)
flutter: #13     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642)
flutter: #14     Element.rebuild (package:flutter/src/widgets/framework.dart:5333)
flutter: #15     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5599)
flutter: #16     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5593)
flutter: #17     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4468)
flutter: #18     Element.updateChild (package:flutter/src/widgets/framework.dart:3963)
flutter: #19     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5642)
flutter: #20     Element.rebuild (package:flutter/src/widgets/framework.dart:5333)
flutter: #21     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5599)
flutter: #22     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5593)
flutter: #23     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4468)
flutter: #24     Element.updateChild (package:flutter/src/widgets/framework.dart:3963)
flutter: #25     _LayoutBuilderElement._rebuildWithConstraints.updateChildCallback (package:flutter/src/widgets/layout_builder.dart:207)
flutter: #26     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3038)
flutter: #27     _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:231)
flutter: #28     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2719)
flutter: #29     PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1098)
flutter: #30     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2719)
flutter: #31     RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:278)
flutter: #32     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:369)
flutter: #33     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #34     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #35     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #36     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #37     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #38     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #39     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #40     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #41     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #42     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #43     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #44     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #45     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #46     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #47     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #48     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #49     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #50     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #51     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #52     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3726)
flutter: #53     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #54     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
flutter: #55     RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
flutter: #56     _RenderTheaterMixin.layoutChild (package:flutter/src/widgets/overlay.dart:1002)
flutter: #57     _RenderTheater.performLayout (package:flutter/src/widgets/overlay.dart:1311)
flutter: #58     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2446)
flutter: #59     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1052)
flutter: #60     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1065)
flutter: #61     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:602)
flutter: #62     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1164)
flutter: #63     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:468)
flutter: #64     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1397)
flutter: #65     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1318)
flutter: #66     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1176)
flutter: #70     _invoke (dart:ui/hooks.dart:314)
flutter: #71     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:419)
flutter: #72     _drawFrame (dart:ui/hooks.dart:283)
flutter: (elided 3 frames from dart:async)

with:

locale
LANG=en_US.UTF-8
LANGUAGE=en_US:
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=

GonerGenesis avatar Apr 14 '25 08:04 GonerGenesis

@d-loose do you've got an idea? Nevermind, I just saw that there are more issues ongoing ... I'll guess you're already on it.

GonerGenesis avatar Apr 15 '25 06:04 GonerGenesis

Will be fixed by https://github.com/canonical/ubuntu-flutter-plugins/pull/476

d-loose avatar Apr 15 '25 16:04 d-loose