sonic2kk / steamtinkerlaunch

Linux wrapper tool for use with the Steam client for custom launch options and 3rd party programs
GNU General Public License v3.0
2.19k stars 72 forks source link

GAME Menu will not open #1070

Closed J-Lowrance closed 8 months ago

J-Lowrance commented 8 months ago

System Information

Issue Description

When trying to open GAME MENU from the STL main menu, the main menu will disappear, and after a little bit, the popup saying "starting x with proton y" appears as if I just clicked start game. This happens with every game, and I have also tried switching between the regular and git versions available on the AUR.

I have also tried doing a clean uninstall -> reinstall, but still the same results.

Not sure how relevant it is, but I think it stopped working while I was trying to run TekkenOverlay alongside Tekken 8, and I was having a lot of issues with the injection and the game crashing, in between all of these attempts, somewhere the game menu would no longer open.

Logs

steamtinkerlaunch.log

sonic2kk commented 8 months ago

I understand you tried switching, but just to note, your SteamTinkerLaunch version is out-of-date, please update to use the latest version from master. There is a steamtinkerlaunch-git AUR package, or you can install (and uninstall) manually using the Makefile. You should never use a version of SteamTinkerLaunch not from the latest master.

As for why this is happening, I'm not sure. When you say "clean uninstall", does this include removing ~/.config/steamtinkerlaunch and /dev/shm/steamtinkerlaunch? Noting that removing your ~/.config/steamtinkerlaunch will remove all configuration.

From you log, I can see the following, which is very strange (closed after 1 second):

Mon Mar 18 07:46:00 PM CDT 2024 INFO - MainMenu - Preparing to load Main Menu
Mon Mar 18 07:46:01 PM CDT 2024 INFO - updateWinRes - The Window 'SteamTinkerLaunch-OpenSettings' was closed - the resolution didn't change - nothing to do

Did you perhaps skip the Wait Requester multiple times? Check /dev/shm/steamtinkerlaunch and see if you have any files like swr.txt, uwr.txt, EWR.txt? You might want to try running steamtinkerlaunch waitrequester e and re-running your game.

You can also check your game config and see what value WAITEDITOR has, perhaps this got set incorrectly to 0.


This is some kind of user-configuration issue and not a bug I would say, but let's try figure it out :-)

sonic2kk commented 8 months ago

Ah, sorry, I think I misunderstood. It's the Game Menu that will not open. That is, when you go to the Main Menu and click "Game Menu". Not sure why this would be happening, especially for every game. It of course works fine over here.

Nothing else strange in your log that I can see for now...

J-Lowrance commented 8 months ago

I understand you tried switching, but just to note, your SteamTinkerLaunch version is out-of-date, please update to use the latest version from master. There is a steamtinkerlaunch-git AUR package, or you can install (and uninstall) manually using the Makefile. You should never use a version of SteamTinkerLaunch not from the latest master.

Ok, I looked into this a little bit more, and now I'm just more confused. I installed steamtinkerlaunch-git from the AUR, and it's listed as version 11.11, but installs as version 12.12 according to my package manager, and when I run steamtinkerlaunch --version I get 14.0.2, this is also the version that is showing in the log now, the log I included was before I switched versions. So not exactly sure what's going on with the version numbers, but it seems I'm up to date now, and the problem still persists. image

As for why this is happening, I'm not sure. When you say "clean uninstall", does this include removing ~/.config/steamtinkerlaunch and /dev/shm/steamtinkerlaunch? Noting that removing your ~/.config/steamtinkerlaunch will remove all configuration.

When I said clean uninstall I meant I removed /dev/shm/steamtinkerlaunch, and removed the compatibility association. I missed ~/.config/steamtinkerlaunch though, I will try removing that as well.

Did you perhaps skip the Wait Requester multiple times? Check /dev/shm/steamtinkerlaunch and see if you have any files like swr.txt, uwr.txt, EWR.txt? You might want to try running steamtinkerlaunch waitrequester e and re-running your game.

Not sure what this means since I haven't messed with any of this at all, not on purpose at least. Since I deleted that folder in my "clean uninstall" I imagine this isn't the issue.

sonic2kk commented 8 months ago

Ok, I looked into this a little bit more, and now I'm just more confused. I installed steamtinkerlaunch-git from the AUR, and it's listed as version 11.11, but installs as version 12.12 according to my package manager, and when I run steamtinkerlaunch --version I get 14.0.2, this is also the version that is showing in the log now, the log I included was before I switched versions. So not exactly sure what's going on with the version numbers, but it seems I'm up to date now, and the problem still persists.

Uh, I think we got our wires crossed somewhere.

I missed ~/.config/steamtinkerlaunch though, I will try removing that as well.

I hope you got the part I mentioned saying that *this will remove everything related to SteamTinkerLaunch. Feel free to make a backup instead :-)

Not sure what this means since I haven't messed with any of this at all, not on purpose at least. Since I deleted that folder in my "clean uninstall" I imagine this isn't the issue.

Yeah, probably all good then.

sonic2kk commented 8 months ago

I do actually have DOOM 2016 so I tested it out and it's working fine over here. Very strange issue...

J-Lowrance commented 8 months ago

I wasn't familiar with the idea of the package of the software having its own version vs the software itself, good to know I guess.

Removing my configs didn't have any effect unfortunately, the game menu still will not open steamtinkerlaunch.log

sonic2kk commented 8 months ago

And this happens for every game?

What happens if, from the commandline, you run steamtinkerlaunch settings and try to go to the Game Menu? You may get spammed with a lot of grep warnings, but maybe it'll provide some output. I'm particularly interested in maybe some locale-related errors.

If you have any games with special characters in their names (such as with the trademark symbol, or a copyright/registered trademark symbol), you could try launching those with STL and seeing if they either fail to go to the menu altogether, or fail to get to the Main Menu. That would narrow down if this is an issue with system locale (https://github.com/sonic2kk/steamtinkerlaunch/wiki/Troubleshooting#steamtinkerlaunch-starts-my-game-does-not-show-the-wait-requester). My thinking is that there may be something on the Game Menu that cannot be rendered with an invalid locale, and this something would only appear on the Game Menu. If this is a locale issue then games with those special characters in the title would not show any menu, because those locale issues would surface earlier. Hope that explanation makes sesne.

J-Lowrance commented 8 months ago

Now we might be getting somewhere, clicking game menu from command line STL makes a big ugly seg fault out.txt

As for special characters, I've run before, and tried again just now, Street Figher(TM) 6 loads just fine, but my game menu issue is still here of course

sonic2kk commented 8 months ago

Oh dear, now that is something I have not seen before!

This sounds like an issue with Yad (the UI toolkit SteamTinkerLaunch uses). The output you're seeing is the command SteamTinkerLaunch runs to generate the UI (https://github.com/sonic2kk/steamtinkerlaunch/blob/a7e06e320cf5d1c5d79ffabb0299c0104a34860a/steamtinkerlaunch#L5594-L5945).

It seems to me like Yad is failing to load this menu for some reason. This would explain why it happens for every game, and only on the Game Menu...

... Or so it seems! What happens if you run that command again, but try the Default Menu and Global Menu (using the "Default" and "Global" buttons respectively at the bottom of the Main Menu)? These pull from essentially the same list of entries, but STL filters what to display on which menu (through some dark magic Frostworx cooked up many moons ago :smile:) - In fact, the Default menu is basically the same as the Game Menu if memory serves, it's just for setting default values for each game.

J-Lowrance commented 8 months ago

Default and Global also segfault with very similar looking logs out.txt

J-Lowrance commented 8 months ago

I'm not sure how this happened, but could this be the source of my issues? image

lol nvm, I haven't seen this listed like this before, and this is just the extra package recognizing that I have yad in the form of endeavouros/yad isn't it :clown_face:

sonic2kk commented 8 months ago

I haven't seen this listed like this before, and this is just the extra package recognizing that I have yad in the form of endeavouros/yad isn't it

I was actually going to ask that, but I don't think so? Unless the endeavourOS source is a mirror. Then again I'm not sure why it's a different colour. The sizes are different though, between endeavouros/yad and extra/yad, so I would imagine they are different packages.

What happens if you run -Qi yad (I haven't used Paru but I think it can do this since this syntax should be inherited from Pacman)? I'm curious to see what it depends on and if you can remove one or both... I'm not sure how the endeavouros Yad is different but I personally use the one from extra/yad (running vanilla Arch over here).

sonic2kk commented 8 months ago

Huh, interesting, it seems yad may be used by endeavourOS itself for some system tools.

If you have both pacakges installed, I wonder which install location each one uses. Essentially:

Since they are both installed, I assume they have separate paths (otherwise your package manager probably would've gotten very angry).

In the case of how this happened, if endeavourOS is using Yad for some system programs, then your extra/yad probably came from installing the SteamTinkerLaunch AUR package(s).

My gut says that if endeavourOS is packaging Yad themselves, they're probably patching it in some way to fix some incompatibility. So if you can find which path each binary is using, you can change the path SteamTinkerLaunch loads yad from by modifying ~/.config/steamtinkerlaunch/global.conf and changing the YAD= path to point to a different Yad binary.

This could indeed be an issue with Yad...

sonic2kk commented 8 months ago

It looks like a while ago, endeavourOS's welcome application suffered Yad segfaults along the lines of what we're seeing here: https://forum.endeavouros.com/t/eos-welcome-seg-faults/1993

It could be, then, that it's actually the endeavourOS Yad causing the problems. I'm not sure why endeavourOS are packaging it themselves. Out of interest tomorrow I could set up a VM with endeavour and see if I can reproduce the segfault.

J-Lowrance commented 8 months ago

Name : yad Version : 13.0-2.1 Description : A fork of zenity - display graphical dialogs from shell scripts or command line Architecture : x86_64 URL : https://github.com/v1cont/yad Licenses : GPL3 Groups : None Provides : yad Depends On : gtk3 webkit2gtk-4.1 gtksourceview3 gspell Optional Deps : None Required By : eos-bash-shared steamtinkerlaunch-git Optional For : protontricks Conflicts With : yad yad-git Replaces : yad-eos Installed Size : 671.26 KiB Packager : EndeavourOS info@endeavouros.com Build Date : Wed Sep 20 02:46:04 2023 Install Date : Mon Mar 18 20:56:48 2024 Install Reason : Explicitly installed Install Script : No Validated By : Signature

I just did the explicit install a little bit ago to see which one it would install by default, but it seems like it is using the eos packaged yad.

I just tried switching specifically to the arch provided yad, and I'm getting the same segfault it seems.

Name : yad Version : 13.0-2 Description : A fork of zenity - display graphical dialogs from shell scripts or command line Architecture : x86_64 URL : https://github.com/v1cont/yad Licenses : GPL3 Groups : None Provides : None Depends On : gtk3 webkit2gtk-4.1 gtksourceview3 gspell Optional Deps : None Required By : eos-bash-shared steamtinkerlaunch-git Optional For : protontricks Conflicts With : None Replaces : None Installed Size : 675.58 KiB Packager : Christian Hesse eworm@archlinux.org Build Date : Wed Sep 20 02:28:29 2023 Install Date : Mon Mar 18 21:04:55 2024 Install Reason : Explicitly installed Install Script : No Validated By : Signature out.txt

It seems that only one is installed at a time, my first thought about the extra package acknowledging the EOS one may have been correct

whereis yad
yad: /usr/bin/yad /usr/share/man/man1/yad.1.gz

image

sonic2kk commented 8 months ago

Thanks for confirming! It does seem then that this issue is related to Yad, and it is specific to the various options menus.

As a (possibly) temporary workaround, you could try running steamtinkerlaunch yad ai which will download a pre-packaged (but very old) Yad AppImage from here and set the YAD global variable path automagically (iirc anyway, been a long time since I tested to see if it still sets the YAD var): https://github.com/sonic2kk/steamtinkerlaunch-tweaks/releases/tag/Yad-8418e37-x86_64.AppImage - The repo was recently transferred to me, I didn't package this release, the previous maintainer did.

This AppImage is used on SteamOS as well since it doesn't come with Yad.

If you'd rather not run the command, you can download the AppImage manually and then point the YAD="" global config variable to that AppImage manually.

This AppImage is pretty old, using Yad 10.90, but there are plans to update it - see #1060.

If it works it may be because of the older Yad version or because of the AppImage. But if it doesn't fix it, then we can narrow this issue down to something specific about whatever is in your menu(s) that I can't reproduce. If the problem still persists and if you didn't remove ~/.config/steamtinkerlaunch but only the game configs (which is fine btw) you can try removing default.conf and global.conf and seeing if that works. Per-game configs will pull from the Default config and if this wasn't cleared, perhaps whatever is wrong on the Game Menu causing the segfault is being pulled from the Default menu (although the Global menu is still a bit of a mystery, unless it's one of the shared elements between all three menus!)

J-Lowrance commented 8 months ago

Ok, I'm still getting a segfault even with the appimage, so I'm going to assume that there is something else wrong with my system. I'm going to do some digging and see if I can come up with something hopefully, and I will post here again if I find anything.

Thank you for your time and help, and for jumping on this so quickly.

sonic2kk commented 8 months ago

Hmm, it's very strange that something is going wrong, even with the AppImage.

I think the log said you weren't running a Wayland session, but if that was wrong, one thing that might be worth trying is, in the global config, set YADFORCEXWAYLAND="1". Just in case this is a Yad+Wayland issue.

Just in case I'm sending you down the wrong path, when launching STL with the AppImage, check the logs and see if the Yad version is a bit.. old. Basically, a version not 13.0 and that the yad binary path is something like /home/username/.config/steamtinkerlaunch/downloads/yad (or if you downloaded it manually, a different path). You can find the relevant log lines by searching for checkIntDeps in the log and looking for lines like the following:

Mon Mar 18 20:31:33 CDT 2024 INFO - checkIntDeps - Result of version check for yad binary '/usr/bin/yad' is '13.0'
Mon Mar 18 20:31:33 CDT 2024 INFO - checkIntDeps - Yad is set correctly in the Global Config, nothing to do.

Thank you for your time and help, and for jumping on this so quickly.

Not a problem, you provided all of the information to help. I'm just sorry I couldn't figure out the issue.

I'm not trying to shift the blame by pinning it on Yad, but I don't think Yad should segfault even if we're giving it bad data somehow from the UI. The fact that this happened even with v12.12 was particularly strange.

it might be worth trying some of the Yad Examples (basically save them as scripts and run them) and see if any of those cause a segfault. Since they would be creating a lot of UI elements that would be used on the Game/Global/Default Menus, if these examples segfault, then that would just add more weight that it's Yad.

On the STL side: One thing that did come into my head is that the menus that do work that we know of are "simple": Just labels and buttons. So I wonder if there's a specific UI element causing the default. Perhaps you could try opening, say, the "Download Custom Proton" menu. This is also a simple UI, but it has a dropdown.

Both of these will help us work out if:

  1. Yad is the culprit indeed
  2. Menu complexity has anything to do with it, i.e. something specific to SteamTinkerLaunch or the data that's getting loaded into your menu making Yad segfault, or if it's a specific UI element and the data/complexity doesn't matter.
J-Lowrance commented 8 months ago

When using my system yad, it says 13.0, when using the appimg, it says 10.90

sonic2kk commented 8 months ago

When using my system yad, it says 13.0, when using the appimg, it says 10.90

Awesome! I just wanted to make sure you were using the right version before delving too deep down rabbit holes that might not help. So indeed even with a much older Yad version, something is causing a segfault.

For my own curiosity I will hopefully get some time to set up an endeavourOS VM and test out SteamTinkerLaunch / Yad and see if I can reproduuce any weirdness (to avoid installing Steam on the VM I may have to do some shenanigans heh).

J-Lowrance commented 8 months ago

All of the yad examples worked, the weather one I'm assuming works, you need to get an API to use it, but that was the only reason it wouldn't run I would think since all the others worked fine.

J-Lowrance commented 8 months ago

For my own curiosity I will hopefully get some time to set up an endeavourOS VM and test out SteamTinkerLaunch / Yad and see if I can reproduuce any weirdness (to avoid installing Steam on the VM I may have to do some shenanigans heh).

The weirdest part about all of this is that I was tinkering with Tekken 8 and TekkenOverlay about a month ago and the game menu worked fine, but in between some of my attempts it just stopped opening. I went into the config files to change the things I needed to but it was by no means convenient especially since it uses a hotfix proton version with a long serial number, I had a hard time tracking down the exact version that Tekken was using. I only started trying to use this again since I wanted to try flawless widescreen in Doom.

J-Lowrance commented 8 months ago

In case it helps, here the menus that work and don't work, I think the menus that close the main menu end up crashing the whole program, but if it opens on top of the main menu, then instead of crashing the whole thing it just doesn't load, and the main menu remains.

Working:

Not working:

sonic2kk commented 8 months ago

Thanks for the list, this is helpful. It appears any menu that is not a simple "button and label" combination is causing a segfault. I really appreciate that you went through every single menu.

I'm spinning up an endeavourOS VM and I'm going to see if I can re-create a segfault with SteamTinkerLaunch, and if I can, I'll see if I can cause a segfault outside of SteamTinkerLaunch. In a quick test in the live session, general Yad commands worked, so I'll see what's up with STL.

sonic2kk commented 8 months ago

Set up an endeavourOS VM, installed SteamTinkerLaunch (but not Steam so it's a bit jank, and with the skip dependency check enabled to avoid bailing out with missing Steam).

Not encountering any issues over here with Yad, but this is using the "placeholder" AppID. Out of interest you could also try this and see if steamtinkerlaunch settings 31337 causes a segfault. If it does, then I'm really not sure, it sounds like it could be a system-specific issue...

It appears to be some specific element common to these menus causing Yad to segfault, I don't think there's any "data" common to them all, which is what makes me suspect it's one of the UI elements.

sonic2kk commented 8 months ago

This is a really slim chance this could be related to GTK theming, but I installed a couple custom ones on the endeavourOS VM and it worked fine, so I'm not sure that's actually the problem. Even if you're using KDE Plasma, Yad uses GTK, so the theming comes from your GTK theme (usually defaults to Breeze).

Other than that, maybe re-installing Yad might work? paru -S yad will probably allow you to just resync and reinstall. That's really grasping at straws, though.

sonic2kk commented 8 months ago

I am hoping to update the Yad AppImage in the near future (#1060). Once updated I'll let you know and I'd be interested to hear if it also segfaults for you. I have a feeling it will but you never know...

sonic2kk commented 8 months ago

There is a Yad 13.0 AppImage built by me which is available at: https://github.com/sonic2kk/steamtinkerlaunch-tweaks/releases/tag/Yad-fbfb0fa-x86_64.AppImage

If you'd like you could test this updated AppImage and see if it works. You're also free to build it yourself (although you'll have to use a branch from the easy-builder repo, see https://github.com/kadogo/easy-builder/issues/17).

If the system Yad 13.0 fails for you though, I'm not sure the AppImage would have much more success, especially because the much older AppImage version also fails. But if it doesn't work we can at least rule that out :-)

sonic2kk commented 8 months ago

Closing from lack of response. There may be a way to trace the segfault using gdb, but likely it would have to be reported upstream to yad at v1cont/yad. I'm not too experienced but I believe the steps are roughly as follows:

  1. For simplicity, re-create the segfault by running SteamTinkerLaunch from the commandline
  2. Locate your segfault. This can vary but on Arch with systemd this is typically at /var/lib/systemd/coredump, and then the name should be something like core.yad.<some number>.<some hash>.<more numbers>.<a longer number>.zst. You may have several, so it may help to reproduce the crash and then look for the most recently created file. You could copy this to an easier path to work with that you can write to, like /tmp.
  3. Extract the zst archive at the chosen path.
  4. Ensure you have gdb installed.
  5. From the commandline, run gdb $(which yad) /path/to/extracted/coredump
  6. gdb will ask to enable debuginfod for this session, you should be able to just choose n.
  7. You should be at a prompt that starts with (gdb). You can type start to begin execution. If it asks you to create breakpoints or anything, just select n.
  8. SteamTinkerLaunch should eventually open, I tested this with a C++ program and not a tool like Yad as I could not re-create the crash, so I'm not too sure that this will happen. Ideally, though, it should. And from here if SteamTinkerLaunch, keep going to the point where the crash would occur. The window should stay open but you should see a message in the terminal detailing information about where the crash occurred.
  9. If you get this far, feel free to post some information leading up to the crash on this issue, but also it may be worth filing an issue upstream to Yad, referencing this issue as well.

This issue does appear to only happen with SteamTinkerLaunch but there are reports of Yad segfaulting in other situations on endeavourOS. So I'm opting to close this as I can't re-create it.

Good luck!