Skip to content

kaleid0sk0pe segv detected by ASAN test #232

@jaromil

Description

@jaromil

Running #153 detected this:

{
 "name":"Kaleid0sc0pe",
 "type":"filter",
 "color_model":"rgba8888",
 "num_params":"14"
},
 "parameters":[
  {"name":"origin_x","type":"double","explanation":"origin of the kaleid0sc0pe in x. default 0.5"},
  {"name":"origin_y","type":"double","explanation":"origin of the kaleid0sc0pe in y. default 0.5"},
  {"name":"segmentation","type":"double","explanation":"kaleid0sc0pe segmentation / 128, segmentations of 1, 2 or multiples of 4 work best. default 16/128"},
  {"name":"specify_source","type":"bool","explanation":"if true then source angle is read from source_segment, otherwise auto-calculated"},
  {"name":"source_segment","type":"double","explanation":"centre of source segment if specify_source is true. 0 is in +x and rotates counter clockwise"},
  {"name":"segmentation_direction","type":"double","explanation":"segmentation direction, < 1/3 is none, < 2/3 is counter clockwise, otherwise clockwise"},
  {"name":"reflect_edges","type":"bool","explanation":"if true then reflections that end up outside the source reflect back into it, otherwise the specified background colour is used."},
  {"name":"edge_threshold","type":"double","explanation":"edge threshold / 4, reflections outside the image but within this distance clamp to the edge. default 0"},
  {"name":"preferred_corner","type":"double","explanation":"preferred corner, 0 is top right, 0.25 top left, 0.5 bottom left, 0.75 bottom right"},
  {"name":"corner_search","type":"bool","explanation":"if true search clockwise for furthest corner, otherwise counter clockwise"},
  {"name":"bg_color","type":"color","explanation":"colour to use if reflection lies outside of source image and not reflecting back in. default 1,0,1"},
  {"name":"bg_alpha","type":"double","explanation":"alpha to use if reflection lies outside of source image and not reflecting back in. default 1"},
  {"name":"multithreaded","type":"bool","explanation":"set to true to enable multithreaded calculation. default true"},
  {"name":"n_threads","type":"double","explanation":"the number of threads to use, if 0 then autocalculate otherwise value * 32. default 0"}
 ]
}
Frame 0 processed
Frame 10 processed
Frame 20 processed
Frame 30 processed
Frame 40 processed
Frame 50 processed
AddressSanitizer:DEADLYSIGNAL
=================================================================
AddressSanitizer:DEADLYSIGNAL
==25044==ERROR: AddressSanitizer: SEGV on unknown address 0x7ff50b1db7f4 (pc 0x7ff10b76e415 bp 0x000000000004 sp 0x7ff1042dfab8 T551)
==25044==The signal is caused by a READ memory access.
    #0 0x7ff10b76e415  (/lib/x86_64-linux-gnu/libc.so.6+0x164415) (BuildId: def5460e3cee00bfee25b429c97bcc4853e5b3a8)
    #1 0x7ff10c2e0989 in libkaleid0sc0pe::Kaleid0sc0pe::process_block(libkaleid0sc0pe::Kaleid0sc0pe::Block*) /home/jrml/devel/frei0r/src/filter/kaleid0sc0pe/kaleid0sc0pe.cpp:447
    #2 0x7ff10c2e1b7f in void std::__invoke_impl<void, void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*>(std::__invoke_memfun_deref, void (libkaleid0sc0pe::Kaleid0sc0pe::*&&)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*&&, libkaleid0sc0pe::Kaleid0sc0pe::Block*&&) /usr/include/c++/14/bits/invoke.h:74
    #3 0x7ff10c2e1b7f in std::__invoke_result<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*>::type std::__invoke<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*>(void (libkaleid0sc0pe::Kaleid0sc0pe::*&&)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*&&, libkaleid0sc0pe::Kaleid0sc0pe::Block*&&) /usr/include/c++/14/bits/invoke.h:96
    #4 0x7ff10c2e1b7f in void std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/include/c++/14/bits/std_thread.h:301
    #5 0x7ff10c2e1b7f in std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >::operator()() /usr/include/c++/14/bits/std_thread.h:308
    #6 0x7ff10c2e1b7f in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >, void>::operator()() const /usr/include/c++/14/future:1439
    #7 0x7ff10c2e1b7f in std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter> std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >, void>&>(std::__invoke_other, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >, void>&) /usr/include/c++/14/bits/invoke.h:61
    #8 0x7ff10c2e1b7f in std::enable_if<!std::is_void<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> >::value, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> >::type std::__invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >, void>&>(std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >, void>&) /usr/include/c++/14/bits/invoke.h:138
    #9 0x7ff10c2e1b7f in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >, void> >::_M_invoke(std::_Any_data const&) /usr/include/c++/14/bits/std_function.h:291
    #10 0x7ff10c2e1dea in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/include/c++/14/bits/std_function.h:591
    #11 0x7ff10c2e1dea in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/include/c++/14/future:596
    #12 0x7ff10b6a1bc6  (/lib/x86_64-linux-gnu/libc.so.6+0x97bc6) (BuildId: def5460e3cee00bfee25b429c97bcc4853e5b3a8)
    #13 0x7ff10b6a1c38 in pthread_once (/lib/x86_64-linux-gnu/libc.so.6+0x97c38) (BuildId: def5460e3cee00bfee25b429c97bcc4853e5b3a8)
    #14 0x7ff10c2e27f3 in __gthread_once /usr/include/x86_64-linux-gnu/c++/14/bits/gthr-default.h:713
    #15 0x7ff10c2e27f3 in void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/14/mutex:916
    #16 0x7ff10c2e27f3 in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/include/c++/14/future:435
    #17 0x7ff10c2e27f3 in std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<void (libkaleid0sc0pe::Kaleid0sc0pe::*)(libkaleid0sc0pe::Kaleid0sc0pe::Block*), libkaleid0sc0pe::Kaleid0sc0pe*, libkaleid0sc0pe::Kaleid0sc0pe::Block*> >, void>::_M_run() /usr/include/c++/14/future:1781
    #18 0x7ff10b8e1223  (/lib/x86_64-linux-gnu/libstdc++.so.6+0xe1223) (BuildId: 133b71e0013695cc7832680a74edb51008c4fc4c)
    #19 0x7ff10bc5b1d5 in asan_thread_start ../../../../src/libsanitizer/asan/asan_interceptors.cpp:234
    #20 0x7ff10b69cb7a  (/lib/x86_64-linux-gnu/libc.so.6+0x92b7a) (BuildId: def5460e3cee00bfee25b429c97bcc4853e5b3a8)
    #21 0x7ff10b71a7b7  (/lib/x86_64-linux-gnu/libc.so.6+0x1107b7) (BuildId: def5460e3cee00bfee25b429c97bcc4853e5b3a8)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0x164415) (BuildId: def5460e3cee00bfee25b429c97bcc4853e5b3a8)
Thread T551 created by T0 here:
    #0 0x7ff10bcecae1 in pthread_create ../../../../src/libsanitizer/asan/asan_interceptors.cpp:245
    #1 0x7ff10b8e12f8 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib/x86_64-linux-gnu/libstdc++.so.6+0xe12f8) (BuildId: 133b71e0013695cc7832680a74edb51008c4fc4c)
    #2 0x50b00001d25f  (<unknown module>)

==25044==ABORTING

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions