Open qarmin opened 1 year ago
I confirm this issue on master (9bd7ad5).
Oups, wrong issue.
I tried to see if #70760 would fix it, but the thing is, I can't reproduce it even in the betas. Could you check this for me?
This took me some time, but I was able to reproduce it
==325900==ERROR: AddressSanitizer: heap-use-after-free on address 0x616000e9da08 at pc 0x000006c238b7 bp 0x7f4f1923b650 sp 0x7f4f1923b640
READ of size 4 at 0x616000e9da08 thread T233
#0 0x6c238b6 in Gradient::get_color_at_offset(float) scene/resources/gradient.h:116
#1 0x6c1bfe7 in NoiseTexture2D::_modulate_with_gradient(Ref<Image>, Ref<Gradient>) modules/noise/noise_texture_2d.cpp:185
#2 0x6c1afcb in NoiseTexture2D::_generate_texture() modules/noise/noise_texture_2d.cpp:164
#3 0x6c192e1 in NoiseTexture2D::_thread_function(void*) modules/noise/noise_texture_2d.cpp:136
#4 0x1beb1ccf in Thread::callback(Thread*, Thread::Settings const&, void (*)(void*), void*) core/os/thread.cpp:65
#5 0x1beb5c6d 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++/12/bits/invoke.h:61
#6 0x1beb587f 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++/12/bits/invoke.h:96
#7 0x1beb52ef 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++/12/bits/std_thread.h:252
#8 0x1beb4f49 in std::thread::_Invoker<std::tuple<void (*)(Thread*, Thread::Settings const&, void (*)(void*), void*), Thread*, Thread::Settings, void (*)(void*), void*> >::operator()() /usr/include/c++/12/bits/std_thread.h:259
#9 0x1beb4efd 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++/12/bits/std_thread.h:210
#10 0x1f193082 in execute_native_thread_routine (/home/rafal/Downloads/godot-grid-ient/bin/godot.linuxbsd.editor.dev.x86_64.san+0x1f193082)
#11 0x7f4f8d490401 in start_thread nptl/pthread_create.c:442
#12 0x7f4f8d51f58f in clone3 ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
0x616000e9da08 is located 136 bytes inside of 528-byte region [0x616000e9d980,0x616000e9db90)
freed by thread T0 here:
#0 0x7f4f8e0be720 in __interceptor_realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:85
#1 0x1be9fdbd in Memory::realloc_static(void*, unsigned long, bool) core/os/memory.cpp:129
#2 0x15f475cf in Error CowData<Gradient::Point>::resize<false>(int) core/templates/cowdata.h:326
#3 0x15f4b58c in CowData<Gradient::Point>::remove_at(int) core/templates/cowdata.h:171
#4 0x15f465b9 in Vector<Gradient::Point>::remove_at(int) core/templates/vector.h:73
#5 0x15f3b16f in Gradient::remove_point(int) scene/resources/gradient.cpp:147
#6 0xe4ec1db in GradientEditorRect::gui_input(Ref<InputEvent> const&) editor/plugins/gradient_editor_plugin.cpp:342
#7 0x12b00500 in Control::_call_gui_input(Ref<InputEvent> const&) scene/gui/control.cpp:1727
#8 0x124a995a in Viewport::_gui_call_input(Control*, Ref<InputEvent> const&) scene/main/viewport.cpp:1331
#9 0x124b536f in Viewport::_gui_input_event(Ref<InputEvent>) scene/main/viewport.cpp:1608
#10 0x124f0ee4 in Viewport::push_input(Ref<InputEvent> const&, bool) scene/main/viewport.cpp:2801
#11 0x1267a855 in Window::_window_input(Ref<InputEvent> const&) scene/main/window.cpp:1307
#12 0x1277bf47 in void call_with_variant_args_helper<Window, Ref<InputEvent> const&, 0ul>(Window*, void (Window::*)(Ref<InputEvent> const&), Variant const**, Callable::CallError&, IndexSequence<0ul>) core/variant/binder_common.h:262
#13 0x12768310 in void call_with_variant_args<Window, Ref<InputEvent> const&>(Window*, void (Window::*)(Ref<InputEvent> const&), Variant const**, int, Callable::CallError&) core/variant/binder_common.h:376
#14 0x1274f3f7 in CallableCustomMethodPointer<Window, Ref<InputEvent> const&>::call(Variant const**, int, Variant&, Callable::CallError&) const core/object/callable_method_pointer.h:104
#15 0x1cab8f55 in Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const core/variant/callable.cpp:50
#16 0x276d005 in DisplayServerX11::_dispatch_input_event(Ref<InputEvent> const&) platform/linuxbsd/x11/display_server_x11.cpp:3307
#17 0x276c2b6 in DisplayServerX11::_dispatch_input_events(Ref<InputEvent> const&) platform/linuxbsd/x11/display_server_x11.cpp:3278
#18 0x1c8c9359 in Input::_parse_input_event_impl(Ref<InputEvent> const&, bool) core/input/input.cpp:669
#19 0x1c8d2a5a in Input::flush_buffered_events() core/input/input.cpp:891
#20 0x2795f32 in DisplayServerX11::process_events() platform/linuxbsd/x11/display_server_x11.cpp:4316
#21 0x26d1580 in OS_LinuxBSD::run() platform/linuxbsd/os_linuxbsd.cpp:874
#22 0x26aea6a in main platform/linuxbsd/godot_linuxbsd.cpp:73
#23 0x7f4f8d42350f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
previously allocated by thread T0 here:
#0 0x7f4f8e0be720 in __interceptor_realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:85
#1 0x1be9fdbd in Memory::realloc_static(void*, unsigned long, bool) core/os/memory.cpp:129
#2 0x15f46f61 in Error CowData<Gradient::Point>::resize<false>(int) core/templates/cowdata.h:296
#3 0x15f42d49 in Vector<Gradient::Point>::resize(int) core/templates/vector.h:91
#4 0x15f463aa in Vector<Gradient::Point>::push_back(Gradient::Point) core/templates/vector.h:313
#5 0x15f3ac37 in Gradient::add_point(float, Color const&) scene/resources/gradient.cpp:139
#6 0xe4ea62b in GradientEditorRect::gui_input(Ref<InputEvent> const&) editor/plugins/gradient_editor_plugin.cpp:326
#7 0x12b00500 in Control::_call_gui_input(Ref<InputEvent> const&) scene/gui/control.cpp:1727
#8 0x124a995a in Viewport::_gui_call_input(Control*, Ref<InputEvent> const&) scene/main/viewport.cpp:1331
#9 0x124b31e9 in Viewport::_gui_input_event(Ref<InputEvent>) scene/main/viewport.cpp:1564
#10 0x124f0ee4 in Viewport::push_input(Ref<InputEvent> const&, bool) scene/main/viewport.cpp:2801
#11 0x1267a855 in Window::_window_input(Ref<InputEvent> const&) scene/main/window.cpp:1307
#12 0x1277bf47 in void call_with_variant_args_helper<Window, Ref<InputEvent> const&, 0ul>(Window*, void (Window::*)(Ref<InputEvent> const&), Variant const**, Callable::CallError&, IndexSequence<0ul>) core/variant/binder_common.h:262
#13 0x12768310 in void call_with_variant_args<Window, Ref<InputEvent> const&>(Window*, void (Window::*)(Ref<InputEvent> const&), Variant const**, int, Callable::CallError&) core/variant/binder_common.h:376
#14 0x1274f3f7 in CallableCustomMethodPointer<Window, Ref<InputEvent> const&>::call(Variant const**, int, Variant&, Callable::CallError&) const core/object/callable_method_pointer.h:104
#15 0x1cab8f55 in Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const core/variant/callable.cpp:50
#16 0x276d005 in DisplayServerX11::_dispatch_input_event(Ref<InputEvent> const&) platform/linuxbsd/x11/display_server_x11.cpp:3307
#17 0x276c2b6 in DisplayServerX11::_dispatch_input_events(Ref<InputEvent> const&) platform/linuxbsd/x11/display_server_x11.cpp:3278
#18 0x1c8c9359 in Input::_parse_input_event_impl(Ref<InputEvent> const&, bool) core/input/input.cpp:669
#19 0x1c8d2a5a in Input::flush_buffered_events() core/input/input.cpp:891
#20 0x2795f32 in DisplayServerX11::process_events() platform/linuxbsd/x11/display_server_x11.cpp:4316
#21 0x26d1580 in OS_LinuxBSD::run() platform/linuxbsd/os_linuxbsd.cpp:874
#22 0x26aea6a in main platform/linuxbsd/godot_linuxbsd.cpp:73
#23 0x7f4f8d42350f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
Thread T233 created by T0 here:
#0 0x7f4f8e04af75 in __interceptor_pthread_create ../../../../src/libsanitizer/asan/asan_interceptors.cpp:207
#1 0x1f193158 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/home/rafal/Downloads/godot-grid-ient/bin/godot.linuxbsd.editor.dev.x86_64.san+0x1f193158)
#2 0x1beb21eb in Thread::start(void (*)(void*), void*, Thread::Settings const&) core/os/thread.cpp:82
#3 0x6c18ddf in NoiseTexture2D::_thread_done(Ref<Image> const&) modules/noise/noise_texture_2d.cpp:129
#4 0x6c514cb in void call_with_variant_args_helper<__UnexistingClass, Ref<Image> const&, 0ul>(__UnexistingClass*, void (__UnexistingClass::*)(Ref<Image> const&), Variant const**, Callable::CallError&, IndexSequence<0ul>) core/variant/binder_common.h:262
#5 0x6c4d2bc in void call_with_variant_args_dv<__UnexistingClass, Ref<Image> const&>(__UnexistingClass*, void (__UnexistingClass::*)(Ref<Image> const&), Variant const**, int, Callable::CallError&, Vector<Variant> const&) core/variant/binder_common.h:409
#6 0x6c471e6 in MethodBindT<Ref<Image> const&>::call(Object*, Variant const**, int, Callable::CallError&) const core/object/method_bind.h:320
#7 0x1d74c4e7 in Object::callp(StringName const&, Variant const**, int, Callable::CallError&) core/object/object.cpp:733
#8 0x1cab9b14 in Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const core/variant/callable.cpp:62
#9 0x1d7257cd in MessageQueue::_call_function(Callable const&, Variant const*, int, bool) core/object/message_queue.cpp:229
#10 0x1d72688a in MessageQueue::flush() core/object/message_queue.cpp:275
#11 0x123852c7 in SceneTree::process(double) scene/main/scene_tree.cpp:461
#12 0x28f4586 in Main::iteration() main/main.cpp:3193
#13 0x26d1713 in OS_LinuxBSD::run() platform/linuxbsd/os_linuxbsd.cpp:878
#14 0x26aea6a in main platform/linuxbsd/godot_linuxbsd.cpp:73
#15 0x7f4f8d42350f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
SUMMARY: AddressSanitizer: heap-use-after-free scene/resources/gradient.h:116 in Gradient::get_color_at_offset(float)
Unfortunately I can't reproduce this on both my Windows 11 and Linux machine. (and I played with the gradient and noise texture settings for like 5 minutes straight)
Godot version
4.0.beta.custom_build. f3e6750a7
System information
Ubuntu 22.04 - Radeon RX 570, Gnome shell 42 X11
Issue description
Steps to reproduce
https://user-images.githubusercontent.com/41945903/205903226-4b0786ee-40b6-4149-96fd-5d968fbc28a8.mp4
Minimal reproduction project
N/A