GodotSteam: The game crashes with no feedback after trying to write to leaderboards.

Tested versions

v3.5.3.stable.official [6c814135b]

Godotsteam plug-in version 3.22.2

System information

Operating System: Manjaro Linux KDE Plasma Version: 5.27.10 KDE Frameworks Version: 5.113.0 Qt Version: 5.15.12 Kernel Version: 5.15.146-1-MANJARO (64-bit) Graphics Platform: X11 Processors: 12 × AMD Ryzen 5 3600 6-Core Processor Memory: 15.6 GiB of RAM Graphics Processor: AMD Radeon RX 550 / 550 Series Manufacturer: Gigabyte Technology Co., Ltd. Product Name: B450M DS3H V2

Issue description

When trying to upload a score to a Steam leaderboard using the Godotsteam plug-in the game crashes with no error message.

Here’s the crash log:

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v3.5.3.stable.official (6c814135b69d4e703956bacc2073b4b179ff5a00)
Dumping the backtrace. Please include this when reporting the bug on: https://github.com/godotengine/godot/issues
[1] /usr/lib/libc.so.6(+0x3e710) [0x7feb85dcc710] (??:0)
[2] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2f011df] (??:0)
[3] godot_variant godot::__wrapped_method<Steam, void, int, bool, godot::PoolIntArray, unsigned long>(void*, void*, void*, int, godot_variant**) (??:0)
[4] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xededda] (??:0)
[5] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e8266e] (??:0)
[6] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2f136b2] (??:0)
[7] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xb7b30c] (??:0)
[8] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xb8fecc] (??:0)
[9] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xb90c74] (??:0)
[10] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xb3e930] (??:0)
[11] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e82749] (??:0)
[12] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e8db4a] (??:0)
[13] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e8e893] (??:0)
[14] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xb90543] (??:0)
[15] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xb90c74] (??:0)
[16] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xb3e930] (??:0)
[17] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e82749] (??:0)
[18] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e8db4a] (??:0)
[19] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e8f203] (??:0)
[20] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e94380] (??:0)
[21] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xeb5767] (??:0)
[22] godot::Object::emit_signal(godot::String, godot::Array const&) (??:0)
[23] Steam::leaderboard_find_result(LeaderboardFindResult_t*, bool) (??:0)
[24] /home/carles/gd_project/addons/godotsteam/x11/libsteam_api.so(+0x1abff) [0x7feb41902bff] (??:0)
[25] /home/carles/gd_project/addons/godotsteam/x11/libsteam_api.so(+0x1ad12) [0x7feb41902d12] (??:0)
[26] /home/carles/gd_project/addons/godotsteam/x11/libsteam_api.so(+0x1bb35) [0x7feb41903b35] (??:0)
[27] /home/carles/gd_project/addons/godotsteam/x11/libsteam_api.so(SteamAPI_RunCallbacks+0x90) [0x7feb419059f0] (??:0)
[28] godot_variant godot::__wrapped_method<Steam, void>(void*, void*, void*, int, godot_variant**) (??:0)
[29] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xededda] (??:0)
[30] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2e8266e] (??:0)
[31] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x2f136b2] (??:0)
[32] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xb7b30c] (??:0)
[33] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xafeeb0] (??:0)
[34] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x1f8afaf] (??:0)
[35] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x1fb539e] (??:0)
[36] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0x1feb279] (??:0)
[37] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xa96eba] (??:0)
[38] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xa06975] (??:0)
[39] /usr/lib/libc.so.6(+0x27cd0) [0x7feb85db5cd0] (??:0)
[40] /usr/lib/libc.so.6(__libc_start_main+0x8a) [0x7feb85db5d8a] (??:0)
[41] /home/carles/gd_project/Godot_v3.5.3-stable_x11.64() [0xa192ce] (??:0)
-- END OF BACKTRACE --
================================================================

Steps to reproduce

  1. Create a project
  2. Install the Godotsteam plug-in
  3. Implement methods to find a leaderboard and upload scores to it
  4. The game crashes most times an attempt is made to upload a score.

Minimal reproduction project (MRP)

leaderboards_test.zip

About this issue

  • Original URL
  • State: closed
  • Created 5 months ago
  • Comments: 22 (13 by maintainers)

Most upvoted comments

Ok, I think I’ve found the problem.

I was trying to run my game with the precompiled editor, but I hadn’t removed the plug-in first, as you had done with your fixed MVP. I guess it was trying to do everything twice, and and upload was conflicting with a download or something like that.

I’ve removed it now and apparently I can download and upload scores 😃

Thanks for your help.

Ayyy! Glad you got it figured out! Yeah, I didn’t think about the possibility of both the plug-in existing with the pre-compiled editor. They do not play well together.

Let me know if you come across anything else!

Bad news, today I tried implementing those changes in another project and it keeps crashing.

I’ve noticed the error only happens if I use the ID for my game, though. If I keep the Space Wars id (480) all works. Any ideas?

Note:

  • Other Steam features, like steamcloud up/download and achievemtsn, work with my ID
  • My game is still unreleased, and leaderboards are not available in the community hub
  • GodotSteam does find the handl for the leaderboard
  • The same code works if I just change my game’s ID for Space Wars ID.
  • The crash only happens if I download the user’s highscore and immediately try to upload them. That is:
	yield(SteamApi.download_player_highscore("normal_mode"), "completed")
	print("download done")	
	yield(SteamApi.upload_player_highscore("normal_mode", new_score), "completed")
	print("upload done")
  • This is how I have configured the leaderboard on Steamworks: imatge

I’ve tried running the precompiled Godot from the commandline to get some feedback about the error, but in this case I only get the game’s print() output.

Ah, OK! Yeah, I changed Steam.steamInit(true) and added the callback for current_stats_received and now it flows better. I also changed the uploading score function to a button.

Still going through it see what else needs fixed.

Hey there! Well, that is a new one. Thank you for the minimum reproduction. I’m just now getting set up at my desk so I’ll give this a shot and figure out what’s going on.