alinaliBQ opened a new issue, #48270:
URL: https://github.com/apache/arrow/issues/48270
### Describe the enhancement requested
Add the unloading support for Arrow Libraries Used by Flight SQL ODBC in
MSVC platforms. These libraries are:
- Arrow Compute
- Arrow Flight
- Arrow Flight SQL
Currently, we are seeing segmentation fault errors occurring during the
unload of Arrow.DLL, it is due to the Arrow Compute library.
Log:
```
> arrow.dll!std::_Ref_count_base::_Decref() Line 1160 C++
arrow.dll!std::_Ptr_base<arrow::compute::Function>::_Decref() Line 1385
C++
arrow.dll!std::shared_ptr<arrow::compute::Function>::~shared_ptr<arrow::compute::Function>()
Line 1690 C++
arrow.dll!std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>::~pair<std::string const
,std::shared_ptr<arrow::compute::Function>>() C++
arrow.dll!std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>::`scalar deleting
destructor'(unsigned int) C++
arrow.dll!std::destroy_at<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>>(std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>> * const _Location) Line 337 C++
arrow.dll!std::_Default_allocator_traits<std::allocator<std::_List_node<std::pair<std::string
const ,std::shared_ptr<arrow::compute::Function>>,void
*>>>::destroy<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>>(std::allocator<std::_List_node<std::pair<std::string
const ,std::shared_ptr<arrow::compute::Function>>,void *>> & __formal,
std::pair<std::string const ,std::shared_ptr<arrow::compute::Function>> * const
_Ptr) Line 739 C++
arrow.dll!std::_List_node<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,void
*>::_Freenode<std::allocator<std::_List_node<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,void
*>>>(std::allocator<std::_List_node<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,void *>> & _Al,
std::_List_node<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,void *> * _Ptr) Line 318 C++
arrow.dll!std::_List_node<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,void
*>::_Free_non_head<std::allocator<std::_List_node<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,void
*>>>(std::allocator<std::_List_node<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,void *>> & _Al,
std::_List_node<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,void *> * _Head) Line 329 C++
arrow.dll!std::list<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,std::allocator<std::pair<std::string
const ,std::shared_ptr<arrow::compute::Function>>>>::_Tidy() Line 1519 C++
arrow.dll!std::list<std::pair<std::string const
,std::shared_ptr<arrow::compute::Function>>,std::allocator<std::pair<std::string
const
,std::shared_ptr<arrow::compute::Function>>>>::~list<std::pair<std::string
const
,std::shared_ptr<arrow::compute::Function>>,std::allocator<std::pair<std::string
const ,std::shared_ptr<arrow::compute::Function>>>>() Line 1063 C++
arrow.dll!std::_Hash<std::_Umap_traits<std::string,std::shared_ptr<arrow::compute::Function>,std::_Uhash_compare<std::string,std::hash<std::string>,std::equal_to<std::string>>,std::allocator<std::pair<std::string
const
,std::shared_ptr<arrow::compute::Function>>>,0>>::~_Hash<std::_Umap_traits<std::string,std::shared_ptr<arrow::compute::Function>,std::_Uhash_compare<std::string,std::hash<std::string>,std::equal_to<std::string>>,std::allocator<std::pair<std::string
const ,std::shared_ptr<arrow::compute::Function>>>,0>>() C++
arrow.dll!std::unordered_map<std::string,std::shared_ptr<arrow::compute::Function>,std::hash<std::string>,std::equal_to<std::string>,std::allocator<std::pair<std::string
const
,std::shared_ptr<arrow::compute::Function>>>>::~unordered_map<std::string,std::shared_ptr<arrow::compute::Function>,std::hash<std::string>,std::equal_to<std::string>,std::allocator<std::pair<std::string
const ,std::shared_ptr<arrow::compute::Function>>>>() C++
arrow.dll!arrow::compute::FunctionRegistry::FunctionRegistryImpl::~FunctionRegistryImpl()
Line 40 C++
arrow.dll!arrow::compute::FunctionRegistry::FunctionRegistryImpl::`scalar
deleting destructor'(unsigned int) C++
arrow.dll!std::default_delete<arrow::compute::FunctionRegistry::FunctionRegistryImpl>::operator()(arrow::compute::FunctionRegistry::FunctionRegistryImpl
* _Ptr) Line 3309 C++
arrow.dll!std::unique_ptr<arrow::compute::FunctionRegistry::FunctionRegistryImpl,std::default_delete<arrow::compute::FunctionRegistry::FunctionRegistryImpl>>::~unique_ptr<arrow::compute::FunctionRegistry::FunctionRegistryImpl,std::default_delete<arrow::compute::FunctionRegistry::FunctionRegistryImpl>>()
Line 3427 C++
arrow.dll!arrow::compute::FunctionRegistry::~FunctionRegistry() Line
230 C++
arrow.dll!arrow::compute::FunctionRegistry::`scalar deleting
destructor'(unsigned int) C++
arrow.dll!std::default_delete<arrow::compute::FunctionRegistry>::operator()(arrow::compute::FunctionRegistry
* _Ptr) Line 3309 C++
arrow.dll!std::unique_ptr<arrow::compute::FunctionRegistry,std::default_delete<arrow::compute::FunctionRegistry>>::~unique_ptr<arrow::compute::FunctionRegistry,std::default_delete<arrow::compute::FunctionRegistry>>()
Line 3427 C++
arrow.dll!`arrow::compute::GetFunctionRegistry'::`2'::`dynamic atexit
destructor for 'g_registry''() C++
ucrtbased.dll!_execute_onexit_table::__l2::<lambda>() Line 206 C++
ucrtbased.dll!__crt_seh_guarded_call<int>::operator()<void
<lambda>(void),int <lambda>(void) &,void
<lambda>(void)>(__acrt_lock_and_call::__l2::void <lambda>(void) && setup,
_execute_onexit_table::__l2::int <lambda>(void) & action,
__acrt_lock_and_call::__l2::void <lambda>(void) && cleanup) Line 204 C++
ucrtbased.dll!__acrt_lock_and_call<int <lambda>(void)>(const
__acrt_lock_id lock_id, _execute_onexit_table::__l2::int <lambda>(void) &&
action) Line 983 C++
ucrtbased.dll!_execute_onexit_table(_onexit_table_t * table) Line 231
C++
arrow.dll!__scrt_dllmain_uninitialize_c() Line 398 C++
arrow.dll!dllmain_crt_process_detach(const bool is_terminating) Line
182 C++
arrow.dll!dllmain_crt_dispatch(HINSTANCE__ * const instance, const
unsigned long reason, void * const reserved) Line 220 C++
arrow.dll!dllmain_dispatch(HINSTANCE__ * const instance, const unsigned
long reason, void * const reserved) Line 293 C++
arrow.dll!_DllMainCRTStartup(HINSTANCE__ * const instance, const
unsigned long reason, void * const reserved) Line 335 C++
ntdll.dll!LdrpCallInitRoutineInternal() Unknown
ntdll.dll!LdrpCallInitRoutine() Unknown
ntdll.dll!LdrShutdownProcess() Unknown
ntdll.dll!RtlExitUserProcess() Unknown
kernel32.dll!ExitProcessImplementation() Unknown
ucrtbased.dll!exit_or_terminate_process(const unsigned int return_code,
bool should_call_terminate_proc) Line 142 C++
ucrtbased.dll!common_exit(const int return_code, const
_crt_exit_cleanup_mode cleanup_mode, const _crt_exit_return_mode return_mode)
Line 288 C++
ucrtbased.dll!exit(int return_code) Line 302 C++
arrow-flight-sql-odbc-test.exe!__scrt_common_main_seh() Line 295
C++
arrow-flight-sql-odbc-test.exe!__scrt_common_main() Line 331 C++
arrow-flight-sql-odbc-test.exe!mainCRTStartup(void * __formal) Line 17
C++
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
```
### Component(s)
FlightRPC, C++
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]