godotengine / godot

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

Godot crashes when using CurveTexture::set_curve #32875

Open qarmin opened 5 years ago

qarmin commented 5 years ago

Godot version: 3.2.alpha.custom_build. 1fed266bf OS/device including version: Ubuntu 19.04 Issue description:

The minimal project is very, very big because Godot crashes very rarely, sometimes after 5s but sometimes doesn't crash after 10 min.

Backtrace:

core/vmap.h:86:21: runtime error: member access within null pointer of type 'const struct Pair'
core/vmap.h:86:21: runtime error: member call on null pointer of type 'const struct Target'
core/vmap.h:86:17: runtime error: member access within null pointer of type 'const struct Pair'
core/object.h:449:74: runtime error: member access within null pointer of type 'const struct Target'
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] godots() [0x140a2b0] (/mnt/KubuntuWolne/godot/platform/x11/crash_handler_x11.cpp:54)
[2] /lib/x86_64-linux-gnu/libc.so.6(+0x43f60) [0x7f1616784f60] (??:0)
[3] Object::Signal::Target::operator<(Object::Signal::Target const&) const (/mnt/KubuntuWolne/godot/core/object.h:449)
[4] VMap<Object::Signal::Target, Object::Signal::Slot>::_find(Object::Signal::Target const&, bool&) const (/mnt/KubuntuWolne/godot/./core/vmap.h:86)
[5] VMap<Object::Signal::Target, Object::Signal::Slot>::insert(Object::Signal::Target const&, Object::Signal::Slot const&) (/mnt/KubuntuWolne/godot/./core/vmap.h:120)
[6] VMap<Object::Signal::Target, Object::Signal::Slot>::operator[](Object::Signal::Target const&) (/mnt/KubuntuWolne/godot/./core/vmap.h:200)
[7] Object::connect(StringName const&, Object*, StringName const&, Vector<Variant> const&, unsigned int) (/mnt/KubuntuWolne/godot/core/object.cpp:1483)
[8] CurveTexture::set_curve(Ref<Curve>) (/mnt/KubuntuWolne/godot/scene/resources/texture.cpp:1731 (discriminator 4))
[9] MethodBind1<Ref<Curve> >::call(Object*, Variant const**, int, Variant::CallError&) (/mnt/KubuntuWolne/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[10] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (/mnt/KubuntuWolne/godot/core/object.cpp:921 (discriminator 1))
[11] Variant::call_ptr(StringName const&, Variant const**, int, Variant*, Variant::CallError&) (/mnt/KubuntuWolne/godot/core/variant_call.cpp:1096 (discriminator 1))
[12] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Variant::CallError&, GDScriptFunction::CallState*) (/mnt/KubuntuWolne/godot/modules/gdscript/gdscript_function.cpp:1085)
[13] GDScriptInstance::call_multilevel(StringName const&, Variant const**, int) (/mnt/KubuntuWolne/godot/modules/gdscript/gdscript.cpp:1180)
[14] Node::_notification(int) (/mnt/KubuntuWolne/godot/scene/main/node.cpp:58)
[15] Node::_notificationv(int, bool) (/mnt/KubuntuWolne/godot/./scene/main/node.h:46 (discriminator 14))
[16] CanvasItem::_notificationv(int, bool) (/mnt/KubuntuWolne/godot/./scene/2d/canvas_item.h:166 (discriminator 3))
[17] Node2D::_notificationv(int, bool) (/mnt/KubuntuWolne/godot/./scene/2d/node_2d.h:38 (discriminator 3))
[18] Object::notification(int, bool) (/mnt/KubuntuWolne/godot/core/object.cpp:933)
[19] SceneTree::_notify_group_pause(StringName const&, int) (/mnt/KubuntuWolne/godot/scene/main/scene_tree.cpp:963)
[20] SceneTree::idle(float) (/mnt/KubuntuWolne/godot/scene/main/scene_tree.cpp:515 (discriminator 3))
[21] Main::iteration() (/mnt/KubuntuWolne/godot/main/main.cpp:1976)
[22] OS_X11::run() (/mnt/KubuntuWolne/godot/platform/x11/os_x11.cpp:3192)
[23] godots(main+0x342) [0x1401ba4] (/mnt/KubuntuWolne/godot/platform/x11/godot_x11.cpp:57)
[24] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xeb) [0x7f1616767b6b] (??:0)
[25] godots(_start+0x2a) [0x14017aa] (??:?)

Steps to reproduce: Read project manual - https://github.com/qarmin/The-worst-Godot-test-project#the-worst-godot-test-project Run project Minimal reproduction project: The-worst-Godot-test-project.zip

qarmin commented 4 years ago

Still happens with 3.2.2

New minimal project - MP.zip

To reproduce:

qarmin commented 4 years ago

Probably the smallest possible project - Small1.zip

To check crash the best option is to run project inside loop

for i in {1..50}; do { timeout 5s godot; }; done
qarmin commented 3 years ago

Still happens with Godot 3.2.4 rc 3

==94727==ERROR: AddressSanitizer: heap-use-after-free on address 0x62d000669750 at pc 0x000011574b61 bp 0x7fdb54071a00 sp 0x7fdb540719f0
READ of size 8 at 0x62d000669750 thread T3
    #0 0x11574b60 in Object::Signal::Target::operator=(Object::Signal::Target const&) core/object.h:450
    #1 0x11574d89 in VMap<Object::Signal::Target, Object::Signal::Slot>::Pair::operator=(VMap<Object::Signal::Target, Object::Signal::Slot>::Pair const&) core/vmap.h:40
    #2 0x11575148 in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::remove(int) core/cowdata.h:170
    #3 0x1156ae6d in VMap<Object::Signal::Target, Object::Signal::Slot>::erase(Object::Signal::Target const&) core/vmap.h:139
    #4 0x1154f829 in Object::_disconnect(StringName const&, Object*, StringName const&, bool) core/object.cpp:1588
    #5 0x115607ee in Object::~Object() core/object.cpp:2037
    #6 0x11606c90 in Reference::~Reference() core/reference.cpp:111
    #7 0x1165aa86 in Resource::~Resource() core/resource.cpp:426
    #8 0x35a762e in Texture::~Texture() scene/resources/texture.h:45
    #9 0xf1fdf95 in CurveTexture::~CurveTexture() scene/resources/texture.cpp:1784
    #10 0x17f0ec4 in void memdelete<Reference>(Reference*) core/os/memory.h:117
    #11 0x17e1d5e in Ref<Reference>::unref() core/reference.h:279
    #12 0x11603a3c in RefPtr::unref() core/ref_ptr.cpp:90
    #13 0x117515cc in Variant::clear() core/variant.cpp:1129
    #14 0x172d3df in Variant::~Variant() core/variant.h:444
    #15 0x1c4ddf8 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element::~Element() core/map.h:50
    #16 0x1c4deca in void memdelete_allocator<Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element, DefaultAllocator>(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/os/memory.h:128
    #17 0x1c2916c in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:505
    #18 0x1c290b9 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:503
    #19 0x1c29160 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:504
    #20 0x1c290b9 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:503
    #21 0x1c29160 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:504
    #22 0x1c0c753 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::clear() core/map.h:660
    #23 0x1c0d98f in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::~Map() core/map.h:681
    #24 0x7ca749e in RasterizerStorageGLES3::Material::~Material() (/usr/bin/godots+0x7ca749e)
    #25 0x7ca77c8 in void memdelete<RasterizerStorageGLES3::Material>(RasterizerStorageGLES3::Material*) (/usr/bin/godots+0x7ca77c8)
    #26 0x7c500b2 in RasterizerStorageGLES3::free(RID) drivers/gles3/rasterizer_storage_gles3.cpp:8076
    #27 0x1039a09f in VisualServerRaster::free(RID) servers/visual/visual_server_raster.cpp:72
    #28 0x1080c50c in CommandQueueMT::Command1<VisualServer, void (VisualServer::*)(RID), RID>::call() core/command_queue_mt.h:301
    #29 0x101037a4 in CommandQueueMT::flush_one(bool) core/command_queue_mt.h:440
    #30 0x101041d1 in CommandQueueMT::wait_and_flush_one() core/command_queue_mt.h:473
    #31 0x1057c4a3 in VisualServerWrapMT::thread_loop() servers/visual/visual_server_wrap_mt.cpp:72
    #32 0x1057b9db in VisualServerWrapMT::_thread_callback(void*) servers/visual/visual_server_wrap_mt.cpp:57
    #33 0x11a92149 in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) core/os/thread.cpp:68
    #34 0x11a958d1 in void std::__invoke_impl<void, void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*>(std::__invoke_other, void (*&&)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*&&, Thread::Settings&&, void (*&&)(void*), void*&&) /usr/include/c++/10/bits/invoke.h:60
    #35 0x11a9519f in std::__invoke_result<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*>::type std::__invoke<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*>(void (*&&)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*&&, Thread::Settings&&, void (*&&)(void*), void*&&) /usr/include/c++/10/bits/invoke.h:95
    #36 0x11a94d07 in void std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> >::_M_invoke<0ul, 1ul, 2ul, 3ul, 4ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul>) /usr/include/c++/10/thread:264
    #37 0x11a9499e in std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> >::operator()() /usr/include/c++/10/thread:271
    #38 0x11a94956 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> > >::_M_run() /usr/include/c++/10/thread:215
    #39 0x12aac6f3 in execute_native_thread_routine (/usr/bin/godots+0x12aac6f3)
    #40 0x7fdb79b37608 in start_thread /build/glibc-eX1tMB/glibc-2.31/nptl/pthread_create.c:477
    #41 0x7fdb78f9a292 in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x122292)

0x62d000669750 is located 4944 bytes inside of 32784-byte region [0x62d000668400,0x62d000670410)
freed by thread T0 here:
    #0 0x7fdb7a0188d0 in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.6+0xb08d0)
    #1 0x11a7b831 in Memory::realloc_static(void*, unsigned long, bool) core/os/memory.cpp:137
    #2 0x1158459e in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::resize(int) core/cowdata.h:295
    #3 0x11583cdb in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::insert(int, VMap<Object::Signal::Target, Object::Signal::Slot>::Pair const&) core/cowdata.h:179
    #4 0x11574a34 in VMap<Object::Signal::Target, Object::Signal::Slot>::insert(Object::Signal::Target const&, Object::Signal::Slot const&) core/vmap.h:125
    #5 0x1156abfd in VMap<Object::Signal::Target, Object::Signal::Slot>::operator[](Object::Signal::Target const&) core/vmap.h:199
    #6 0x1154bf3e in Object::connect(StringName const&, Object*, StringName const&, Vector<Variant> const&, unsigned int) core/object.cpp:1531
    #7 0xf1faf2f in CurveTexture::set_curve(Ref<Curve>) scene/resources/texture.cpp:1732
    #8 0xf29a9c6 in MethodBind1<Ref<Curve> >::call(Object*, Variant const**, int, Variant::CallError&) core/method_bind.gen.inc:775
    #9 0x115388b1 in Object::call(StringName const&, Variant const**, int, Variant::CallError&) core/object.cpp:919
    #10 0x117be129 in Variant::call_ptr(StringName const&, Variant const**, int, Variant*, Variant::CallError&) core/variant_call.cpp:1148
    #11 0x1d99b5d in GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Variant::CallError&, GDScriptFunction::CallState*) modules/gdscript/gdscript_function.cpp:1086
    #12 0x1bca770 in GDScriptInstance::call_multilevel(StringName const&, Variant const**, int) modules/gdscript/gdscript.cpp:1224
    #13 0xc0349a5 in Node::_notification(int) scene/main/node.cpp:60
    #14 0x1a78d7d in Node::_notificationv(int, bool) scene/main/node.h:46
    #15 0x1a7b1f2 in CanvasItem::_notificationv(int, bool) scene/2d/canvas_item.h:166
    #16 0xdb25ce0 in Node2D::_notificationv(int, bool) scene/2d/node_2d.h:38
    #17 0x11538d4b in Object::notification(int, bool) core/object.cpp:929
    #18 0xc163a11 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:992
    #19 0xc153f9f in SceneTree::idle(float) scene/main/scene_tree.cpp:529
    #20 0x18dcd08 in Main::iteration() main/main.cpp:2115
    #21 0x17c08fc in OS_X11::run() platform/x11/os_x11.cpp:3628
    #22 0x172cefb in main platform/x11/godot_x11.cpp:56
    #23 0x7fdb78e9f0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

previously allocated by thread T0 here:
    #0 0x7fdb7a0188d0 in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.6+0xb08d0)
    #1 0x11a7b831 in Memory::realloc_static(void*, unsigned long, bool) core/os/memory.cpp:137
    #2 0x11584d07 in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::resize(int) core/cowdata.h:326
    #3 0x115751cb in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::remove(int) core/cowdata.h:173
    #4 0x1156ae6d in VMap<Object::Signal::Target, Object::Signal::Slot>::erase(Object::Signal::Target const&) core/vmap.h:139
    #5 0x1154f829 in Object::_disconnect(StringName const&, Object*, StringName const&, bool) core/object.cpp:1588
    #6 0x115607ee in Object::~Object() core/object.cpp:2037
    #7 0x11606c90 in Reference::~Reference() core/reference.cpp:111
    #8 0x1165aa86 in Resource::~Resource() core/resource.cpp:426
    #9 0x35a762e in Texture::~Texture() scene/resources/texture.h:45
    #10 0xf1fdf95 in CurveTexture::~CurveTexture() scene/resources/texture.cpp:1784
    #11 0x17f0ec4 in void memdelete<Reference>(Reference*) core/os/memory.h:117
    #12 0x17e1d5e in Ref<Reference>::unref() core/reference.h:279
    #13 0x17e1f42 in Ref<Reference>::ref(Ref<Reference> const&) core/reference.h:70
    #14 0x1c0542f in Ref<Reference>::operator=(Ref<Reference> const&) core/reference.h:151
    #15 0x116032dd in RefPtr::operator=(RefPtr const&) core/ref_ptr.cpp:41
    #16 0x1178bddf in Variant::ObjData::operator=(Variant::ObjData const&) core/variant.h:146
    #17 0x11771455 in Variant::operator=(Variant const&) core/variant.cpp:2673
    #18 0x1d8b73a in GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Variant::CallError&, GDScriptFunction::CallState*) modules/gdscript/gdscript_function.cpp:738
    #19 0x1bca770 in GDScriptInstance::call_multilevel(StringName const&, Variant const**, int) modules/gdscript/gdscript.cpp:1224
    #20 0xc0349a5 in Node::_notification(int) scene/main/node.cpp:60
    #21 0x1a78d7d in Node::_notificationv(int, bool) scene/main/node.h:46
    #22 0x1a7b1f2 in CanvasItem::_notificationv(int, bool) scene/2d/canvas_item.h:166
    #23 0xdb25ce0 in Node2D::_notificationv(int, bool) scene/2d/node_2d.h:38
    #24 0x11538d4b in Object::notification(int, bool) core/object.cpp:929
    #25 0xc163a11 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:992
    #26 0xc153f9f in SceneTree::idle(float) scene/main/scene_tree.cpp:529
    #27 0x18dcd08 in Main::iteration() main/main.cpp:2115
    #28 0x17c08fc in OS_X11::run() platform/x11/os_x11.cpp:3628
    #29 0x172cefb in main platform/x11/godot_x11.cpp:56

Thread T3 created by T0 here:
    #0 0x7fdb79fbfa95 in __interceptor_pthread_create (/lib/x86_64-linux-gnu/libasan.so.6+0x57a95)
    #1 0x12aac9b8 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/bin/godots+0x12aac9b8)
    #2 0x11a92657 in Thread::start(void (*)(void*), void*, Thread::Settings const&) core/os/thread.cpp:85
    #3 0x1057dced in VisualServerWrapMT::init() servers/visual/visual_server_wrap_mt.cpp:113
    #4 0x174ddca in OS_X11::initialize(OS::VideoMode const&, int, int) platform/x11/os_x11.cpp:602
    #5 0x18bd7fa in Main::setup2(unsigned long) main/main.cpp:1286
    #6 0x18b81fe in Main::setup(char const*, int, char**, bool) main/main.cpp:1228
    #7 0x172ce00 in main platform/x11/godot_x11.cpp:49
    #8 0x7fdb78e9f0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

SUMMARY: AddressSanitizer: heap-use-after-free core/object.h:450 in Object::Signal::Target::operator=(Object::Signal::Target const&)
qarmin commented 3 years ago

Still happens with Godot 3.3.2

==41787==ERROR: AddressSanitizer: heap-use-after-free on address 0x62d00066aca8 at pc 0x000011a9fe45 bp 0x7fd0ea0277c0 sp 0x7fd0ea0277b0
READ of size 8 at 0x62d00066aca8 thread T3
    #0 0x11a9fe44 in StringName::operator=(StringName const&) core/string_name.cpp:144
    #1 0x1195e961 in Object::Signal::Target::operator=(Object::Signal::Target const&) core/object.h:445
    #2 0x1195ea4b in VMap<Object::Signal::Target, Object::Signal::Slot>::Pair::operator=(VMap<Object::Signal::Target, Object::Signal::Slot>::Pair const&) core/vmap.h:40
    #3 0x1195ee0a in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::remove(int) core/cowdata.h:168
    #4 0x11954b2f in VMap<Object::Signal::Target, Object::Signal::Slot>::erase(Object::Signal::Target const&) core/vmap.h:136
    #5 0x119394ed in Object::_disconnect(StringName const&, Object*, StringName const&, bool) core/object.cpp:1551
    #6 0x1194a4b2 in Object::~Object() core/object.cpp:1983
    #7 0x119f130a in Reference::~Reference() core/reference.cpp:104
    #8 0x11a46018 in Resource::~Resource() core/resource.cpp:394
    #9 0x38de2c8 in Texture::~Texture() scene/resources/texture.h:45
    #10 0xf51631f in CurveTexture::~CurveTexture() scene/resources/texture.cpp:1686
    #11 0x18442f6 in void memdelete<Reference>(Reference*) core/os/memory.h:115
    #12 0x1835190 in Ref<Reference>::unref() core/reference.h:258
    #13 0x119ee0b6 in RefPtr::unref() core/ref_ptr.cpp:85
    #14 0x11b3db90 in Variant::clear() core/variant.cpp:1008
    #15 0x177f24f in Variant::~Variant() core/variant.h:443
    #16 0x1cac7fe in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element::~Element() core/map.h:49
    #17 0x1cac8d0 in void memdelete_allocator<Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element, DefaultAllocator>(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/os/memory.h:127
    #18 0x1c87b72 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:496
    #19 0x1c87b66 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:495
    #20 0x1c87abf in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:494
    #21 0x1c87abf in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:494
    #22 0x1c87b66 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::_cleanup_tree(Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::Element*) core/map.h:495
    #23 0x1c6b15d in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::clear() core/map.h:656
    #24 0x1c6c399 in Map<StringName, Variant, Comparator<StringName>, DefaultAllocator>::~Map() core/map.h:674
    #25 0x7e3f8ea in RasterizerStorageGLES3::Material::~Material() drivers/gles3/rasterizer_storage_gles3.h:555
    #26 0x7e3fc14 in void memdelete<RasterizerStorageGLES3::Material>(RasterizerStorageGLES3::Material*) core/os/memory.h:115
    #27 0x7de6fb0 in RasterizerStorageGLES3::free(RID) drivers/gles3/rasterizer_storage_gles3.cpp:7720
    #28 0x10744d17 in VisualServerRaster::free(RID) servers/visual/visual_server_raster.cpp:68
    #29 0x10bb83aa in CommandQueueMT::Command1<VisualServer, void (VisualServer::*)(RID), RID>::call() core/command_queue_mt.h:300
    #30 0x1048206c in CommandQueueMT::flush_one(bool) core/command_queue_mt.h:441
    #31 0x10482a99 in CommandQueueMT::wait_and_flush_one() core/command_queue_mt.h:478
    #32 0x10926ea1 in VisualServerWrapMT::thread_loop() servers/visual/visual_server_wrap_mt.cpp:66
    #33 0x109263d9 in VisualServerWrapMT::_thread_callback(void*) servers/visual/visual_server_wrap_mt.cpp:52
    #34 0x11e847f1 in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) core/os/thread.cpp:75
    #35 0x11e88883 in void std::__invoke_impl<void, void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*>(std::__invoke_other, void (*&&)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*&&, Thread::Settings&&, void (*&&)(void*), void*&&) /usr/include/c++/10/bits/invoke.h:60
    #36 0x11e88151 in std::__invoke_result<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*>::type std::__invoke<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*>(void (*&&)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*&&, Thread::Settings&&, void (*&&)(void*), void*&&) /usr/include/c++/10/bits/invoke.h:95
    #37 0x11e87cb9 in void std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> >::_M_invoke<0ul, 1ul, 2ul, 3ul, 4ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul>) /usr/include/c++/10/thread:264
    #38 0x11e87950 in std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> >::operator()() /usr/include/c++/10/thread:271
    #39 0x11e87908 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> > >::_M_run() /usr/include/c++/10/thread:215
    #40 0x12f072e3 in execute_native_thread_routine (/usr/bin/godots+0x12f072e3)
    #41 0x7fd10f8f444f in start_thread nptl/pthread_create.c:473
    #42 0x7fd10ed4dd52 in clone (/lib/x86_64-linux-gnu/libc.so.6+0x117d52)

0x62d00066aca8 is located 10408 bytes inside of 32784-byte region [0x62d000668400,0x62d000670410)
freed by thread T0 here:
    #0 0x7fd10fbdbff8 in __interceptor_realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:164
    #1 0x11e6da5d in Memory::realloc_static(void*, unsigned long, bool) core/os/memory.cpp:129
    #2 0x1196e260 in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::resize(int) core/cowdata.h:293
    #3 0x1196d99d in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::insert(int, VMap<Object::Signal::Target, Object::Signal::Slot>::Pair const&) core/cowdata.h:176
    #4 0x1195e6f6 in VMap<Object::Signal::Target, Object::Signal::Slot>::insert(Object::Signal::Target const&, Object::Signal::Slot const&) core/vmap.h:123
    #5 0x119548bf in VMap<Object::Signal::Target, Object::Signal::Slot>::operator[](Object::Signal::Target const&) core/vmap.h:186
    #6 0x11935c02 in Object::connect(StringName const&, Object*, StringName const&, Vector<Variant> const&, unsigned int) core/object.cpp:1495
    #7 0xf5132b9 in CurveTexture::set_curve(Ref<Curve>) scene/resources/texture.cpp:1637
    #8 0xf5b2d5c in MethodBind1<Ref<Curve> >::call(Object*, Variant const**, int, Variant::CallError&) core/method_bind.gen.inc:775
    #9 0x11922575 in Object::call(StringName const&, Variant const**, int, Variant::CallError&) core/object.cpp:918
    #10 0x11baa56d in Variant::call_ptr(StringName const&, Variant const**, int, Variant*, Variant::CallError&) core/variant_call.cpp:1173
    #11 0x1df85f9 in GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Variant::CallError&, GDScriptFunction::CallState*) modules/gdscript/gdscript_function.cpp:1034
    #12 0x1c290f4 in GDScriptInstance::call_multilevel(StringName const&, Variant const**, int) modules/gdscript/gdscript.cpp:1166
    #13 0xc2f4ddd in Node::_notification(int) scene/main/node.cpp:56
    #14 0x1ad7563 in Node::_notificationv(int, bool) scene/main/node.h:45
    #15 0x1ad99d8 in CanvasItem::_notificationv(int, bool) scene/2d/canvas_item.h:162
    #16 0xde0842e in Node2D::_notificationv(int, bool) scene/2d/node_2d.h:37
    #17 0x11922a0f in Object::notification(int, bool) core/object.cpp:927
    #18 0xc426963 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:969
    #19 0xc416ef1 in SceneTree::idle(float) scene/main/scene_tree.cpp:524
    #20 0x192fe15 in Main::iteration() main/main.cpp:2098
    #21 0x1813a44 in OS_X11::run() platform/x11/os_x11.cpp:3638
    #22 0x177ed6b in main platform/x11/godot_x11.cpp:55
    #23 0x7fd10ec5e564 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28564)

previously allocated by thread T0 here:
    #0 0x7fd10fbdbff8 in __interceptor_realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:164
    #1 0x11e6da5d in Memory::realloc_static(void*, unsigned long, bool) core/os/memory.cpp:129
    #2 0x1196e260 in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::resize(int) core/cowdata.h:293
    #3 0x1196d99d in CowData<VMap<Object::Signal::Target, Object::Signal::Slot>::Pair>::insert(int, VMap<Object::Signal::Target, Object::Signal::Slot>::Pair const&) core/cowdata.h:176
    #4 0x1195e6f6 in VMap<Object::Signal::Target, Object::Signal::Slot>::insert(Object::Signal::Target const&, Object::Signal::Slot const&) core/vmap.h:123
    #5 0x119548bf in VMap<Object::Signal::Target, Object::Signal::Slot>::operator[](Object::Signal::Target const&) core/vmap.h:186
    #6 0x11935c02 in Object::connect(StringName const&, Object*, StringName const&, Vector<Variant> const&, unsigned int) core/object.cpp:1495
    #7 0xf5132b9 in CurveTexture::set_curve(Ref<Curve>) scene/resources/texture.cpp:1637
    #8 0xf5b2d5c in MethodBind1<Ref<Curve> >::call(Object*, Variant const**, int, Variant::CallError&) core/method_bind.gen.inc:775
    #9 0x11922575 in Object::call(StringName const&, Variant const**, int, Variant::CallError&) core/object.cpp:918
    #10 0x11baa56d in Variant::call_ptr(StringName const&, Variant const**, int, Variant*, Variant::CallError&) core/variant_call.cpp:1173
    #11 0x1df85f9 in GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Variant::CallError&, GDScriptFunction::CallState*) modules/gdscript/gdscript_function.cpp:1034
    #12 0x1c290f4 in GDScriptInstance::call_multilevel(StringName const&, Variant const**, int) modules/gdscript/gdscript.cpp:1166
    #13 0xc2f4ddd in Node::_notification(int) scene/main/node.cpp:56
    #14 0x1ad7563 in Node::_notificationv(int, bool) scene/main/node.h:45
    #15 0x1ad99d8 in CanvasItem::_notificationv(int, bool) scene/2d/canvas_item.h:162
    #16 0xde0842e in Node2D::_notificationv(int, bool) scene/2d/node_2d.h:37
    #17 0x11922a0f in Object::notification(int, bool) core/object.cpp:927
    #18 0xc426963 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:969
    #19 0xc416ef1 in SceneTree::idle(float) scene/main/scene_tree.cpp:524
    #20 0x192fe15 in Main::iteration() main/main.cpp:2098
    #21 0x1813a44 in OS_X11::run() platform/x11/os_x11.cpp:3638
    #22 0x177ed6b in main platform/x11/godot_x11.cpp:55
    #23 0x7fd10ec5e564 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28564)

Thread T3 created by T0 here:
    #0 0x7fd10fb7f6d5 in __interceptor_pthread_create ../../../../src/libsanitizer/asan/asan_interceptors.cpp:216
    #1 0x12f075a8 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/bin/godots+0x12f075a8)
    #2 0x11e84ce0 in Thread::start(void (*)(void*), void*, Thread::Settings const&) core/os/thread.cpp:91
    #3 0x109286eb in VisualServerWrapMT::init() servers/visual/visual_server_wrap_mt.cpp:99
    #4 0x179fc49 in OS_X11::initialize(OS::VideoMode const&, int, int) platform/x11/os_x11.cpp:595
    #5 0x191073c in Main::setup2(unsigned long) main/main.cpp:1270
    #6 0x190b20e in Main::setup(char const*, int, char**, bool) main/main.cpp:1202
    #7 0x177ec70 in main platform/x11/godot_x11.cpp:48
    #8 0x7fd10ec5e564 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28564)