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

Abnormal CPU Usage #1280

Closed
1 of 2 tasks
Shark3900 opened this issue Feb 29, 2024 · 7 comments
Closed
1 of 2 tasks

Abnormal CPU Usage #1280

Shark3900 opened this issue Feb 29, 2024 · 7 comments
Labels
bug Something isn't working

Comments

@Shark3900
Copy link

Shark3900 commented Feb 29, 2024

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Sometime after using the app, my CPU usage will skyrocket until everything on my PC begins acting like a PowerPoint Slideshow, at which point I kill Spotube in Task Manager and everything returns to normal.

Expected Behavior

It don't do that.

Steps to reproduce

  1. Open the app.
  2. Play music.
  3. Pause music (or reach the end of a playlist.)
  4. Wait (Disclaimer: This isn't very helpful, I fully admit that. I haven't pinpointed precisely when or why it happens,)
  5. CPU usage will inevitably increase until 100%.

Operating System

Windows 11 Home 22H2

Spotube version

3.4.1

Installation source

GitHub Releases (Binary)

Additional information

I did search and notice this seemed talked about in various forms before, but I haven't seen anything about it since the latest release. Not sure what's causing it, though I notice whenever it happens all of the images on the Browse screen of Spotube flicker constantly. The playlists I play are usually fairly small, like 10 songs, so it's not a size of playlist issue. I have no open dialogue boxes either, just sitting at the Browse screen.

Edit:
Pausing (or finishing) a playlist, leaving it alone for some time (in this case, about 20-30 minutes) then resuming caused it to instantly jump to 100% usage.

Self grab

  • I'm ready to work on this issue!
@Shark3900 Shark3900 added the bug Something isn't working label Feb 29, 2024
@Shark3900
Copy link
Author

image
Please I'm trying to listen to music not boil myself alive.

@KRTirtho
Copy link
Owner

KRTirtho commented Mar 7, 2024

@Shark3900 I hear you man. Windows has never been the most resource efficient platform for Spotube.
I think there are a lot of variables that need to match in order to have this kind of CPU usage. The memory usage seems reasonable (although 300MB is still high for Spotube which is usually around ~180MB) so the CPU spike means there's something problematic with either the Player or the File System.

Can you specify your CPU model?

@Shark3900
Copy link
Author

Yeah I noticed the memory usage is fairly low (agree 300 is high but that's still not extremely unreasonable with the amount of electron apps I willingly run haha).

I've got a Ryzen 7 5800X, I don't have any relevant debugging software or anything for something like this but if you know of anything I should try to record it with I'd be down to try and grab logs.

@skruglov2023
Copy link

image
Funny enough I was reading through and noticed my laptop, ryzen 5 4600h was doing something weirdly similar...
And then moments later, my laptop went back to an issue I've reported #1269

@KRTirtho
Copy link
Owner

This has been fixed in 6673e5a

Try out the nightly version. Later it'll be released

@Shark3900
Copy link
Author

I meant to write back on this a while ago but it completely slipped my mind:

I've been unable to test if this issue still occurs for me in 3.6.0 as any attempts to install Spotube on this version has lead to it failing to launch, around the same time as #1440 popped up - but curiously, I didn't have this issue in the version I originally wrote this in (3.4.1), so I'm unsure this has anything to do with my specific CPU (like #1156) or Windows 10 LTSC (like #44 and #118).

@Shark3900
Copy link
Author

Shark3900 commented May 21, 2024

Some additional investigation, I noticed the log file was actually getting updated when I attempted to run the stable 3.6.0 build:

------- APP INFO -------
environment: release
version: 3.6.0
appName: spotube
buildNumber: 
packageName: spotube

---------- ERROR ----------
type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'

------- STACK TRACE -------
#0      AlbumSimple._extractTracksFromPage (package:spotify/src/models/album.dart:50)
#1      _$AlbumSimpleFromJson (package:spotify/src/models/_models.g.dart:332)
#2      new AlbumSimple.fromJson (package:spotify/src/models/album.dart:42)
#3      _$TrackFromJson (package:spotify/src/models/_models.g.dart:795)
#4      new Track.fromJson (package:spotify/src/models/track.dart:11)
#5      ProxyPlaylist._makeAppropriateTrack (package:spotube/provider/proxy_playlist/proxy_playlist.dart:60)
#6      new ProxyPlaylist.fromJson.<anonymous closure> (package:spotube/provider/proxy_playlist/proxy_playlist.dart:20)
#7      MappedIterable.elementAt (dart:_internal/iterable.dart:385)
#8      ListIterable.toSet (dart:_internal/iterable.dart:229)
#9      new ProxyPlaylist.fromJson (package:spotube/provider/proxy_playlist/proxy_playlist.dart:20)
#10     ProxyPlaylistNotifier.fromJson (package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart:216)
#11     PersistedStateNotifier._load (package:spotube/utils/persisted_state_notifier.dart:125)
<asynchronous suspension>
#12     new PersistedStateNotifier.<anonymous closure> (package:spotube/utils/persisted_state_notifier.dart:36)
<asynchronous suspension>

This differs from the latest nightly build which does manage to exist - suggesting to me it's already fixed - but only for a second or 2 before itself crashing:

------- APP INFO -------
environment: release
version: 3.6.0
appName: spotube
buildNumber: 
packageName: spotube

---------- ERROR ----------
Exception: Unsupported message, action=[2196840648544, 8] raw=[[2196840648544, 8], true]

------- STACK TRACE -------
#0      FlutterRustBridgeBase._transformRust2DartMessage (package:flutter_rust_bridge/src/basic.dart:133)
#1      FlutterRustBridgeBase.executeSync (package:flutter_rust_bridge/src/basic.dart:85)
#2      SmtcWindowsImpl.smtcNew (package:smtc_windows/src/bridge_generated.dart:158)
#3      new SMTCWindows (package:smtc_windows/src/smtc_windows_base.dart:50)
#4      new WindowsAudioService (package:spotube/services/audio_services/windows_audio_service.dart:20)
#5      AudioServices.create (package:spotube/services/audio_services/audio_services.dart:32)
#6      new ProxyPlaylistNotifier (package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart:39)
#7      proxyPlaylistProvider.<anonymous closure> (package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart:214)
#8      StateNotifierProvider._create (package:riverpod/src/state_notifier_provider/base.dart:115)
#9      StateNotifierProviderElement.create.<anonymous closure> (package:riverpod/src/state_notifier_provider/base.dart:164)
#10     Result.guard (package:riverpod/src/result.dart:21)
#11     StateNotifierProviderElement.create (package:riverpod/src/state_notifier_provider/base.dart:164)
#12     ProviderElementBase.buildState (package:riverpod/src/framework/element.dart:409)
#13     ProviderElementBase.mount (package:riverpod/src/framework/element.dart:226)
#14     _StateReader._create (package:riverpod/src/framework/container.dart:47)
#15     _StateReader.getElement (package:riverpod/src/framework/container.dart:35)
#16     ProviderContainer.readProviderElement (package:riverpod/src/framework/container.dart:479)
#17     ProviderElementBase.readProviderElement (package:riverpod/src/framework/element.dart:730)
#18     ProviderElementProxy.addListener (package:riverpod/src/framework/proxy_provider_listenable.dart:86)
#19     ProviderElementBase.listen (package:riverpod/src/framework/element.dart:746)
#20     ProviderElementBase.watch (package:riverpod/src/framework/element.dart:687)
#21     trayMenuProvider.<anonymous closure> (package:spotube/provider/tray_manager/tray_menu.dart:22)
#22     Provider._create (package:riverpod/src/provider/base.dart:55)
#23     ProviderElement.create (package:riverpod/src/provider/base.dart:338)
#24     ProviderElementBase.buildState (package:riverpod/src/framework/element.dart:409)
#25     ProviderElementBase.mount (package:riverpod/src/framework/element.dart:226)
#26     _StateReader._create (package:riverpod/src/framework/container.dart:47)
#27     _StateReader.getElement (package:riverpod/src/framework/container.dart:35)
#28     ProviderContainer.readProviderElement (package:riverpod/src/framework/container.dart:479)
#29     ProviderElementBase.readProviderElement (package:riverpod/src/framework/element.dart:730)
#30     ProviderBase.addListener (package:riverpod/src/framework/provider_base.dart:79)
#31     ProviderElementBase.listen (package:riverpod/src/framework/element.dart:746)
#32     trayManagerProvider.<anonymous closure> (package:spotube/provider/tray_manager/tray_manager.dart:65)
#33     Provider._create (package:riverpod/src/provider/base.dart:55)
#34     ProviderElement.create (package:riverpod/src/provider/base.dart:338)
#35     ProviderElementBase.buildState (package:riverpod/src/framework/element.dart:409)
#36     ProviderElementBase.mount (package:riverpod/src/framework/element.dart:226)
#37     _StateReader._create (package:riverpod/src/framework/container.dart:47)
#38     _StateReader.getElement (package:riverpod/src/framework/container.dart:35)
#39     ProviderContainer.readProviderElement (package:riverpod/src/framework/container.dart:479)
#40     ProviderBase.addListener (package:riverpod/src/framework/provider_base.dart:79)
#41     ProviderContainer.listen (package:riverpod/src/framework/container.dart:280)
#42     ConsumerStatefulElement.listen (package:flutter_riverpod/src/consumer.dart:607)
#43     SpotubeState.build (package:spotube/main.dart:191)
#44     StatefulElement.build (package:flutter/src/widgets/framework.dart:5592)
#45     ConsumerStatefulElement.build (package:flutter_riverpod/src/consumer.dart:539)
#46     HookElement.build (package:flutter_hooks/src/framework.dart:438)
#47     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5480)
#48     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643)
#49     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#50     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#51     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5634)
#52     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#53     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#54     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#55     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#56     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#57     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#58     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#59     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#60     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#61     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#62     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643)
#63     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#64     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#65     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5634)
#66     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#67     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#68     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#69     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#70     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#71     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#72     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#73     _UncontrolledProviderScopeElement.mount (package:flutter_riverpod/src/framework.dart:315)
#74     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#75     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#76     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#77     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643)
#78     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#79     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#80     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5634)
#81     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#82     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#83     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#84     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#85     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#86     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#87     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#88     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#89     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#90     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#91     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5643)
#92     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#93     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#94     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5634)
#95     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#96     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#97     Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#98     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#99     Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#100    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#101    ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#102    Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#103    Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#104    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#105    Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#106    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#107    ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#108    Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#109    Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#110    _RawViewElement._updateChild (package:flutter/src/widgets/view.dart:291)
#111    _RawViewElement.mount (package:flutter/src/widgets/view.dart:314)
#112    Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#113    Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#114    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5505)
#115    Element.rebuild (package:flutter/src/widgets/framework.dart:5196)
#116    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5462)
#117    ComponentElement.mount (package:flutter/src/widgets/framework.dart:5456)
#118    Element.inflateWidget (package:flutter/src/widgets/framework.dart:4335)
#119    Element.updateChild (package:flutter/src/widgets/framework.dart:3846)
#120    RootElement._rebuild (package:flutter/src/widgets/binding.dart:1354)
#121    RootElement.mount (package:flutter/src/widgets/binding.dart:1323)
#122    RootWidget.attach.<anonymous closure> (package:flutter/src/widgets/binding.dart:1276)
#123    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2844)
#124    RootWidget.attach (package:flutter/src/widgets/binding.dart:1275)
#125    WidgetsBinding.attachToBuildOwner (package:flutter/src/widgets/binding.dart:1088)
#126    WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:1070)
#127    WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:1056)
#128    TickerFuture.whenCompleteOrCancel.thunk (package:flutter/src/scheduler/ticker.dart:435)
#129    _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398)
#130    _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429)
#131    _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184)

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: Deployed
Development

No branches or pull requests

3 participants