StreamController icon indicating copy to clipboard operation
StreamController copied to clipboard

BUG: Unstable, crashing lots.

Open codefaux opened this issue 6 months ago • 16 comments

I'm ditching the template.

1.5.0-beta.11

This app just became utterly unusable. I get that it's an update and we have to redo the configs.

The app crashes when I try to add some actions. It crashes when I try to change the icon of an existing action. It crashes when I try to interact with several other UI elements.

So I deleted every button config, entirely. Utterly wiped my entire Deck config.

I started rebuilding it, and it keeps crashing.

So I started rebuilding one button at a time. Start app, configure button, Quit.

Restart app, configure next button, Quit.

Then I noticed that the four Set Volume / Adjust Volume / Mute controls I'd just written had no icon or text.

Going inside that Action configuration, everything looks right, but there's no text or icon on the button. So, I start clicking the "reset to default" buttons and things start working again, and I re-configure it the way I want it, but there's still NO ICON. So I close the action and click the "Allow icon to control the media" button and it crashes again.

"Allow icon to control the background color" just crashes the app when turning it on, but not when turning it off.

When it crashes it loses EVERYTHING since your last ...what, quit? There's no save button so you can't explicitly save to avoid iritation with crashiness.

Now on to the quality of life:

I assume you still can't configure a disconnected Stream Deck's stuff? What if it physically broke and I want to port my config?

Things are named really obtusely. "Standard Device"? You mean "Default audio device"? "Device Filter"? You mean "Device Type"? How do I type a number instead of trying to get that stupid slider EXACTLY where I want it?

Audio Control -- Mute -- So this just toggles, then? I can't explicitly mute, or explicitly unmute an input, I can only toggle it? At least I assume if I can get it to work it will toggle, it doesn't say that it toggles anything it just says "Mute"

I see the "search" text input for things like Home Assistant are still "starts with" not "contains" ie if I have a thousand "switch.name" entries I have to type "switch.lab" to find the switches whose name starts with lab, instead of just "lab"...

I also literally just saw a video go up about how awesome Stream Deck is in Linux, and you're in it. Lots of eyes coming.

codefaux avatar Jun 21 '25 22:06 codefaux

I'm also noticing severe degradations since the latest update on CachyOS w/ KDE Plasma 6 and a Stream Deck Plus, to the point where the tool is borderline unusable. Frequent crashes, app takes ages to launch, audio control on the Stream Deck Plus's dial screen is always wiped on startup (icons blanked out and no functionality - interestingly enough, changing the background image to any random file and then reverting that seems to resolve the issue?). I'm completely unable to switch pages in the UI, as the app hard crashes whenever I try to do so.

Beta 10 worked fine for me, but 11 has completely broken this tool.

tomorrow-nf avatar Jun 25 '25 14:06 tomorrow-nf

Yeah I had to completely just stop using my Stream Deck. I can't get through adding six buttons without it crashing. All of the audio buttons will randomly fail to start.

I rely on my system for work. I rely on my system for entertainment. I don't know what happened but I want back on the mainline, non-beta release channel, so I can reinstall everything (because there's no configuration backup made during an upgrade, IS THERE?) and reconfigure it all from scratch.

How do I accomplish this?

codefaux avatar Jun 25 '25 17:06 codefaux

@codefaux @tomorrow-nf Just to go into a few points you both were making: StreamController is on beta since 1.5.0 it never was not on beta since 1.5.0.

Most of the crashes were in the app for a while. Like the background image or media control, this is nothing new. It was crashing even on beta.9 and 10.

The things youre saying about the Plugins can be posted on the Plugins repo as a lot of Plugins like AudioControl and HomeAssistant are not from StreamController itself.

AudioControl as an example has some issues when Actions/Plugins load before it which only became apparent since the Plugin updated, we dont know why that happens. Its probably something with Action loading times. This is also why the stuff is "wiped"

And the biggest thing: This is a Community Project, things break. Its normal. Especially with AudioControl no one is more frustrated then I am and no one can be more frustrated with the plugin then me. I will take a look and add some subtexts/text changes in general to the actions as those are some valid points.

For pages there are backups. /home/<USERNAME>/.var/app/com.core447.StreamController/data/pages/backups those are not created before updates but there should be some folders/files that contain page backups

G4PLS avatar Jun 25 '25 17:06 G4PLS

Hey there, thanks for feedback. I'll try to help out where I can and see if we can get you back on the right track

1.5.0-beta.11 -- I don't remember signing up for the beta track, because I don't like things suddenly and irreversibly breaking with no warning and no recourse. WTF.

This entire app is in beta, there is no non-beta version at this time. This is called out in the main page to let users know. https://github.com/StreamController/StreamController?tab=readme-ov-file#warning

Going inside that Action configuration, everything looks right, but there's no text or icon on the button. So, I start clicking the "reset to default" buttons and things start working again, and I re-configure it the way I want it, but there's still NO ICON. So I close the action and click the "Allow icon to control the media" button and it crashes again. ... "Allow icon to control the background color" just crashes the app when turning it on, but not when turning it off. ... When it crashes it loses EVERYTHING since your last ...what, quit? There's no save button so you can't explicitly save to avoid iritation with crashiness.

These things shouldn't be happening. If you could include the log file from ~/.var/app/com.core447.StreamController/data/logs/logs.log after this issue happens, we should be able to figure out what's going on.

I assume you still can't configure a disconnected Stream Deck's stuff? What if it physically broke and I want to port my config?

You can copy the config from ~/.var/app/com.core447.StreamController/data/settings/decks. While not the most ideal, it is currently supported. I don't see a feature request for handling this more gracefully through the app, but it's entirely possible I'm just missing it. If there is one, do you mind linking it here? And if there isn't one, i would recommend filing a proper feature request so it can be tracked and prioritized accordingly.

Things are named really obtusely. "Standard Device"? You mean "Default audio device"? "Device Filter"? You mean "Device Type"? How do I type a number instead of trying to get that stupid slider EXACTLY where I want it?

These are generally plugin specific configurations, not the overall app. For plugin specific features, it's best to mention these issues in the specific GitHub repo (which can be found in the About page for the installed plugin) as not all developers work on the main application.

Audio Control -- Mute -- So this just toggles, then? I can't explicitly mute, or explicitly unmute an input, I can only toggle it? At least I assume if I can get it to work it will toggle, it doesn't say that it toggles anything it just says "Mute"

As mentioned, this is a plugin issue. I would recommend mentioning this on the plugin repository: https://github.com/G4PLS/AudioControl

I see the "search" text input for things like Home Assistant are still "starts with" not "contains" ie if I have a thousand "switch.name" entries I have to type "switch.lab" to find the switches whose name starts with lab, instead of just "lab"...

This is part of the HomeAssistant plugin, I'd recommend posting issues here: https://github.com/gensyn/de_gensyn_HomeAssistantPlugin

For the app crashes, getting the following information would also be super helpful to help get your issue resolved:

  • What version of Linux are you on?
  • How are you installing StreamController (flatpak, aur, etc)
  • After this issue happens, before restarting StreamController, please grab and upload the log file at ~/.var/app/com.core447.StreamController/data/logs/logs.log

ImDevinC avatar Jun 25 '25 17:06 ImDevinC

Yeah I suppose I know/knew the app has always been Beta. It's Linux, that's just how it is. EVERYTHING has been getting to me lately, the world has been a LOT lately. I apologize. It's not an excuse, just an explanation. I'll take a deep breath.

These things shouldn't be happening. If you could include the log file from ~/.var/app/com.core447.StreamController/data/logs/logs.log after this issue happens, we should be able to figure out what's going on.

I'll attach the two most recent-dated logs. Despite running the app multiple times over the last few days and messing with the config a bunch of times, there is only one log file with a recent date, and one from several days before that. I'm not sure if this was before or after the update. Perhaps when the app faults, it's not saving the log properly. I'll do more testing after this reply and share any logs it produces. I'll attach both in case the before/after is relevant.

I don't see a feature request for handling this more gracefully through the app, but it's entirely possible I'm just missing it. If there is one, do you mind linking it here? And if there isn't one, i would recommend filing a proper feature request so it can be tracked and prioritized accordingly.

Thanks for answering my question, rather indirectly, and confirming that it wasn't already a feature in the app I was unaware of, so I know that it's the right thing to consider opening a feature request. I'll consider opening a feature request. I asked first because I don't know about everything in the app, and assumed you'd rather people didn't open feature requests for things which already existed. It was crashing constantly and I was iritated, I didn't exactly want to go digging around more.

These are generally plugin specific configurations, not the overall app. For plugin specific features, it's best to mention these issues in the specific GitHub repo (which can be found in the About page for the installed plugin) as not all developers work on the main application.

Noted, I'll keep that in mind in the future. I assumed you had a submission/review process and could provide feedback now/in the future.

This is part of the HomeAssistant plugin, I'd recommend posting issues here: https://github.com/gensyn/de_gensyn_HomeAssistantPlugin

I didn't expect that the Home Assistant plugin had implemented the search feature from scratch by themselves, my mistake. I assumed this was a provided widget from Stream Controller. I'll take it up with them.

For the app crashes, getting the following information would also be super helpful to help get your issue resolved:

  • Manjaro, using a herbstluftwm session.
  • AUR
  • I'll attach the two most recent logs now, and take some time to collect a few more afterward.

logs.2025-06-17_14-35-59_718290.log logs.2025-06-20_15-27-33_688105.log

codefaux avatar Jun 25 '25 18:06 codefaux

Thanks, the lack of log files is definitely strange, but you're right in that it could be related to the crashes. The first thing that immediately jumps out to me is that the logs have a lot of these messages:

2025-06-17 17:19:53.487 | INFO     | src.backend.DeckManagement.DeckManager:on_disconnect:156 - Device /dev/bus/usb/003/028 with info: {'ID_MODEL_ID': '0060', 'ID_MODEL': 'Stream_Deck', 'ID_MODEL_FROM_DATABASE': 'Stream Deck', 'ID_VENDOR': 'Elgato_Systems', 'ID_VENDOR_ID': '0fd9', 'ID_VENDOR_FROM_DATABASE': 'Elgato Systems GmbH', 'ID_USB_INTERFACES': ('030000',), 'ID_USB_CLASS_FROM_DATABASE': '', 'DEVNAME': '/dev/bus/usb/003/028', 'DEVTYPE': 'usb_device', 'ID_SERIAL': 'Elgato_Systems_Stream_Deck_AL44G1A07755'} disconnected
2025-06-17 17:19:53.494 | INFO     | src.backend.DeckManagement.DeckManager:on_disconnect:156 - Device /dev/bus/usb/003/025 with info: {'ID_MODEL_ID': '5411', 'ID_MODEL': 'USB2.1_Hub', 'ID_MODEL_FROM_DATABASE': 'RTS5411 Hub', 'ID_VENDOR': 'Generic', 'ID_VENDOR_ID': '0bda', 'ID_VENDOR_FROM_DATABASE': 'Realtek Semiconductor Corp.', 'ID_USB_INTERFACES': ('090001', '090002'), 'ID_USB_CLASS_FROM_DATABASE': '', 'DEVNAME': '/dev/bus/usb/003/025', 'DEVTYPE': 'usb_device', 'ID_SERIAL': 'Generic_USB2.1_Hub'} disconnected
...
2025-06-17 17:26:30.107 | INFO     | src.backend.DeckManagement.DeckManager:on_connect:133 - Device /dev/bus/usb/003/031 with info: {'ID_MODEL_ID': '5411', 'ID_MODEL': 'USB2.1_Hub', 'ID_MODEL_FROM_DATABASE': 'RTS5411 Hub', 'ID_VENDOR': 'Generic', 'ID_VENDOR_ID': '0bda', 'ID_VENDOR_FROM_DATABASE': 'Realtek Semiconductor Corp.', 'ID_USB_INTERFACES': ('090001', '090002'), 'ID_USB_CLASS_FROM_DATABASE': '', 'DEVNAME': '/dev/bus/usb/003/031', 'DEVTYPE': 'usb_device', 'ID_SERIAL': 'Generic_USB2.1_Hub'} connected
...
2025-06-17 17:26:30.661 | INFO     | src.backend.DeckManagement.DeckManager:on_connect:133 - Device /dev/bus/usb/003/034 with info: {'ID_MODEL_ID': '0060', 'ID_MODEL': 'Stream_Deck', 'ID_MODEL_FROM_DATABASE': 'Stream Deck', 'ID_VENDOR': 'Elgato_Systems', 'ID_VENDOR_ID': '0fd9', 'ID_VENDOR_FROM_DATABASE': 'Elgato Systems GmbH', 'ID_USB_INTERFACES': ('030000',), 'ID_USB_CLASS_FROM_DATABASE': '', 'DEVNAME': '/dev/bus/usb/003/034', 'DEVTYPE': 'usb_device', 'ID_SERIAL': 'Elgato_Systems_Stream_Deck_AL44G1A07755'} connected

I see a lot of devices connecting and then disconnecting, of note of those is a USB hub. Are you plugging the StreamDeck into your hub? If so, can you try plugging the StreamDeck directly into a USB port on your machine and see if that helps at all?

If the issue persists, let's try the following to get a log:

  1. Make sure StreamController is entirely closed
  2. In a terminal, run streamcontroller 2>&1 | tee ~/StreamController.log (this will launch streamcontroller and all logs will be visible in the terminal, but also stored in a file at ~/StreamController.log
  3. Once the crash happens again, please provide the log file at ~/StreamController.log

An additional note, the developer of the AudioControl plugin has confirmed some issues with the AudioControl plugin and they are working on trying to address them.

ImDevinC avatar Jun 25 '25 18:06 ImDevinC

Diagnosing the crash when clicking on "Allow action to control the media" -- note this is on a Audio Control / Mute action. No additional log lines are entered, the application simply disappears. There's a long delay between starting the app and clicking the button, to make the events more easily differentiated. The only entries added to the log when clicking the button are two indications of Loaded page Primary

logs.log

Running the app from the terminal is more useful to capture its output in these cases;

Image

codefaux avatar Jun 25 '25 18:06 codefaux

Crash when clicking the "Allow action to control the background color" button;

Image

Next -- Partially reconfigured, but the Audio Control items in the top row, slots 2, 3, and 4 is ...."broken"..? It comes up with all-blank options.

Image

After I click all of the "Reset to default" buttons, the top/bottom text shows up in the UI and on the deck but the icon does not;

Image

Is this a Stream Controller issue, or an Audio Control plugin issue? Should I post an issue in their repo for this problem?

Similarly, in those screenshots, the buttons marked "Spk 1" and "Spk 2" have no icon -- these are Home Assistant buttons -- should I post an issue in their plugin repo for this problem, or is this related to the other problems?

codefaux avatar Jun 25 '25 18:06 codefaux

Thanks, the lack of log files is definitely strange, but you're right in that it could be related to the crashes. The first thing that immediately jumps out to me is that the logs have a lot of these messages:

I see a lot of devices connecting and then disconnecting, of note of those is a USB hub. Are you plugging the StreamDeck into your hub? If so, can you try plugging the StreamDeck directly into a USB port on your machine and see if that helps at all?

I understand you calling this out, but it's expected behavior. The Stream Deck is plugged into my monitor. I turn off my monitor when I walk away from my desktop. That way, my Stream Deck is not a security risk, or burning in on the OLEDs. It remains lit and on the entire time I'm seated; I don't want it to go to sleep automatically, or wake when someone touches a key. Thus, I feel the monitor-power route is best for my situation.

It does not disconnect during a seated session, I've verified this as a part of my own troubleshooting. These disconnects are not related to a problem. I appreciate the attention to detail, however.

codefaux avatar Jun 25 '25 18:06 codefaux

We were able to trace back why the crashes on the Media button are happening and its... very fucking hard to fix.

Its mostly an threading issue. GTK is not really for multithreading so it isnt thread save, apparently those two buttons somehow triggers something in another thread which then cascades into full on crashes. This is only the early explanation from small tests and log reading. This 100% needs to be investigated quite deeply as threading could cause issues at other points aswell that we are not yet aware of

Fixing this is as I said very fucking hard and we were not able to catch it that well because:

  1. As far as we know my plugin is the only one that can provoke this behaviour
  2. There were not many reports on it

G4PLS avatar Jun 25 '25 18:06 G4PLS

OK -- so I'm suffering from at least one previously-known issue, and at least one new issue. I'm not sure which one(s) is/are breaking my experience critically versus just annoyances.

Are there workarounds so I can use my device?

I presume there's no way to "roll back" to a moderately functional version while I wait, given that the plugins are also updated from a store and thus probably need to be version-matched, or is this a misunderstanding?

Is there any way I can contribute without being deeply accustomed to the code at play, or should I just park it and wait for a while? I'm a moderately skilled coder, but I'm not in touch with GTK or threading, so this sounds like a bear well outside my familiarity.

codefaux avatar Jun 25 '25 19:06 codefaux

I dont know if you can roll back. As for AudioControl: It is able to load when there are no other Actions infront of it. As an example I removed the Weather Actions before my AudioControl actions and its loading and working nicely.

You can still toggle the background but it will crash on the AudioControl plugin, BUT the setting will be remembered.

As far as help I dont think you would be able to help as this seems like a big GTK part as code would need to be reworked to fit into the GTK standard. Not even Im able to do that and I have probably the 2nd most insight into the StreamController codebase. This is something @Core447 needs to take a look at.

G4PLS avatar Jun 25 '25 20:06 G4PLS

As for the AudioControl plugin I think I will finally just bite the apple and rework the UI, as the Dropdown is the thing thats crashing I will switch back from GenerativeUI to manual implemented UI. I would have loved to avoid it and I did avoid it since beta.11 but as I dont know how long these issues will persist I just have to do that to give the people that actively use the plugin a good experience

It will probably take ~3-4 weeks as I also have a life and rewriting something is always quite a chore, especially if youre just absolutely frustrated

G4PLS avatar Jun 25 '25 20:06 G4PLS

@G4PLS -- I hear you regarding frustration with rewrites, and accessibility of the nature of the problem. My only request is, in the UI, include instructions for acquiring the information required to fill out the fields. Users will Google and run just about anything, and knowing -- from the author -- what input is specifically expected would help. You could even write a stupid little shell script to run manually which will output the expected config. I don't know, I'm just spitballing. I appreciate the attention to the matter.

And @ development volunteers in general --

Regarding the application overall, I haven't run it once since my last report in this thread. I will not rely upon an application which does not function reliably as a part of my tech stack. Stream Controller presently breaks at random intervals and consistently breaks during attempts to even configure my settings, and I don't have the mental fortutide to constantly deal with this level of issues from a broken software.

My Stream Deck remains unplugged. I cannot get through the process of configuring it. I've been patiently awaiting improvement, but I haven't heard of any, it sounds like a dire situation of a deep rewrite to fix foundational issues, and pretty soon I'm just gonna move to something else. It's not a threat, just an explanation to frame my question: At that time, should I close this issue, or should I leave it open for future work? What of any Feature Requests I may have open?

codefaux avatar Jul 16 '25 21:07 codefaux

We believe to have fixed the problem, the PR is already merged. Meaning the next SC release will hopefully fix those crashes. Nothing can be said for certain as flatpak always behaves differently. I dont know when the next SC release will come as Core is currently unavailable so it may take some time.

The crashes with the AudioControl plugin as an example were sometimes present and sometimes not when actually developing.

I personally am not able to do a lot of work on SC at the moment as im rewriting the whole app from a frontend/backend oriented way so that it can run headless. This means we have to wait until the next release of SC and then hope the issue is fixed

G4PLS avatar Jul 16 '25 21:07 G4PLS

beta 1.5.0-beta.12 was released over the weekend, can you check if this is still an issue please

ImDevinC avatar Oct 13 '25 14:10 ImDevinC