[CRT] Do not call atexit at process initialization

There is no guarantee that the underlying APIs are initialized at this point

CORE-17362
This commit is contained in:
Jérôme Gardou 2020-12-28 10:47:38 +01:00 committed by Jérôme Gardou
parent 26863538a4
commit 6c6d9bee68
2 changed files with 9 additions and 5 deletions

View file

@ -115,6 +115,10 @@ _CRTALLOC(".CRT$XCAA") _PVFV mingw_pcppinit = pre_cpp_init;
extern int _MINGW_INSTALL_DEBUG_MATHERR; extern int _MINGW_INSTALL_DEBUG_MATHERR;
#ifdef __GNUC__
extern void __do_global_dtors(void);
#endif
static int __cdecl static int __cdecl
pre_c_init (void) pre_c_init (void)
{ {
@ -211,8 +215,6 @@ int __cdecl mainCRTStartup (void)
return ret; return ret;
} }
void __call_atexit();
static static
__declspec(noinline) __declspec(noinline)
int __cdecl int __cdecl
@ -326,7 +328,11 @@ __tmainCRTStartup (void)
#endif #endif
mainret = main (argc, argv, envp); mainret = main (argc, argv, envp);
#endif #endif
__call_atexit();
#ifdef __GNUC__
__do_global_dtors();
#endif
if (!managedapp) if (!managedapp)
exit (mainret); exit (mainret);

View file

@ -43,8 +43,6 @@ __do_global_ctors (void)
{ {
__CTOR_LIST__[i] (); __CTOR_LIST__[i] ();
} }
atexit (__do_global_dtors);
} }
static int initialized = 0; static int initialized = 0;