Forum: PC-Programmierung C/C++,VS2019: sporadisch 'DLL Initialization Failed' beim Start der Applikation?


von cppbert (Gast)


Lesenswert?

ich habe hier ein C/C++-Projekt das mehrere externe DLLs verwendet u.a. 
SDL2, pdcurses, usw. Visual Studio VS2019/x64, Debug oder Release-Build

die Exe ist ein frischer Source-Build
die externen DLLs kommen per VCPKG und sind auch frisch erzeugt

die externen DLLs werden mit Libs angezogen d.h. kein direktes 
dynamisches laden durch meinen Code - das machen die Libs selbst

seit ein paar Tagen habe ich bemerkt das die Applikation teilweise nicht 
direkt started (nutzen die Applikation nicht permanent) und es sieht so 
aus als wenn das Programm schon vor der main wieder rausgekickt wird

ein Breakpoint in der main-Zeile schlägt an wenn das starten mal klappt 
ansonsten kommt eine Meldung vor der main
1
"Die Anwendung konnte nicht korrekt gestartet werden (0xc0000142).
2
Klicken Sie OK um die Anwendung zu schliessen
1
int main(int argc, char *argv[])
2
{
3
  int x = 1; <-- breakpoint 1
4
  return sdl_main(argc, argv); <-- breakpoint 2
5
}

keiner der beiden Breakpoints schlägt an wenn die Meldung kommt

im Debugger-Log steht

Das Programm "[51408] dosbox.exe" wurde mit Code -1073741502 
(0xc0000142) 'DLL Initialization Failed' beendet.

normalerweise weisst so ein Fehler auf eine fehlenden DLL hin - aber die 
sind alle da und meistens klappt das starten auch (so 5 von 10 
Versuchen) ich glaube eher das die DLL Initalisierung scheitert und 
Tippe auf die SDL2 DLL

ich habe versucht mit dem ProcMon zu erkennen an welcher DLL es genau 
liegt aber leider sind die die Image lade Events alle Successfull im Log

mein System:
  aktuelles Win10
  aktuelles VS2019
  frisch geclonter source + build (alles vorher geloescht)
  frisch vcpkg build (alles vorher geloescht)

hat jemand eine Idee/Tip/Tool wie ich erst mal rausbekomme welche DLL 
hier Probleme macht damit das weiter eingrenzen kann?

von new (Gast)


Lesenswert?

cppbert schrieb:
> VS2019

VS2022 ist draußen. Sollte zwar keinen Unterschied machen, aber wer 
Weiß?

von cppbert (Gast)


Lesenswert?

new schrieb:
> cppbert schrieb:
>> VS2019
>
> VS2022 ist draußen. Sollte zwar keinen Unterschied machen, aber wer
> Weiß?

das bringt mir nichts weil ich noch x anderen Projekte haben wo nicht 
einfach auf den brand-new Kompiler wechseln kann und die anderen 
Projekte auch keine Probleme haben

Ausprobieren werden ich den VS2022 aber auf jeden Fall mal - vielleicht 
ist Intellisense ja diesmal nicht totaler Müll mit großen Projekten :)

von c-hater (Gast)


Lesenswert?

cppbert schrieb:

> Das Programm "[51408] dosbox.exe" wurde mit Code -1073741502
> (0xc0000142) 'DLL Initialization Failed' beendet.
>
> normalerweise weisst so ein Fehler auf eine fehlenden DLL hin

Sagt welche der vielen Libs, die du offensichtlich verwendest?

Und was hat dosbox.exe damit zu schaffen?

Also irgendwie scheint mir, dass du einen zu kleinen Auschnitt der 
Realität gucken läßt...

Also: Mach's dir selber!

von cppbert (Gast)


Lesenswert?

c-hater schrieb:
> cppbert schrieb:
>
>> Das Programm "[51408] dosbox.exe" wurde mit Code -1073741502
>> (0xc0000142) 'DLL Initialization Failed' beendet.
>>
>> normalerweise weisst so ein Fehler auf eine fehlenden DLL hin
>
> Sagt welche der vielen Libs, die du offensichtlich verwendest?

libpng
sdl2
sdl2-net
libmt32emu
opusfile
fluidsynth
pdcurses
gtest

>
> Und was hat dosbox.exe damit zu schaffen?

es ist das Dosbox Staging Project das ich baue
kein anderer außer mir hat das Problem - mein Win10/VS2019 sind
frisch installiert (keine sonstige "komische" Software/Treiber)

ich baue und ändere an Dosbox schon seit Monaten ohnen Probleme
hat vor ein paar Wochen angefangen - und außer VS2019 updates und Win10 
updates ist nichts passiert auf dem System

alle anderen VS2019 Builds (andere Quellen, Programme)
laufen problemlos - auch ein VS2019 build vom Dosbox original (also aus 
dem SVN von denen)

>
> Also irgendwie scheint mir, dass du einen zu kleinen Auschnitt der
> Realität gucken läßt...
>

es gibt hier nur die einen die schreien es wäre zu viel Information und 
die anderen die schreien es wäre zu wenig Information - und dann noch 
die welche nach einem reproduzierbarem Beispiel schreien - welches ich 
hier nicht bringen kann weil nur mein System betroffen zu sein scheint

> Also: Mach's dir selber!

warum überhaupt was schreiben wenn der Post so endet?

von Programmierer (Gast)


Lesenswert?

Während die Fehlermeldung (MessageBox, ja?) angezeigt wird, betätige 
doch mal den Pausen-Knopf vom Debugger. Dann solltest du einen 
Aufruf-Stack sehen welcher eventuell anzeigt welche Library (Import-Lib) 
schuld ist.

von Heiko L. (zer0)


Lesenswert?

Es gibt oder gab zumindest mal die Option "Lazy-Loading" für DLLs. Dann 
wird die DLL erst beim Aufruf einer Funktion geladen. Evtl. kommt man 
dann mit dem VS-Debugger zur Fehlerstelle.

von cppbert (Gast)


Lesenswert?

Programmierer schrieb:
> Während die Fehlermeldung (MessageBox, ja?) angezeigt wird,
> betätige
> doch mal den Pausen-Knopf vom Debugger. Dann solltest du einen
> Aufruf-Stack sehen welcher eventuell anzeigt welche Library (Import-Lib)
> schuld ist.

das Programm wird schon vor dem Debugger-Einstieg von Windows 
rausgekickt
1
7bdc:a878 @ 448624640 - LdrpGetProcedureAddress - INFO: Locating procedure "EtwEventWriteTransfer" by name
2
7bdc:a878 @ 448624640 - LdrpGetProcedureAddress - INFO: Locating procedure "EtwEventSetInformation" by name
3
7bdc:a878 @ 448624640 - LdrpInitializeNode - INFO: Calling init routine 00007FF961E80710 for DLL "C:\Windows\System32\KERNELBASE.dll"
4
7bdc:a878 @ 448624640 - LdrpInitializeNode - ERROR: Init routine 00007FF961E80710 for DLL "C:\Windows\System32\KERNELBASE.dll" failed during DLL_PROCESS_ATTACH
5
7bdc:a878 @ 448624640 - LdrpUnloadNode - INFO: Unmapping DLL "C:\Windows\System32\KERNEL32.DLL"
6
7bdc:a878 @ 448624640 - LdrpProcessDetachNode - INFO: Uninitializing DLL "C:\Windows\System32\KERNELBASE.dll" (Init routine: 00007FF961E80710)
7
7bdc:a878 @ 448624640 - LdrpUnloadNode - INFO: Unmapping DLL "C:\Windows\System32\KERNELBASE.dll"
8
"dosbox.exe" (Win32): "C:\Windows\System32\KernelBase.dll" wurde entladen.
9
"dosbox.exe" (Win32): "C:\Windows\System32\kernel32.dll" wurde entladen.
10
7bdc:a878 @ 448624640 - LdrpLoadDllInternal - RETURN: Status: 0xc0000142
11
7bdc:a878 @ 448624640 - LdrLoadDll - RETURN: Status: 0xc0000142
12
7bdc:a878 @ 448624640 - LdrpInitializeProcess - ERROR: Loading Windows subsystem DLL "KERNEL32.DLL" failed with status 0xc0000142
13
7bdc:a878 @ 448624640 - _LdrpInitialize - ERROR: Process initialization failed with status 0xc0000142
14
7bdc:a878 @ 448624640 - LdrpInitializationFailure - ERROR: Process initialization failed with status 0xc0000142
15
Der Thread 0x1898 hat mit Code -1073741502 (0xc0000142) geendet.
16
Das Programm "[31708] dosbox.exe" wurde mit Code -1073741502 (0xc0000142) 'DLL Initialization Failed' beendet.

die letzten Zeilen mit Gflags "Show Loader Snaps" aktiviert

von cppbert (Gast)


Lesenswert?

Heiko L. schrieb:
> Es gibt oder gab zumindest mal die Option "Lazy-Loading" für DLLs.
> Dann
> wird die DLL erst beim Aufruf einer Funktion geladen. Evtl. kommt man
> dann mit dem VS-Debugger zur Fehlerstelle.

laut GFlags und WinDBG ist es eine Windows-DLL die zickt
und scheinbar ist das was sporadisches mit Security - sehr obskur
weil ich mindestens 5 andere Kunden-C++-Projekte auf dem Rechner haben 
mit bestimmt 1Mio Zeilen Code die ich seit Jahren betreue und die sich 
völlig normal verhalten

aus diese Programm hat sich bis vor ein paar Wochen völlig normal 
verhalten - daran entwickel ich nur privat am Wochenende (mit ist der 
Zeitpunkt ab dem es nicht mehr ging nicht klar aufgefallen) - auf keinem 
anderen Rechner passiert das und egal wie viel Monate ich in der git 
History zurückgehe es passiert immer noch

Dosbox SVN läuft aber ohne Probleme mit Win10 und x von den Libraries

Ich tippe auf ein Win10 Update oder so was - oder zumindest gab es ein 
grosses vor einer Weile und sind die Fehlerreports die ich dazu gefunden 
habe immer aus der Richtung kommend

von c-hater (Gast)


Lesenswert?

cppbert schrieb:

> es ist das Dosbox Staging Project das ich baue

Was darf man sich darunter vorstellen?

> kein anderer außer mir hat das Problem

Wie viele Leute bauen denn daran? Und wo kann man den Code des Projektes 
bekommen?

> es gibt hier nur die einen die schreien es wäre zu viel Information und
> die anderen die schreien es wäre zu wenig Information

Von letzteren konnte ich noch niemals etwas bemerken. In keinem 
Zusammenhang. Und wenn tatsächlich irgendwer so schreit, wird er dir 
ganz sicher nicht weiterhelfen können, also ignoriere das unwissende 
Arschloch einfach, ist doch logisch, oder?

von Heiko L. (zer0)


Lesenswert?

1
7bdc:a878 @ 448624640 - LdrpInitializeNode - ERROR: Init routine 00007FF961E80710 for DLL "C:\Windows\System32\KERNELBASE.dll" failed during DLL_PROCESS_ATTACH

Tja - bei dem Trace bin ich leider raus. "Wenden Sie sich an den 
Microsoft Support." Sorry.
Google spuckt zu "kernelbase.dll init failed" durchaus ein paar Treffer 
aus. Ich würde da echt mal das Programm von wegen "sfc /scannow" oder 
"DISM /online /cleanup-image /scanhealth" abarbeiten.

von cppbert (Gast)


Lesenswert?

c-hater schrieb:
> cppbert schrieb:
>
>> es ist das Dosbox Staging Project das ich baue
>
> Was darf man sich darunter vorstellen?

das ist ein sehr aktiver Dosbox-Fork der viele Feature direkt integriert
>
>> kein anderer außer mir hat das Problem
>
> Wie viele Leute bauen denn daran? Und wo kann man den Code des Projektes
> bekommen?

so +-10 Leute

die CI-Builds von github - mit VS2019 und msys2-gcc laufen bei mir 
problemlos (die werden genau so automatisch gebaut wie ich es lokal 
mache), Linux Builds laufen auch

nur der Selbstbau auf meinem eigenen System spinnt (denke ich) seit ein 
paar Wochen - und ich kann Monate an Changes im Git zurückgehen - wo 
auch changes von mir drin sind und es läuft trotzdem nicht

jede andere Software die ich mit VS2019 baue läuft problemlos (brauch 
ich beruflich), einschließlich der Dosbox-Original Source aus deren SVN 
(auch mit VS2019 gebaut)

https://github.com/dosbox-staging/dosbox-staging
- da ist unten ein einfaches How-To um mit vcpkg+VS2019 zu bauen

aber wie gesagt - das Problem taucht nur auf meinem System auf
auf dem System ist Win10 und VS2019 drauf - ca. 2 Monate sonst nix
der Rechner ist Neu und funktioniert sonst tadellos

>> es gibt hier nur die einen die schreien es wäre zu viel Information und
>> die anderen die schreien es wäre zu wenig Information
>
> Von letzteren konnte ich noch niemals etwas bemerken. In keinem
> Zusammenhang. Und wenn tatsächlich irgendwer so schreit, wird er dir
> ganz sicher nicht weiterhelfen können, also ignoriere das unwissende
> Arschloch einfach, ist doch logisch, oder?

so manches Antwort-Verhalten hier entzieht sich jeglicher Logik

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.