Hello, This comment is regarding installation with `apt` on ubuntu 18.04 ... `libarrow-dev/bionic,now 8.0.0-1 amd64`
I'm a bit confused about the memory pool situation: * I run with `ARROW_DEFAULT_MEMORY_POOL=system` and check that `arrow::default_memory_pool()->backend_name() == arrow::system_memory_pool()->backend_name()` * I then LD_PRELOAD a customized (*) mimalloc according to the directions at the mimalloc git repo and things like `strm->Reset(INT32_MAX);` seem not to be hitting it... I figured that is a big enough chunk to jostle it into doing something... `BufferOutputStream::Create(INT32_MAX)` is also not intercepted by mimalloc. Is the "system" pool somehow going around the typical allocation interfaces on linux? I built my own .so and linked it to the app and malloc() is getting intercepted. * `arrow::mimalloc_memory_pool(&mmmp);` does return something... but apparently not "my" mimalloc ... statically linked? * what is going on in Arrow with constructor (pre-main()) allocations? Some of this does hit my LD_PRELOADed mimalloc * any way to get symbols for the apt-installed libs or would I need to build from source to get backtrace with symbols? (for chasing down sources of allocations) * what is the C++ lib equivalent of the following from the Python code? I figure I could stop trying to understand the built-in/default allocators if I could just replace them... but this may also intersect with my question about constructors. Maybe I'd have to make sure my constructor runs first to perform the switch-a-roo before anything else tries to use the default pool? ``` namespace py { static std::mutex memory_pool_mutex; static MemoryPool* default_python_pool = nullptr; void set_default_memory_pool(MemoryPool* pool) { std::lock_guard<std::mutex> guard(memory_pool_mutex); default_python_pool = pool; } ``` (*) the mimalloc customization: the main app has a weak reference that ends up defined by the LD_PRELOAD mimalloc, where the function so-supplied allows the app to install a function pointer (back to the main app) that gets called (if defined) at various interesting points in mimalloc Thanks, John