Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Editor freezes or crashes when loading a project due to GPUParticles3D #50039

Closed
unfa opened this issue Jun 30, 2021 · 3 comments
Closed

Editor freezes or crashes when loading a project due to GPUParticles3D #50039

unfa opened this issue Jun 30, 2021 · 3 comments
Labels

Comments

@unfa
Copy link

unfa commented Jun 30, 2021

Godot version

Last reproduced with v4.0.dev.calinou.9b8095ad0

System information

Manjaro Linux w/ KDE. Tested on Ryzen/Radeon and Intel/Nvidia machines

Issue description

A project I am working on became impossible to load in Godot 4 Editor.
I am able to run the game itself just fine, but when attempting to open the game project in the editor, it either freezes or crashes.

Crashes happen with this output:

pure virtual method called
terminate called without an active exception
--Type <RET> for more, q to quit, c to continue without paging--
Thread 1 "godot" received signal SIGABRT, Aborted.
0x00007ffff7af2d22 in raise () from /usr/lib/libc.so.6

Freezes show this backtrace after I stop the process manually:

Thread 1 "godot" received signal SIGTSTP, Stopped (user).
std::atomic_flag::test_and_set (__m=std::memory_order_acquire, this=0xa0ce7e8) at /usr/include/c++/9/bits/atomic_base.h:195
195     /usr/include/c++/9/bits/atomic_base.h: No such file or directory.
(gdb) bt
#0  std::atomic_flag::test_and_set (__m=std::memory_order_acquire, this=0xa0ce7e8) at /usr/include/c++/9/bits/atomic_base.h:195
#1  SpinLock::lock (this=0xa0ce7e8) at ./core/os/spin_lock.h:43
#2  RID_Alloc<RendererStorageRD::Material, true>::owns (this=0xa0ce7b0, p_rid=...) at ./core/templates/rid_owner.h:223
#3  0x00000000052e253d in RID_Owner<RendererStorageRD::Material, true>::owns (this=0xa0ce7b0, p_rid=...) at ./core/templates/rid_owner.h:475
#4  0x00000000052d396a in RendererStorageRD::free (this=0xa0ce510, p_rid=...) at servers/rendering/renderer_rd/renderer_storage_rd.cpp:8674
#5  0x000000000520577a in RenderingServerDefault::_free (this=0xa07f790, p_rid=...) at servers/rendering/rendering_server_default.cpp:68
#6  0x0000000005248d6f in CommandQueueMT::Command1<RenderingServerDefault, void (RenderingServerDefault::*)(RID), RID>::call (this=0x7fff500d8f78) at ./core/templates/command_queue_mt.h:322
#7  0x00000000051207e1 in CommandQueueMT::_flush (this=0xa07f938) at ./core/templates/command_queue_mt.h:373
#8  0x000000000512086e in CommandQueueMT::flush_if_pending (this=0xa07f938) at ./core/templates/command_queue_mt.h:404
#9  0x000000000521ffa2 in RenderingServerDefault::free (this=0xa07f790, p_rid=...) at servers/rendering/rendering_server_default.h:910
#10 0x0000000004d42282 in GradientTexture::~GradientTexture (this=0x7fff500344c0, __in_chrg=<optimized out>) at scene/resources/texture.cpp:1517
#11 0x0000000002089b19 in memdelete<RefCounted> (p_class=0x7fff500344c0) at ./core/os/memory.h:115
#12 0x0000000005910a37 in Variant::_clear_internal (this=0x1ddac098) at core/variant/variant.cpp:1309
#13 0x0000000001ffded3 in Variant::clear (this=0x1ddac098) at ./core/variant/variant.h:257
#14 0x0000000001ffdef8 in Variant::~Variant (this=0x1ddac098, __in_chrg=<optimized out>) at ./core/variant/variant.h:672
#15 0x00000000022bb5de in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element::~Element (this=0x1ddac060, __in_chrg=<optimized out>) at ./core/templates/map.h:49
#16 0x00000000022bb61d in memdelete_allocator<Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element, DefaultAllocator> (p_class=0x1ddac060) at ./core/os/memory.h:127
#17 0x00000000022b5080 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree (this=0xa51dce0, p_element=0x1ddac060) at ./core/templates/map.h:487
#18 0x00000000022b505d in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree (this=0xa51dce0, p_element=0x1ddcf050) at ./core/templates/map.h:485
#19 0x00000000022b5074 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree (this=0xa51dce0, p_element=0x1ddb6d70) at ./core/templates/map.h:486
#20 0x00000000022b5074 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree (this=0xa51dce0, p_element=0x1dde6060) at ./core/templates/map.h:486
#21 0x00000000022b5074 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree (this=0xa51dce0, p_element=0x1dde3100) at ./core/templates/map.h:486
#22 0x00000000022b505d in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree (this=0xa51dce0, p_element=0x1dde0ef0) at ./core/templates/map.h:485
#23 0x00000000022ac37c in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::clear (this=0xa51dce0) at ./core/templates/map.h:647
#24 0x00000000022a465a in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::~Map (this=0xa51dce0, __in_chrg=<optimized out>) at ./core/templates/map.h:664
#25 0x00000000052dbd1e in RendererStorageRD::Material::~Material (this=0xa51dcb0, __in_chrg=<optimized out>) at servers/rendering/renderer_rd/renderer_storage_rd.h:374
#26 0x00000000052f6565 in RID_Alloc<RendererStorageRD::Material, true>::free (this=0xa0ce7b0, p_rid=...) at ./core/templates/rid_owner.h:279
#27 0x00000000052e2563 in RID_Owner<RendererStorageRD::Material, true>::free (this=0xa0ce7b0, p_rid=...) at ./core/templates/rid_owner.h:479
--Type <RET> for more, q to quit, c to continue without paging--c
#28 0x00000000052d3a31 in RendererStorageRD::free (this=0xa0ce510, p_rid=...) at servers/rendering/renderer_rd/renderer_storage_rd.cpp:8682
#29 0x000000000520577a in RenderingServerDefault::_free (this=0xa07f790, p_rid=...) at servers/rendering/rendering_server_default.cpp:68
#30 0x0000000005248d6f in CommandQueueMT::Command1<RenderingServerDefault, void (RenderingServerDefault::*)(RID), RID>::call (this=0x7fff500d8f78) at ./core/templates/command_queue_mt.h:322
#31 0x00000000051207e1 in CommandQueueMT::_flush (this=0xa07f938) at ./core/templates/command_queue_mt.h:373
#32 0x000000000512086e in CommandQueueMT::flush_if_pending (this=0xa07f938) at ./core/templates/command_queue_mt.h:404
#33 0x000000000521da0a in RenderingServerDefault::canvas_item_clear (this=0xa07f790, p1=...) at servers/rendering/rendering_server_default.h:825
#34 0x00000000042b85eb in CanvasItem::_update_callback (this=0x1b0506f0) at scene/main/canvas_item.cpp:418
#35 0x00000000020a7547 in call_with_variant_args_helper<__UnexistingClass>(__UnexistingClass*, void (__UnexistingClass::*)(), Variant const**, Callable::CallError&, IndexSequence<>) (p_instance=0x1b0506f0, p_method=(void (__UnexistingClass::*)(__UnexistingClass * const)) 0x42b8572 <CanvasItem::_update_callback()>, p_args=0x7fffffffcbf0, r_error=...) at ./core/variant/binder_common.h:218
#36 0x00000000020a5ea0 in call_with_variant_args_dv<__UnexistingClass> (p_instance=0x1b0506f0, p_method=(void (__UnexistingClass::*)(__UnexistingClass * const)) 0x42b8572 <CanvasItem::_update_callback()>, p_args=0x0, p_argcount=0, r_error=..., default_values=...) at ./core/variant/binder_common.h:365
#37 0x00000000020a45f2 in MethodBindT<>::call(Object*, Variant const**, int, Callable::CallError&) (this=0xb790200, p_object=0x1b0506f0, p_args=0x0, p_arg_count=0, r_error=...) at ./core/object/method_bind.h:285
#38 0x0000000005b8f98a in Object::call (this=0x1b0506f0, p_method=..., p_args=0x0, p_argcount=0, r_error=...) at core/object/object.cpp:832
#39 0x00000000059085f9 in Callable::call (this=0x7ffff6bfb0e8, p_arguments=0x0, p_argcount=0, r_return_value=..., r_call_error=...) at core/variant/callable.cpp:62
#40 0x0000000005b888de in MessageQueue::_call_function (this=0x9908550, p_callable=..., p_args=0x7ffff6bfb100, p_argcount=0, p_show_error=false) at core/object/message_queue.cpp:258
#41 0x0000000005b88c1a in MessageQueue::flush (this=0x9908550) at core/object/message_queue.cpp:304
#42 0x000000000432f6d4 in SceneTree::physics_process (this=0xa1d6030, p_time=0.0166666675) at scene/main/scene_tree.cpp:415
#43 0x000000000203f407 in Main::iteration () at main/main.cpp:2515
#44 0x0000000001ffff1a in OS_LinuxBSD::run (this=0x7fffffffd1f0) at platform/linuxbsd/os_linuxbsd.cpp:278
#45 0x0000000001ffcf34 in main (argc=4, argv=0x7fffffffd6f8) at platform/linuxbsd/godot_linuxbsd.cpp:58

In rare cases the game loads fine, so the same action may have 3 different results, seemingly at random.

I have tested this issue in many version of Godot 4, and was not able to find a version that consistently loads the project yet.

At first I though a specific texture file was responsible for this, but then it turned out it makes no real difference.

This is a real showstopper. Me and a small team are completely stuck because of this.
So if there's anything I can do to help fixing this issue - please let me know.

I've bisected my source tree and found that unfa/liblast@7de4dfb is the first bad commit.

I am trying to understand what in that commit has made this game project freeze or crash Godot.

Can anyone reproduce this?

Steps to reproduce

  1. Follow instructions to clone and install this game project: https://github.com/unfa/liblast
  2. Load the project in Godot 4.0 Editor
  3. Observe as Godot Editor crashes or freezes
  4. Switch to this commit: 65fed80abc57a06c00322b2195430dd801209234
  5. Try loading the project in Godot Editor again
  6. Observe as the project loads fine

Minimal reproduction project

No response

@Zireael07
Copy link
Contributor

Based on unfa/liblast@7de4dfb#r52886238 it seems the culprit is CPUParticles?

@unfa
Copy link
Author

unfa commented Jul 1, 2021

@Zireael07: I think it's GPU Particles. I did not use CPU Particles anywhere.

@Calinou Calinou changed the title Editor freezes or crashes when loading a project Editor freezes or crashes when loading a project due to GPUParticles3D Jul 1, 2021
@qarmin
Copy link
Contributor

qarmin commented Jul 1, 2021

Duplicate of #49895

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants