Launcher freeze (Suse Linux 15.0)

Hi all,

New user here, tried to use the Launcher to install and run the game on Suse Linux. The Launcher hangs in the “verifying” phase. It gets to 49.86% (in under a second) and then stops there, seemingly forever.

I can kill the launcher process and restart it - clicking the “play” button then does almost the same thing, but the percentage progress is different, but always around 50%.

I don’t think I can get any logs from the hung launcher? Correct me if I’m wrong and I’ll post them.

xxx@xxx:~/Downloads> ./Thrive-Launcher-1.2.9.appimage 
09:44:05.367 › Started Thrive Launcher version: 1.2.9 os: linux arch: x64 is store version: false
09:44:05.635 › Starting updates check
09:44:05.636 › Checking for update
09:44:05.636 › Updates check is probably running
09:44:06.751 › Update for version 1.2.9 is not available (latest version: 1.2.9, downgrade is disallowed).
09:44:06.752 › checkForUpdatesAndNotify called, downloadPromise is null

image

top - 09:55:39 up 32 min,  4 users,  load average: 0.23, 0.25, 0.26
Tasks: 302 total,   1 running, 301 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.1 sy,  0.0 ni, 99.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem : 15974.77+total, 10167.75+free, 2341.949 used, 3465.078 buff/cache
MiB Swap:    0.000 total,    0.000 free,    0.000 used. 12719.38+avail Mem 

  PID  PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                    
 3120  20   0 84.037g  35496  28036 S 0.000 0.217   0:00.05 nacl_helper                                                                
28524  20   0 24.573g 177344 122396 S 1.993 1.084   0:25.46 thrive-launcher                                                            
28482  20   0 20.692g 147464 103732 S 0.000 0.901   0:06.37 thrive-launcher                                                            
28516  20   0 16.607g 144296  81588 S 1.993 0.882   0:17.04 thrive-launcher                                                            
28521  20   0 16.448g  61712  52080 S 0.000 0.377   0:00.18 thrive-launcher                                                            
28538  20   0 16.447g  29344   7380 S 0.000 0.179   0:00.00 thrive-launcher                                                            
28490  20   0 16.386g  46640  38296 S 0.000 0.285   0:00.01 thrive-launcher                                                            
28491  20   0 16.386g  47268  38920 S 0.000 0.289   0:00.01 thrive-launcher                                                            
28493  20   0 16.386g  10340   1956 S 0.000 0.063   0:00.00 thrive-launcher                                                            
xxx@xxx:~/Downloads> cat /etc/os-release
NAME="openSUSE Leap"
VERSION="15.0"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.0"
PRETTY_NAME="openSUSE Leap 15.0"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.0"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
xxx@xxx:~/Downloads> uname -a
Linux rikspc 4.12.14-lp150.12.82-default #1 SMP Tue Nov 12 16:32:38 UTC 2019 (c939e24) x86_64 x86_64 x86_64 GNU/Linux

You can find launcher logs in ~/.config/Thrive Launcher/logs renderer.log is probably the interesting file. Also if you run the thrive launcher from the terminal as: ./thrive-launcher --open-dev it should open in a view where the developer tools are open and may show any extra errors that are detected.

The log file should have the output that is after this.

My guess is that somehow the file reading fails and gets stuck. I’ve seen dehydrated file handling (which is another feature of the launcher) get stuck while trying to read a downloaded file. I think it has something to do with the file write reporting a success before it is actually written. Though, I’ve never seen this issue happen when downloading a Thrive release.

1 Like

Thanks for the reply.

The forum won’t let me attach the log files, so I’ve just pasted them below. Doesn’t look like any new information in there, but I could be wrong!

I can still play the game by unpacking the .7z file manually into the install directory.

main.log

[2021-12-01 14:35:10.326] [info]  Started with dev tools enabled
[2021-12-01 14:35:10.329] [info]  Started Thrive Launcher version: 1.2.9 os: linux arch: x64 is store version: false
[2021-12-01 14:35:10.610] [debug] Starting updates check
[2021-12-01 14:35:10.611] [info]  Checking for update
[2021-12-01 14:35:10.611] [debug] Updates check is probably running
[2021-12-01 14:35:11.812] [info]  Update for version 1.2.9 is not available (latest version: 1.2.9, downgrade is disallowed).
[2021-12-01 14:35:11.814] [debug] checkForUpdatesAndNotify called, downloadPromise is null

renderer.log

[2021-12-01 14:35:10.837] [info]  Renderer.js script started
[2021-12-01 14:35:10.839] [debug] Renderer detected store params: false 
[2021-12-01 14:35:10.839] [info]  LD_PRELOAD for Thrive launch set to: null
[2021-12-01 14:35:10.860] [info]  Install path set to: /home/denbridge/Thrive
[2021-12-01 14:35:10.935] [info]  successfully downloaded version information
[2021-12-01 14:35:10.945] [info]  Signing key loaded: 75fdbe2a14b347bd
[2021-12-01 14:35:10.958] [info]  Version data signed by key id 75fdbe2a14b347bd
[2021-12-01 14:35:10.967] [info]  Version is latest or pre-release: 1.2.9
[2021-12-01 14:35:10.969] [info]  Failed to read selected version file, error: Error: Could not call remote method 'readFileSync'. Check that the method signature is correct. Underlying error: ENOENT: no such file or directory, open '/home/denbridge/.config/Revolutionary-Games/Launcher/selected_version.json'
Underlying stack: Error: ENOENT: no such file or directory, open '/home/denbridge/.config/Revolutionary-Games/Launcher/selected_version.json'
    at Object.openSync (node:fs:582:3)
    at Object.func [as openSync] (node:electron/js2c/asar_bundle:5:1800)
    at Object.readFileSync (node:fs:450:35)
    at Object.e.readFileSync (node:electron/js2c/asar_bundle:5:9148)
    at /tmp/.mount_ThrivejoXrDT/resources/app.asar/node_modules/@electron/remote/dist/src/main/server.js:463:71
    at IpcMainImpl.<anonymous> (/tmp/.mount_ThrivejoXrDT/resources/app.asar/node_modules/@electron/remote/dist/src/main/server.js:322:27)
    at IpcMainImpl.emit (node:events:394:28)
    at Object.<anonymous> (node:electron/js2c/browser_init:165:10589)
    at Object.emit (node:events:394:28)

    at /tmp/.mount_ThrivejoXrDT/resources/app.asar/node_modules/@electron/remote/dist/src/main/server.js:466:25
    at IpcMainImpl.<anonymous> (/tmp/.mount_ThrivejoXrDT/resources/app.asar/node_modules/@electron/remote/dist/src/main/server.js:322:27)
    at IpcMainImpl.emit (node:events:394:28)
    at Object.<anonymous> (node:electron/js2c/browser_init:165:10589)
    at Object.emit (node:events:394:28)
[2021-12-01 14:35:10.970] [debug] All valid versions: 20
[2021-12-01 14:37:28.714] [debug] play clicked
[2021-12-01 14:37:28.723] [info]  Playing thrive version: 0.5.6 (Current) Linux x64
[2021-12-01 14:37:28.726] [info]  already exists: Thrive_0.5.6.0_linux_x11.7z

Pretty strange. I can’t think of anything more to check. Someone who can debug JavaScript code will need to take a look at this. I opened an issue on Github for this:

I just tested on SUSE 15.3, and it didn’t freeze. So it does seem like it’s related to 15.0 in some way.

1 Like

Been trying to investigate this a bit, but I don’t really know javascript.

It seems the sha3_256.update() method is freezing (maybe in an endless loop?) for some reason. Looks like this is a sort of known problem, as there’s code in the launcher to retry the file hash up to 10 times before giving up.

Is there a way to make the launcher run in Firefox instead of Chrome?

As far as I know that’s completely impossible. Electron is based on Chromium Embedded Framework and as far as I know no such thing exists for Firefox. Anyway the launcher heavily utilises Node so any replacement solution would also need to have the Node JS APIs available.

So any kind of change would need (almost) a full rewrite. I’ve been kind of thinking that I don’t particularly like development in JavaScript, so I’ve been thinking that if I had like a month of spare time, I’d rewrite the launcher using http://avaloniaui.net/

I wasn’t actually sure if the full version download (instead of just devbuilds) used that stuck prevention, and it does look like it. Anyway I just updated that code to use the proper logging framework so now hashing stuck etc. information should properly appear in the launcher logs and in terminal output if you run the launcher that way.

Btw, did you try selecting a different cache location in the launcher options? That’s where it writes the downloaded game zip (by default it is probably in /tmp/ which might have some limitation?)

I suspected as much, but as I say, I don’t really do javascript.

The original location was in /tmp. I tried giving the cache dir 0777 permission, no effect.

Tried a cache directory inside my home directory instead, again no effect on the issue.

1 Like