microsoft / microsoft/mimalloc

Crash on Windows Server 2019 using Mimalloc v2.0.6

Aperta
#623 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
C
Stelle
13.4k
Fork
1.2k
Merge medio
4g 45m
PR unite (30g)
13

Descrizione

Hello!
We recently started testing mimalloc v2.0.6 in our project and ran into an issue on Windows Server 2019. However, we don't have any issues on Win10/11. On startup we have a crash:

Faulting application name: launcher.exe, version: 0.0.0.0, time stamp: 0x632c2d38
Faulting module name: ucrtbase.dll, version: 10.0.17763.719, time stamp: 0x48ac8393
Exception code: 0xc0000409
Fault offset: 0x000000000006e77e
Faulting process id: 0xebc
Faulting application start time: 0x01d8ce7793646e97
Faulting application path: D:\bin\launcher.exe
Faulting module path: C:\windows\System32\ucrtbase.dll
Report Id: d62340f4-1b35-4f85-a29b-34ed8fccdff8
Faulting package full name:
Faulting package-relative application ID:

image

Here is a callstack:

ntdll.dll!RtlReportFatalFailure() Unknown
ntdll.dll!RtlReportCriticalFailure() Unknown
ntdll.dll!RtlpHeapHandleError() Unknown
ntdll.dll!RtlpHpHeapHandleError() Unknown
ntdll.dll!RtlpLogHeapFailure() Unknown
ntdll.dll!RtlFreeHeap() Unknown
ucrtbase.dll!_free_base() Unknown
[Inline Frame] rttr_core.dll!std::_Deallocate(void * _Ptr, unsigned _int64 Bytes) Line 255 C++
[Inline Frame] rttr_core.dll!std::allocator::deallocate(unsigned int * const) Line 830 C++
[Inline Frame] rttr_core.dll!std::vector<unsigned int,std::allocator>::Tidy() Line 1893 C++
[Inline Frame] rttr_core.dll!std::vector<unsigned int,std::allocator>::{dtor}() Line 791 C++
[Inline Frame] rttr_core.dll!std::Vb_val<std::allocator>::{dtor}() Line 2658 C++
[Inline Frame] rttr_core.dll!std::vector<bool,std::allocator>::{dtor}() Line 2837 C++
rttr_core.dll!rttr::detail::constructor_wrapper_base::create_signature_string() Line 95 C++
rttr_core.dll!rttr::detail::constructor_wrapper_base::init() Line 58 C++
[Inline Frame] core.dll!rttr::detail::constructor_wrapper<engine::math::vec2,rttr::detail::class_ctor,0,rttr::detail::as_object,0,rttr::detail::default_args<>,rttr::detail::parameter_infos<rttr::detail::parameter_info_wrapper<float,0,rttr::detail::no_param_name,void>,rttr::detail::parameter_info_wrapper<float,1,rttr::detail::no_param_name,void>>,rttr::type_list<>,float,float>::{ctor}(std::arrayrttr::detail::metadata,0) Line 88 C++
[Inline Frame] core.dll!rttr::detail::make_unique(std::arrayrttr::detail::metadata,0 &&) Line 276 C++
core.dll!rttr::registration::bind<rttr::detail::ctor,engine::math::vec2,rttr::detail::public_access,rttr::type_list<>,float,float>::create_constructor_wrapper<rttr::detail::as_object,0,rttr::detail::parameter_info_wrapper<float,0,rttr::detail::no_param_name,void>,rttr::detail::parameter_info_wrapper<float,1,rttr::detail::no_param_name,void>>(std::arrayrttr::detail::metadata,0 metadata_list, rttr::detail::default_args<> def_args, rttr::detail::parameter_infos<rttr::detail::parameter_info_wrapper<float,0,rttr::detail::no_param_name,void>,rttr::detail::parameter_info_wrapper<float,1,rttr::detail::no_param_name,void>> param_infos) Line 133 C++
[Inline Frame] core.dll!rttr::registration::bind<rttr::detail::ctor,engine::math::vec2,rttr::detail::public_access,rttr::type_list<>,float,float>::operator()(const rttr::detail::as_object &) Line 202 C++
core.dll!engine::rttr_auto_register_reflection_function
() Line 106 C++
ucrtbase.dll!initterm() Unknown
core.dll!dllmain_crt_process_attach(HINSTANCE
* const instance, void * const reserved) Line 66 C++
core.dll!dllmain_dispatch(HINSTANCE
* const instance, const unsigned long reason, void * const reserved) Line 276 C++
ntdll.dll!LdrpCallInitRoutine() Unknown
ntdll.dll!LdrpInitializeNode() Unknown
ntdll.dll!LdrpInitializeGraphRecurse() Unknown
ntdll.dll!LdrpInitializeGraphRecurse() Unknown
ntdll.dll!LdrpInitializeGraphRecurse() Unknown
ntdll.dll!LdrpInitializeGraphRecurse() Unknown
ntdll.dll!LdrpInitializeGraphRecurse() Unknown
ntdll.dll!LdrpInitializeProcess() Unknown
ntdll.dll!_LdrpInitialize() Unknown
ntdll.dll!LdrpInitialize() Unknown
ntdll.dll!LdrInitializeThunk() Unknown

I have already tried the fixes suggested in https://github.com/microsoft/mimalloc/issues/521 and in https://github.com/microsoft/mimalloc/issues/103. Such as link directly with mimalloc-redirect.lib and use /INCLUDE:mi_redirect_enable. As well as apply minject.exe after. These steps did not help.

I think the problem is with ucrtbase.dll. We are using version 10.0.17763.719.

PS. I didn't find the source code for malloc-redirect. Could you provide it?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci l'avvio su Windows Server 2019 con mimalloc v2.0.6, quindi esamina il percorso segnalato rttr::detail::constructor_wrapper_base::create_signature_string e l'inizializzazione di core.dll intorno a dllmain_crt_process_attach. Confronta il comportamento con le correzioni di reindirizzamento di mimalloc tentate; il lavoro è completo quando sono state stabilite la causa del crash e una correzione compatibile, oppure il malloc-redirect source richiesto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
c, cpp
Ambito
operating-systems
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.