godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.22k stars 21.22k forks source link

[3.5] Crash in libc.so.6 called from mono_jit_init_version after Linux system updates #77503

Open hhyyrylainen opened 1 year ago

hhyyrylainen commented 1 year ago

Godot version

3.5.stable, 3.6.beta2

System information

Fedora 38, Fedora 37 (inside podman with unchanged image)

Issue description

Recently I have started to see Godot crash very often when it tries to start on my Linux desktop (Fedora 38, Edit: there was a typo here). This makes debugging and testing a bit difficult but still doable if I try to start Godot many times. So this crash doesn't happen always, just more than half the time. The crashing started likely about 2 weeks ago when I last installed updates.

I was hoping that 3.6 wouldn't have the same problem, but I just tested it and it does also randomly crash when starting. So I'm reporting this issue in the hopes that this could be fixed before 3.6 is fully released.

I suspect that the problem is related to Linux system updates as just today our CI servers started having failed builds. They fail like this:

ERROR: Unable to open file: res://.import/default.png-0ecb64421bbeb83f3647ba16f0738ab3.stex.
   at: _load_data (scene/resources/texture.cpp:470)
ERROR: Failed loading resource: res://.import/default.png-0ecb64421bbeb83f3647ba16f0738ab3.stex. Make sure resources have been imported by opening the project in the editor at least once.
   at: _load (core/io/resource_loader.cpp:270)
================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v3.5.stable.mono.official (991bb6ac74ac8c09d7683041b50a8ced3a2defb1)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib64/libc.so.6(+0x3cb50) [0x7f4b04ef6b50] ()
[2] godot() [0xf6d9a5] ()
[3] godot() [0xf5807f] ()
[4] godot() [0xf0d1e9] ()
[5] godot() [0xf52da8] ()
[6] godot(mono_jit_init_version+0xb) [0xeaa85b] ()
[7] GDMono::initialize() ()
[8] CSharpLanguage::init() ()
[9] ScriptServer::init_languages() ()
[10] Main::setup2(unsigned long) ()
[11] Main::setup(char const*, int, char**, bool) ()
[12] godot(main+0x2d) [0xe6b63d] ()
[13] /lib64/libc.so.6(+0x27510) [0x7f4b04ee1510] ()
[14] /lib64/libc.so.6(__libc_start_main+0x89) [0x7f4b04ee15c9] ()
[15] godot() [0xe6ef8e] ()
-- END OF BACKTRACE --
================================================================

The Godot process is ran inside podman with the exact same image that worked a few days ago. Also I disabled the build servers that were updated yesterday, and the servers that still haven't had latest updates (last updated a month ago) still build fine. So I'm quite confident in saying that one of the updated packages in the latest round of installed causes this (maybe the kernel as none of the other stuff should really matter when running inside podman):

Transaction ID : 30
Begin time     : Thu 25 May 2023 02:15:26 PM CEST
Begin rpmdb    : 315ccf946fe2e61699bfbd3d52326e635c9c5d93589b00de7c1409625c5a881f
End time       : Thu 25 May 2023 02:16:56 PM CEST (90 seconds)
End rpmdb      : 39c5af09f1173b9ffdede26dd7c55b29cfad0eda8c2fa7e8e8b2371de7198976
User           : root <root>
Return-Code    : Success
Releasever     : 37
Command Line   : update -y --refresh
Comment        : 
Packages Altered:
    Install       kernel-6.2.15-200.fc37.x86_64                               @updates
    Install       kernel-core-6.2.15-200.fc37.x86_64                          @updates
    Install       kernel-modules-6.2.15-200.fc37.x86_64                       @updates
    Install       kernel-modules-core-6.2.15-200.fc37.x86_64                  @updates
    Install       perl-locale-1.10-494.fc37.noarch                            @updates
    Upgrade       NetworkManager-1:1.40.18-1.fc37.x86_64                      @updates
    Upgraded      NetworkManager-1:1.40.10-1.fc37.x86_64                      @@System
    Upgrade       NetworkManager-initscripts-ifcfg-rh-1:1.40.18-1.fc37.x86_64 @updates
    Upgraded      NetworkManager-initscripts-ifcfg-rh-1:1.40.10-1.fc37.x86_64 @@System
    Upgrade       NetworkManager-initscripts-updown-1:1.40.18-1.fc37.noarch   @updates
    Upgraded      NetworkManager-initscripts-updown-1:1.40.10-1.fc37.noarch   @@System
    Upgrade       NetworkManager-libnm-1:1.40.18-1.fc37.x86_64                @updates
    Upgraded      NetworkManager-libnm-1:1.40.10-1.fc37.x86_64                @@System
    Upgrade       alternatives-1.24-1.fc37.x86_64                             @updates
    Upgraded      alternatives-1.22-1.fc37.x86_64                             @@System
    Upgrade       audit-3.1.1-1.fc37.x86_64                                   @updates
    Upgraded      audit-3.1-2.fc37.x86_64                                     @@System
    Upgrade       audit-libs-3.1.1-1.fc37.x86_64                              @updates
    Upgraded      audit-libs-3.1-2.fc37.x86_64                                @@System
    Upgrade       chkconfig-1.24-1.fc37.x86_64                                @updates
    Upgraded      chkconfig-1.22-1.fc37.x86_64                                @@System
    Upgrade       container-selinux-2:2.211.1-1.fc37.noarch                   @updates
    Upgraded      container-selinux-2:2.209.0-1.fc37.noarch                   @@System
    Upgrade       coreutils-9.1-8.fc37.x86_64                                 @updates
    Upgraded      coreutils-9.1-7.fc37.x86_64                                 @@System
    Upgrade       coreutils-common-9.1-8.fc37.x86_64                          @updates
    Upgraded      coreutils-common-9.1-7.fc37.x86_64                          @@System
    Upgrade       dnf-4.15.1-1.fc37.noarch                                    @updates
    Upgraded      dnf-4.15.0-1.fc37.noarch                                    @@System
    Upgrade       dnf-data-4.15.1-1.fc37.noarch                               @updates
    Upgraded      dnf-data-4.15.0-1.fc37.noarch                               @@System
    Upgrade       dracut-059-2.fc37.x86_64                                    @updates
    Upgraded      dracut-059-1.fc37.x86_64                                    @@System
    Upgrade       dracut-config-rescue-059-2.fc37.x86_64                      @updates
    Upgraded      dracut-config-rescue-059-1.fc37.x86_64                      @@System
    Upgrade       elfutils-debuginfod-client-0.189-2.fc37.x86_64              @updates
    Upgraded      elfutils-debuginfod-client-0.189-1.fc37.x86_64              @@System
    Upgrade       elfutils-default-yama-scope-0.189-2.fc37.noarch             @updates
    Upgraded      elfutils-default-yama-scope-0.189-1.fc37.noarch             @@System
    Upgrade       elfutils-libelf-0.189-2.fc37.x86_64                         @updates
    Upgraded      elfutils-libelf-0.189-1.fc37.x86_64                         @@System
    Upgrade       elfutils-libs-0.189-2.fc37.x86_64                           @updates
    Upgraded      elfutils-libs-0.189-1.fc37.x86_64                           @@System
    Upgrade       fwupd-1.8.15-1.fc37.x86_64                                  @updates
    Upgraded      fwupd-1.8.14-1.fc37.x86_64                                  @@System
    Upgrade       fwupd-plugin-flashrom-1.8.15-1.fc37.x86_64                  @updates
    Upgraded      fwupd-plugin-flashrom-1.8.14-1.fc37.x86_64                  @@System
    Upgrade       fwupd-plugin-modem-manager-1.8.15-1.fc37.x86_64             @updates
    Upgraded      fwupd-plugin-modem-manager-1.8.14-1.fc37.x86_64             @@System
    Upgrade       fwupd-plugin-uefi-capsule-data-1.8.15-1.fc37.x86_64         @updates
    Upgraded      fwupd-plugin-uefi-capsule-data-1.8.14-1.fc37.x86_64         @@System
    Upgrade       git-2.40.1-1.fc37.x86_64                                    @updates
    Upgraded      git-2.40.0-1.fc37.x86_64                                    @@System
    Upgrade       git-core-2.40.1-1.fc37.x86_64                               @updates
    Upgraded      git-core-2.40.0-1.fc37.x86_64                               @@System
    Upgrade       git-core-doc-2.40.1-1.fc37.noarch                           @updates
    Upgraded      git-core-doc-2.40.0-1.fc37.noarch                           @@System
    Upgrade       initscripts-10.19-1.fc37.x86_64                             @updates
    Upgraded      initscripts-10.18-1.fc37.x86_64                             @@System
    Upgrade       initscripts-rename-device-10.19-1.fc37.x86_64               @updates
    Upgraded      initscripts-rename-device-10.18-1.fc37.x86_64               @@System
    Upgrade       initscripts-service-10.19-1.fc37.noarch                     @updates
    Upgraded      initscripts-service-10.18-1.fc37.noarch                     @@System
    Upgrade       libgcc-12.3.1-1.fc37.x86_64                                 @updates
    Upgraded      libgcc-12.2.1-4.fc37.x86_64                                 @@System
    Upgrade       libgomp-12.3.1-1.fc37.x86_64                                @updates
    Upgraded      libgomp-12.2.1-4.fc37.x86_64                                @@System
    Upgrade       libmodulemd-2.15.0-2.fc37.x86_64                            @updates
    Upgraded      libmodulemd-2.14.0-4.fc37.x86_64                            @@System
    Upgrade       libnfsidmap-1:2.6.3-0.fc37.x86_64                           @updates
    Upgraded      libnfsidmap-1:2.6.2-2.rc6.fc37.x86_64                       @@System
    Upgrade       libreport-filesystem-2.17.10-1.fc37.noarch                  @updates
    Upgraded      libreport-filesystem-2.17.4-1.fc37.noarch                   @@System
    Upgrade       libstdc++-12.3.1-1.fc37.x86_64                              @updates
    Upgraded      libstdc++-12.2.1-4.fc37.x86_64                              @@System
    Upgrade       libtirpc-1.3.3-1.rc1.fc37.x86_64                            @updates
    Upgraded      libtirpc-1.3.3-0.fc37.x86_64                                @@System
    Upgrade       mariadb-connector-c-3.3.4-2.fc37.x86_64                     @updates
    Upgraded      mariadb-connector-c-3.2.7-2.fc37.x86_64                     @@System
    Upgrade       mariadb-connector-c-config-3.3.4-2.fc37.noarch              @updates
    Upgraded      mariadb-connector-c-config-3.2.7-2.fc37.noarch              @@System
    Upgrade       mkpasswd-5.5.17-1.fc37.x86_64                               @updates
    Upgraded      mkpasswd-5.5.15-1.fc37.x86_64                               @@System
    Upgrade       ncurses-6.3-5.20220501.fc37.x86_64                          @updates
    Upgraded      ncurses-6.3-4.20220501.fc37.x86_64                          @@System
    Upgrade       ncurses-base-6.3-5.20220501.fc37.noarch                     @updates
    Upgraded      ncurses-base-6.3-4.20220501.fc37.noarch                     @@System
    Upgrade       ncurses-libs-6.3-5.20220501.fc37.x86_64                     @updates
    Upgraded      ncurses-libs-6.3-4.20220501.fc37.x86_64                     @@System
    Upgrade       passt-0^20230509.g96f8d55-1.fc37.x86_64                     @updates
    Upgraded      passt-0^20230329.gb10b983-1.fc37.x86_64                     @@System
    Upgrade       passt-selinux-0^20230509.g96f8d55-1.fc37.noarch             @updates
    Upgraded      passt-selinux-0^20230329.gb10b983-1.fc37.noarch             @@System
    Upgrade       perl-AutoLoader-5.74-494.fc37.noarch                        @updates
    Upgraded      perl-AutoLoader-5.74-492.fc37.noarch                        @@System
    Upgrade       perl-B-1.83-494.fc37.x86_64                                 @updates
    Upgraded      perl-B-1.83-492.fc37.x86_64                                 @@System
    Upgrade       perl-Class-Struct-0.66-494.fc37.noarch                      @updates
    Upgraded      perl-Class-Struct-0.66-492.fc37.noarch                      @@System
    Upgrade       perl-DynaLoader-1.52-494.fc37.x86_64                        @updates
    Upgraded      perl-DynaLoader-1.52-492.fc37.x86_64                        @@System
    Upgrade       perl-Errno-1.36-494.fc37.x86_64                             @updates
    Upgraded      perl-Errno-1.36-492.fc37.x86_64                             @@System
    Upgrade       perl-Fcntl-1.15-494.fc37.x86_64                             @updates
    Upgraded      perl-Fcntl-1.15-492.fc37.x86_64                             @@System
    Upgrade       perl-File-Basename-2.85-494.fc37.noarch                     @updates
    Upgraded      perl-File-Basename-2.85-492.fc37.noarch                     @@System
    Upgrade       perl-File-Find-1.40-494.fc37.noarch                         @updates
    Upgraded      perl-File-Find-1.40-492.fc37.noarch                         @@System
    Upgrade       perl-File-stat-1.12-494.fc37.noarch                         @updates
    Upgraded      perl-File-stat-1.12-492.fc37.noarch                         @@System
    Upgrade       perl-FileHandle-2.03-494.fc37.noarch                        @updates
    Upgraded      perl-FileHandle-2.03-492.fc37.noarch                        @@System
    Upgrade       perl-Getopt-Std-1.13-494.fc37.noarch                        @updates
    Upgraded      perl-Getopt-Std-1.13-492.fc37.noarch                        @@System
    Upgrade       perl-Git-2.40.1-1.fc37.noarch                               @updates
    Upgraded      perl-Git-2.40.0-1.fc37.noarch                               @@System
    Upgrade       perl-IO-1.50-494.fc37.x86_64                                @updates
    Upgraded      perl-IO-1.50-492.fc37.x86_64                                @@System
    Upgrade       perl-IPC-Open3-1.22-494.fc37.noarch                         @updates
    Upgraded      perl-IPC-Open3-1.22-492.fc37.noarch                         @@System
    Upgrade       perl-NDBM_File-1.15-494.fc37.x86_64                         @updates
    Upgraded      perl-NDBM_File-1.15-492.fc37.x86_64                         @@System
    Upgrade       perl-POSIX-2.03-494.fc37.x86_64                             @updates
    Upgraded      perl-POSIX-2.03-492.fc37.x86_64                             @@System
    Upgrade       perl-SelectSaver-1.02-494.fc37.noarch                       @updates
    Upgraded      perl-SelectSaver-1.02-492.fc37.noarch                       @@System
    Upgrade       perl-Symbol-1.09-494.fc37.noarch                            @updates
    Upgraded      perl-Symbol-1.09-492.fc37.noarch                            @@System
    Upgrade       perl-Text-Tabs+Wrap-2023.0511-1.fc37.noarch                 @updates
    Upgraded      perl-Text-Tabs+Wrap-2021.0814-489.fc37.noarch               @@System
    Upgrade       perl-base-2.27-494.fc37.noarch                              @updates
    Upgraded      perl-base-2.27-492.fc37.noarch                              @@System
    Upgrade       perl-if-0.61.000-494.fc37.noarch                            @updates
    Upgraded      perl-if-0.61.000-492.fc37.noarch                            @@System
    Upgrade       perl-interpreter-4:5.36.1-494.fc37.x86_64                   @updates
    Upgraded      perl-interpreter-4:5.36.0-492.fc37.x86_64                   @@System
    Upgrade       perl-lib-0.65-494.fc37.x86_64                               @updates
    Upgraded      perl-lib-0.65-492.fc37.x86_64                               @@System
    Upgrade       perl-libs-4:5.36.1-494.fc37.x86_64                          @updates
    Upgraded      perl-libs-4:5.36.0-492.fc37.x86_64                          @@System
    Upgrade       perl-mro-1.26-494.fc37.x86_64                               @updates
    Upgraded      perl-mro-1.26-492.fc37.x86_64                               @@System
    Upgrade       perl-overload-1.35-494.fc37.noarch                          @updates
    Upgraded      perl-overload-1.35-492.fc37.noarch                          @@System
    Upgrade       perl-overloading-0.02-494.fc37.noarch                       @updates
    Upgraded      perl-overloading-0.02-492.fc37.noarch                       @@System
    Upgrade       perl-subs-1.04-494.fc37.noarch                              @updates
    Upgraded      perl-subs-1.04-492.fc37.noarch                              @@System
    Upgrade       perl-vars-1.05-494.fc37.noarch                              @updates
    Upgraded      perl-vars-1.05-492.fc37.noarch                              @@System
    Upgrade       python-setuptools-wheel-62.6.0-3.fc37.noarch                @updates
    Upgraded      python-setuptools-wheel-62.6.0-2.fc37.noarch                @@System
    Upgrade       python3-dnf-4.15.1-1.fc37.noarch                            @updates
    Upgraded      python3-dnf-4.15.0-1.fc37.noarch                            @@System
    Upgrade       python3-rpm-4.18.1-2.fc37.x86_64                            @updates
    Upgraded      python3-rpm-4.18.0-1.fc37.x86_64                            @@System
    Upgrade       python3-setuptools-62.6.0-3.fc37.noarch                     @updates
    Upgraded      python3-setuptools-62.6.0-2.fc37.noarch                     @@System
    Upgrade       rpm-4.18.1-2.fc37.x86_64                                    @updates
    Upgraded      rpm-4.18.0-1.fc37.x86_64                                    @@System
    Upgrade       rpm-build-libs-4.18.1-2.fc37.x86_64                         @updates
    Upgraded      rpm-build-libs-4.18.0-1.fc37.x86_64                         @@System
    Upgrade       rpm-libs-4.18.1-2.fc37.x86_64                               @updates
    Upgraded      rpm-libs-4.18.0-1.fc37.x86_64                               @@System
    Upgrade       rpm-plugin-selinux-4.18.1-2.fc37.x86_64                     @updates
    Upgraded      rpm-plugin-selinux-4.18.0-1.fc37.x86_64                     @@System
    Upgrade       rpm-plugin-systemd-inhibit-4.18.1-2.fc37.x86_64             @updates
    Upgraded      rpm-plugin-systemd-inhibit-4.18.0-1.fc37.x86_64             @@System
    Upgrade       rpm-sign-libs-4.18.1-2.fc37.x86_64                          @updates
    Upgraded      rpm-sign-libs-4.18.0-1.fc37.x86_64                          @@System
    Upgrade       selinux-policy-37.20-1.fc37.noarch                          @updates
    Upgraded      selinux-policy-37.19-1.fc37.noarch                          @@System
    Upgrade       selinux-policy-targeted-37.20-1.fc37.noarch                 @updates
    Upgraded      selinux-policy-targeted-37.19-1.fc37.noarch                 @@System
    Upgrade       tzdata-2023c-1.fc37.noarch                                  @updates
    Upgraded      tzdata-2022g-1.fc37.noarch                                  @@System
    Upgrade       vim-data-2:9.0.1562-1.fc37.noarch                           @updates
    Upgraded      vim-data-2:9.0.1440-1.fc37.noarch                           @@System
    Upgrade       vim-minimal-2:9.0.1562-1.fc37.x86_64                        @updates
    Upgraded      vim-minimal-2:9.0.1440-1.fc37.x86_64                        @@System
    Upgrade       whois-nls-5.5.17-1.fc37.noarch                              @updates
    Upgraded      whois-nls-5.5.15-1.fc37.noarch                              @@System
    Upgrade       yum-4.15.1-1.fc37.noarch                                    @updates
    Upgraded      yum-4.15.0-1.fc37.noarch                                    @@System
    Reason Change ModemManager-glib-1.18.12-1.fc37.x86_64                     @updates
    Removed       kernel-6.1.12-200.fc37.x86_64                               @@System
    Removed       kernel-core-6.1.12-200.fc37.x86_64                          @@System
    Removed       kernel-modules-6.1.12-200.fc37.x86_64                       @@System

So in summary it looks like installing latest Linux updates now causes Godot to fail to start very often.

Steps to reproduce

Try to start Godot 3.5 or 3.6 beta 2 on an up to date Fedora system (probably some other distros will soon have new enough packages to have the same problem):

$ ./Godot_v3.6-beta2_mono_x11.64 
Godot Engine v3.6.beta2.mono.official.68c507f59 - https://godotengine.org
OpenGL ES 3.0 Renderer: AMD Radeon Graphics (gfx1100, LLVM 16.0.1, DRM 3.49, 6.2.14-300.fc38.x86_64)
Async. shader compilation: OFF

Mono: Log file is: '/home/hhyyrylainen/.local/share/godot/mono/mono_logs/2023-05-26_10.15.38_2759507.log'

=================================================================
    Native Crash Reporting
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

=================================================================
    Native stacktrace:
=================================================================
    0x1009f9d - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x100a329 - ./Godot_v3.6-beta2_mono_x11.64 : 
    0xffc9df - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x100d3ff - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x7f9d39702b70 - /lib64/libc.so.6 : 
    0x102f3bb - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x10197bd - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x100ebc6 - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x114946f - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x114bfb0 - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x10841be - ./Godot_v3.6-beta2_mono_x11.64 : 
    0x10169a9 - ./Godot_v3.6-beta2_mono_x11.64 : 
    0xf6c98b - ./Godot_v3.6-beta2_mono_x11.64 : mono_jit_init_version
    0x14a6dbb - ./Godot_v3.6-beta2_mono_x11.64 : _ZN6GDMono10initializeEv
    0x1866272 - ./Godot_v3.6-beta2_mono_x11.64 : _ZN14CSharpLanguage4initEv
    0x3b610ef - ./Godot_v3.6-beta2_mono_x11.64 : _ZN12ScriptServer14init_languagesEv
    0x1280130 - ./Godot_v3.6-beta2_mono_x11.64 : _ZN4Main6setup2Em
    0x128584e - ./Godot_v3.6-beta2_mono_x11.64 : _ZN4Main5setupEPKciPPcb
    0xf2bf47 - ./Godot_v3.6-beta2_mono_x11.64 : main
    0x7f9d396ecb4a - /lib64/libc.so.6 : 
    0x7f9d396ecc0b - /lib64/libc.so.6 : __libc_start_main
    0xf310be - ./Godot_v3.6-beta2_mono_x11.64 : 

=================================================================
    Telemetry Dumper:
=================================================================
No threads attached to runtime.

=================================================================
    External Debugger Dump:
=================================================================
[New LWP 2759508]
[New LWP 2759521]
[New LWP 2759522]
[New LWP 2759523]
[New LWP 2759524]
[New LWP 2759525]
[New LWP 2759526]
[New LWP 2759527]
[New LWP 2759528]
[New LWP 2759529]
[New LWP 2759530]
[New LWP 2759531]
[New LWP 2759532]

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.fedoraproject.org/>
Enable debuginfod for this session? (y or [n]) [answered N; input not from terminal]
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
0x00007f9d3979fc73 in wait4 () from /lib64/libc.so.6
  Id   Target Id                                             Frame 
* 1    Thread 0x7f9d3959dc00 (LWP 2759507) "Godot_v3.6-beta" 0x00007f9d3979fc73 in wait4 () from /lib64/libc.so.6
  2    Thread 0x7f9d2bb7e6c0 (LWP 2759508) "Godot_v3.6-beta" 0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
  3    Thread 0x7f9d219ff6c0 (LWP 2759521) "Godot_v3.6:cs0"  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
  4    Thread 0x7f9d211fe6c0 (LWP 2759522) "Godot_v:disk$0"  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
  5    Thread 0x7f9d209fd6c0 (LWP 2759523) "Godot_v3.6:sh0"  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
  6    Thread 0x7f9d1bfff6c0 (LWP 2759524) "Godot_v3:shlo0"  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
  7    Thread 0x7f9d1b3fe6c0 (LWP 2759525) "Godot_v3:gdrv0"  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
  8    Thread 0x7f9d1abfd6c0 (LWP 2759526) "Godot_v3:gdrv0"  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
  9    Thread 0x7f9d1a1fc6c0 (LWP 2759527) "Godot_v3.6-beta" 0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
  10   Thread 0x7f9cfffff6c0 (LWP 2759528) "Godot_v3.6-beta" 0x00007f9d3979b413 in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6
  11   Thread 0x7f9cff7fe6c0 (LWP 2759529) "Godot_v3.6-beta" 0x00007f9d3979b413 in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6
  12   Thread 0x7f9cfeffd6c0 (LWP 2759530) "Godot_v3.6-beta" 0x00007f9d3979b413 in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6
  13   Thread 0x7f9cfe7fc6c0 (LWP 2759531) "Godot_v3.6-beta" 0x00007f9d397ccb77 in select () from /lib64/libc.so.6
  14   Thread 0x7f9cfd7ff6c0 (LWP 2759532) "SGen worker"     0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6

Thread 14 (Thread 0x7f9cfd7ff6c0 (LWP 2759532) "SGen worker"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00000000011fa5db in ?? ()
#3  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#4  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 13 (Thread 0x7f9cfe7fc6c0 (LWP 2759531) "Godot_v3.6-beta"):
#0  0x00007f9d397ccb77 in select () from /lib64/libc.so.6
#1  0x000000000125637a in OS_X11::_wait_for_events() const ()
#2  0x00000000012564f5 in OS_X11::_poll_events_thread(void*) ()
#3  0x0000000003c1f3c8 in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) ()
#4  0x00000000041312b0 in ?? ()
#5  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#6  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 12 (Thread 0x7f9cfeffd6c0 (LWP 2759530) "Godot_v3.6-beta"):
#0  0x00007f9d3979b413 in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6
#1  0x00007f9d3979feb7 in nanosleep () from /lib64/libc.so.6
#2  0x00007f9d397cd48c in usleep () from /lib64/libc.so.6
#3  0x0000000001252d2d in JoypadLinux::joypad_events_thread_run() ()
#4  0x0000000003c1f3c8 in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) ()
#5  0x00000000041312b0 in ?? ()
#6  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#7  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 11 (Thread 0x7f9cff7fe6c0 (LWP 2759529) "Godot_v3.6-beta"):
#0  0x00007f9d3979b413 in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6
#1  0x00007f9d3979feb7 in nanosleep () from /lib64/libc.so.6
#2  0x00007f9d397cd48c in usleep () from /lib64/libc.so.6
#3  0x000000000125bb12 in JoypadLinux::monitor_joypads(udev*) ()
#4  0x000000000125bd83 in JoypadLinux::monitor_joypads_thread_run() ()
#5  0x0000000003c1f3c8 in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) ()
#6  0x00000000041312b0 in ?? ()
#7  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#8  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 10 (Thread 0x7f9cfffff6c0 (LWP 2759528) "Godot_v3.6-beta"):
#0  0x00007f9d3979b413 in clock_nanosleep@GLIBC_2.2.5 () from /lib64/libc.so.6
#1  0x00007f9d3979feb7 in nanosleep () from /lib64/libc.so.6
#2  0x0000000003f72868 in ?? ()
#3  0x0000000001f4c61b in AudioDriverPulseAudio::thread_func(void*) ()
#4  0x0000000003c1f3c8 in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) ()
#5  0x00000000041312b0 in ?? ()
#6  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#7  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 9 (Thread 0x7f9d1a1fc6c0 (LWP 2759527) "Godot_v3.6-beta"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00000000040c74dc in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#3  0x00000000037cc2bb in VisualServerScene::_gi_probe_bake_thread() ()
#4  0x0000000003c1f3c8 in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) ()
#5  0x00000000041312b0 in ?? ()
#6  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#7  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 8 (Thread 0x7f9d1abfd6c0 (LWP 2759526) "Godot_v3:gdrv0"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00007f9d295113fd in cnd_wait () from /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f9d294c05bb in util_queue_thread_func () from /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f9d2951132c in impl_thrd_routine () from /usr/lib64/dri/radeonsi_dri.so
#5  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#6  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 7 (Thread 0x7f9d1b3fe6c0 (LWP 2759525) "Godot_v3:gdrv0"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00007f9d295113fd in cnd_wait () from /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f9d294c05bb in util_queue_thread_func () from /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f9d2951132c in impl_thrd_routine () from /usr/lib64/dri/radeonsi_dri.so
#5  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#6  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 6 (Thread 0x7f9d1bfff6c0 (LWP 2759524) "Godot_v3:shlo0"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00007f9d295113fd in cnd_wait () from /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f9d294c05bb in util_queue_thread_func () from /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f9d2951132c in impl_thrd_routine () from /usr/lib64/dri/radeonsi_dri.so
#5  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#6  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 5 (Thread 0x7f9d209fd6c0 (LWP 2759523) "Godot_v3.6:sh0"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00007f9d295113fd in cnd_wait () from /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f9d294c05bb in util_queue_thread_func () from /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f9d2951132c in impl_thrd_routine () from /usr/lib64/dri/radeonsi_dri.so
#5  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#6  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 4 (Thread 0x7f9d211fe6c0 (LWP 2759522) "Godot_v:disk$0"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00007f9d295113fd in cnd_wait () from /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f9d294c05bb in util_queue_thread_func () from /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f9d2951132c in impl_thrd_routine () from /usr/lib64/dri/radeonsi_dri.so
#5  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#6  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 3 (Thread 0x7f9d219ff6c0 (LWP 2759521) "Godot_v3.6:cs0"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00007f9d295113fd in cnd_wait () from /usr/lib64/dri/radeonsi_dri.so
#3  0x00007f9d294c05bb in util_queue_thread_func () from /usr/lib64/dri/radeonsi_dri.so
#4  0x00007f9d2951132c in impl_thrd_routine () from /usr/lib64/dri/radeonsi_dri.so
#5  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#6  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 2 (Thread 0x7f9d2bb7e6c0 (LWP 2759508) "Godot_v3.6-beta"):
#0  0x00007f9d3974e1d9 in __futex_abstimed_wait_common () from /lib64/libc.so.6
#1  0x00007f9d39750b79 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libc.so.6
#2  0x00000000040c74dc in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
#3  0x0000000003d17aab in _IP_ResolverPrivate::_thread_function(void*) ()
#4  0x0000000003c1f3c8 in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) ()
#5  0x00000000041312b0 in ?? ()
#6  0x00007f9d39751907 in start_thread () from /lib64/libc.so.6
#7  0x00007f9d397d7870 in clone3 () from /lib64/libc.so.6

Thread 1 (Thread 0x7f9d3959dc00 (LWP 2759507) "Godot_v3.6-beta"):
#0  0x00007f9d3979fc73 in wait4 () from /lib64/libc.so.6
#1  0x000000000100a22a in ?? ()
#2  0x000000000100a329 in ?? ()
#3  0x0000000000ffc9df in ?? ()
#4  0x000000000100d3ff in ?? ()
#5  <signal handler called>
#6  0x000000000102f3bb in ?? ()
#7  0x00000000010197bd in ?? ()
#8  0x000000000100ebc6 in ?? ()
#9  0x000000000114946f in ?? ()
#10 0x000000000114bfb0 in ?? ()
#11 0x00000000010841be in ?? ()
#12 0x00000000010169a9 in ?? ()
#13 0x0000000000f6c98b in mono_jit_init_version ()
#14 0x00000000014a6dbb in GDMono::initialize() ()
#15 0x0000000001866272 in CSharpLanguage::init() ()
#16 0x0000000003b610ef in ScriptServer::init_languages() ()
#17 0x0000000001280130 in Main::setup2(unsigned long) ()
#18 0x000000000128584e in Main::setup(char const*, int, char**, bool) ()
#19 0x0000000000f2bf47 in main ()
[Inferior 1 (process 2759507) detached]

=================================================================
    Basic Fault Address Reporting
=================================================================
Memory around native instruction pointer (0x102f3bb):0x102f3ab  83 c2 01 48 83 fa 01 0f 87 b5 00 00 00 83 e8 05  ...H............
0x102f3bb  41 c6 04 24 e8 41 89 44 24 01 48 85 db 74 56 41  A..$.A.D$.H..tVA
0x102f3cb  c6 44 24 05 08 4d 89 6c 24 06 4d 8d 6c 24 0e 4d  .D$..M.l$.M.l$.M
0x102f3db  29 e5 48 63 c5 49 39 c5 7f 53 4d 85 ff 74 03 41  ).Hc.I9..SM..t.A
Keskeytetty (luotiin core-tiedosto)

Note that the problem doesn't trigger each time, but for me it triggers often enough for it not to take more than 30 seconds of just continually trying to open Godot to see it crash at least once.

Minimal reproduction project

No project required, the Godot Editor itself can crash when opening.

akien-mga commented 1 year ago

Thanks for the detailed report. I hadn't tried the Mono build recently, but just did on my distro (Mageia 9, development release fairly up to date on packages) and I can reproduce the crash too.

Running kernel 6.3.3-desktop-1.mga9 and glibc-2.36-40.mga9. I'll get a stacktrace.

Compiled from a810c8c5f681e76d96d8b461ee6e173c094aa2e5 (basically the same as 3.6-beta2):

Mono: Log file is: '/home/akien/.local/share/godot/mono/mono_logs/2023-05-26_11.06.41_221943.log'
[New Thread 0x7fffb4bff6c0 (LWP 221976)]
[New Thread 0x7fffb530f6c0 (LWP 221977)]
ERROR: Mono: FATAL ERROR '* Assertion at /home/runner/work/godot-mono-builds/godot-mono-builds/mono_sources/mono/mini/mini.c:2259, condition `code' not met
 (in domain , error)', ABORTING! Logfile: '/home/akien/.local/share/godot/mono/mono_logs/2023-05-26_11.06.41_221943.log'.
   at: mono_log_callback (modules/mono/mono_gd/gd_mono_log.cpp:91)

Thread 1 "godot.x11.tools" received signal SIGABRT, Aborted.
0x00007ffff7b3f3ac in __pthread_kill_implementation () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff7b3f3ac in __pthread_kill_implementation () from /lib64/libc.so.6
#1  0x00007ffff7af0892 in raise () from /lib64/libc.so.6
#2  0x00007ffff7adc464 in abort () from /lib64/libc.so.6
#3  0x0000000001e84fa4 in GDMonoLog::mono_log_callback (log_domain=0x0, log_level=0x5098be8 "error", 
    message=0x8c0b710 "* Assertion at /home/runner/work/godot-mono-builds/godot-mono-builds/mono_sources/mono/mini/mini.c:2259, condition `code' not met\n", fatal=4) at modules/mono/mono_gd/gd_mono_log.cpp:97
#4  0x0000000001bdc2eb in monoeg_assertion_message ()
#5  0x0000000001bdc33a in mono_assertion_message ()
#6  0x00000000019d77bd in mono_codegen ()
#7  0x00000000019d9740 in mini_method_compile ()
#8  0x00000000019da332 in mono_jit_compile_method_inner ()
#9  0x00000000019cae81 in ?? ()
#10 0x00000000019cc21a in ?? ()
#11 0x0000000001afb0fe in ?? ()
#12 0x0000000001a79452 in ?? ()
#13 0x0000000001a79a65 in mono_exception_from_name_two_strings_checked ()
#14 0x0000000001a3ae14 in ?? ()
#15 0x0000000001a3e56e in ?? ()
#16 0x0000000001a3edff in mono_domain_create_appdomain ()
#17 0x0000000001e94823 in GDMonoUtils::create_domain (p_friendly_name=...) at modules/mono/mono_gd/gd_mono_utils.cpp:312
#18 0x0000000001e639b8 in GDMono::_load_scripts_domain (this=0x8b42090) at modules/mono/mono_gd/gd_mono.cpp:1028
#19 0x0000000001e5eb92 in GDMono::initialize (this=0x8b42090) at modules/mono/mono_gd/gd_mono.cpp:425
#20 0x0000000002287763 in CSharpLanguage::init (this=0x89728d0) at modules/mono/csharp_script.cpp:113
#21 0x0000000004adef1b in ScriptServer::init_languages () at core/script_language.cpp:170
#22 0x0000000001c2d8d8 in Main::setup2 (p_main_tid_override=0) at main/main.cpp:1612
#23 0x0000000001c29e37 in Main::setup (execpath=0x7fffffffda9f "/home/akien/Projects/godot/godot-3.x/bin/godot.x11.tools.64.mono", argc=0, argv=0x7fffffffd5f0, p_second_phase=true) at main/main.cpp:1321
#24 0x0000000001be2f01 in main (argc=1, argv=0x7fffffffd5e8) at platform/x11/godot_x11.cpp:48

Mono seems to be asserting. @neikeq

akien-mga commented 1 year ago

This bug sounds related: https://github.com/mono/mono/issues/21651

There's a patch available, I'll give it a try.

akien-mga commented 1 year ago

I've confirmed that the patch from https://github.com/mono/mono/issues/21651 fixes the issue, with this test build of Mono: https://github.com/godotengine/godot-mono-builds/actions/runs/5089774213

I made a minor fix to that test and started a new build which should be available as a GitHub Release in a few hours: https://github.com/godotengine/godot-mono-builds (Same as the artifacts from the above build, just with a cleaner commit history.)

I'll use this build for the next 3.5 and 3.6 builds, possibly fast-tracking a 3.5.3 release to make that fix readily available.

It's a regression in the Linux kernel which should hopefully be patched soon, and thus this Mono workaround wouldn't be needed, but I don't know the ETA for the kernel fix to make it to a stable branch, and whether it will be backported to 6.1, 6.2 and 6.3.

akien-mga commented 1 year ago

The upstream regression is fixed in kernel 6.1.30 and 6.3.4. 6.2 seems to have gone EOL before this could be backported, so it will stay vulnerable, but most distros should upgrade to 6.3 since 6.2 isn't an EOL.

So this can likely be considered fixed, without me needing to actually use the mono workaround. I'll keep this issue open for now so users can have visibility over this if they're still on a kernel with the regression.