estdlib icon indicating copy to clipboard operation
estdlib copied to clipboard

Clean up dynamic_array / fixedbuf_allocator / single_allocator_base

Open malachib opened this issue 10 months ago • 0 comments

Works well enough, but code crusty and clumsy. In particular, call stack diagnostic is hellish. For example:

assert failed: estd::internal::single_allocator_base<T, TBuffer, TSize, TDiff>::handle_type estd::internal::single_allocator_base<T, TBuffer, TSize, TDiff>::reallocate(handle_type, estd::size_t) [wit


Backtrace: 0x40375d35:0x3fca7aa0 0x4037c6cd:0x3fca7ac0 0x40384809:0x3fca7ae0 0x4200b37a:0x3fca7c00 0x4200b38a:0x3fca7c20 0x4200b3b9:0x3fca7c40 0x4200b3cf:0x3fca7c60 0x4200b435:0x3fca7c80 0x4200b97a:0x3fca7ca0 0x4200ba9b:0x3fca7ce0 0x420859b7:0x3fca7d10 0x4037d165:0x3fca7d40
--- 0x40375d35: panic_abort at /home/malachi/Projects/ext/esp/idf-5.4/components/esp_system/panic.c:454
0x4037c6cd: esp_system_abort at /home/malachi/Projects/ext/esp/idf-5.4/components/esp_system/port/esp_system_chip.c:92 
0x40384809: __assert_func at /home/malachi/Projects/ext/esp/idf-5.4/components/newlib/assert.c:80                      
0x4200b37a: estd::internal::single_allocator_base<char, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short, short>::reallocate(bool, unsigned int) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/internal/fwd/../../policy/../traits/../allocators/fixed.h:182                                                                                               
0x4200b38a: estd::internal::allocator_and_handle_descriptor<estd::internal::single_fixedbuf_allocator<char, 4096u, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short>, true, true, estd::allocator_traits<estd::internal::single_fixedbuf_allocator<char, 4096u, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short> > >::reallocate(unsigned short) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/internal/fwd/../../policy/../traits/../allocators/../traits/../internal/container/../impl/handle_desc.h:257 (discriminator 2)                 
0x4200b3b9: estd::internal::dynamic_array<estd::internal::impl::dynamic_array<estd::internal::single_fixedbuf_allocator<char, 4096u, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short>, estd::experimental::null_terminated_string_policy<std::char_traits<char>, short, false> > >::reserve(unsigned short) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/internal/impl/../../internal/dynamic_array.h:377 (discriminator 1)                                                     
 (inlined by) estd::internal::dynamic_array<estd::internal::impl::dynamic_array<estd::internal::single_fixedbuf_allocator<char, 4096u, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short>, estd::experimental::null_terminated_string_policy<std::char_traits<char>, short, false> > >::ensure_total_capacity(unsigned short, unsigned short) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/internal/impl/../../internal/dynamic_array.h:141 (discriminator 1)                     
 (inlined by) estd::internal::dynamic_array<estd::internal::impl::dynamic_array<estd::internal::single_fixedbuf_allocator<char, 4096u, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short>, estd::experimental::null_terminated_string_policy<std::char_traits<char>, short, false> > >::ensure_additional_capacity(unsigned short) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/internal/impl/../../internal/dynamic_array.h:180 (discriminator 1)                                
0x4200b3cf: estd::internal::dynamic_array<estd::internal::impl::dynamic_array<estd::internal::single_fixedbuf_allocator<char, 4096u, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short>, estd::experimental::null_terminated_string_policy<std::char_traits<char>, short, false> > >::grow(unsigned short) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/internal/impl/../../internal/dynamic_array.h:400                                                                          
0x4200b435: estd::internal::dynamic_array<estd::internal::impl::dynamic_array<estd::internal::single_fixedbuf_allocator<char, 4096u, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short>, estd::experimental::null_terminated_string_policy<std::char_traits<char>, short, false> > >::append(char const*, unsigned short) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/internal/impl/../../internal/dynamic_array.h:435                                                           
0x4200b97a: estd::basic_string<char, std::char_traits<char>, estd::internal::single_fixedbuf_allocator<char, 4096u, estd::internal::uninitialized_array<char, 4096u, estd::array<char, 4096u, unsigned short> >, unsigned short>, estd::experimental::null_terminated_string_policy<std::char_traits<char>, short, false> >::append(char const*, unsigned short) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/string.h:132                                                                                                                  
 (inlined by) estd::internal::impl::out_stringbuf<estd::layer1::basic_string<char, 4096u, true, std::char_traits<char>, estd::experimental::null_terminated_string_policy<std::char_traits<char>, short, false> > >::xsputn(char const*, int) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/internal/impl/streambuf/string.h:40                                                                                       
 (inlined by) estd::internal::streambuf<estd::internal::impl::basic_stringbuf<estd::layer1::basic_string<char, 4096u, true, std::char_traits<char>, estd::experimental::null_terminated_string_policy<std::char_traits<char>, short, false> > >, void>::sputn(char const*, int) at /home/malachi/Projects/playground/playground.esp/src/PGESP-75/poc1/managed_components/malachi-iot__estd/src/estd/streambuf.h:130

malachib avatar Mar 01 '25 19:03 malachib