EXE funktioniert nicht mehr - MS-Fehlermeldung

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

DelUser01

EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Hallo

Habe seit ca. 1/2 Jahr ein Problem und komme der Sache nicht auf die Spur.
Hier die Fehlermeldungen von Windows 10 Prof.:

LINK entfernt, nach Löschantrag laut DSGVO

Sachlage:
- Wenn das Programm geschlossen wird (quit) kommen manchmal die gezeigten Fehlermeldungen.
- Das Hybrid-Fenster wird noch angezeigt, das XbpCrt-Objekt ist also noch da.
- Der Fehler kommt mal selten mal häufiger vor.
- Der Fehler lässt sich nicht Reproduzieren.
- Der Fehler passiert bei mir wie bei Kunden - aber scheinbar nicht auf allen Arbeitsplätzen.
- Windows 10 Prof. aktueller Update-Stand, im Netzwerk mit Server 2003, 2008, 2012.
- Xbase++ v.2.0 jeweils aktueller Stand.
- Es wird keinerlei Error-Protokoll geschrieben.
- Mein mitgeschriebenes "Shutdown-Protokoll" zeigt dass das Programm theoretisch komplett runterfährt. (Zumindest soweit ich das mit Xbase++-Möglichkeiten protokollieren kann.)
- "Exit Procedure" und "AppExit" werden sauber durchlaufen.
- klickt man schlussendlich auf "Programm schließen" ist die Exe (und das eingefrorene Fenster) weg.

Meine bisherigen Vermutungen:
a) schlafende Threads blockieren das Beenden (sleep())
b) meine DLLs passen nicht mehr zusammen und machen beim entladen Probleme.

Hatte schon jemand so ein Problem?
Zuletzt geändert von brandelh am Mo, 11. Jun 2018 9:22, insgesamt 1-mal geändert.
Grund: LINK entfernt, nach Löschantrag laut DSGVO
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von AUGE_OHR »

hi,

eine App die am Ende abstürzt ... das kenne ich irgendwie ;-)

Frage : wo liegt die EXE ?
DelUser01 hat geschrieben:- Es wird keinerlei Error-Protokoll geschrieben.
aber wie sieht es mit dem Windows Logfile aus ?
DelUser01 hat geschrieben:Meine bisherigen Vermutungen:
a) schlafende Threads blockieren das Beenden (sleep())
b) meine DLLs passen nicht mehr zusammen und machen beim entladen Probleme.
was Thread angeht könntest du es ja prüfen

Code: Alles auswählen

   aInfo := ThreadInfo( THREADINFO_TID + ;
                        THREADINFO_SYSTHND + ;
                        THREADINFO_FUNCINFO + ;
                        THREADINFO_TOBJ )
im 5th Element steht dann "thread" oder NIL

was externe 3-PP Software angeht ist dann die Frage was du da so verwendest.

... und dann wäre da noch die Frage ob es mit Xbase++ v1.9.355 die selben Fehler gibt ?
gruss by OHR
Jimmy
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Hallo Jimmy
AUGE_OHR hat geschrieben:Frage : wo liegt die EXE ?
EXE, DLL usw. liegen alle auf C: - auch alle Temp-DBFs.
Hauptdaten (DBF und NTX) liegen auf den Netzwerklaufwerken.
AUGE_OHR hat geschrieben:aber wie sieht es mit dem Windows Logfile aus ?
hatte ich bisher vergessen zu prüfen
AUGE_OHR hat geschrieben:ThreadInfo(...)
Schreibe ich in mein Protokoll.
Manchmal sind "schlafende" Threads noch nicht beendet.
AUGE_OHR hat geschrieben:3-PP...
habe einige eingebunden
AUGE_OHR hat geschrieben:ob es mit Xbase++ v1.9.355 die selben Fehler gibt ?
kann ich nichtmehr überprüfen, alles schon länger auf v2 umgestellt...
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

WICHTIGER NACHTRAG:

Auf meinem PC ist ungefähr im gleichen Zeitraum das selbe Problem beim Schließen des Windows Internet Explorers passiert. Aber äuserst selten.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von AUGE_OHR »

DelUser01 hat geschrieben:... das selbe Problem beim Schließen des Windows Internet Explorers passiert.
hm ... die aufgeführten Ursachen sind ähnlich

https://support.microsoft.com/de-de/hel ... ed-working
Dieses Problem kann eine der folgenden Ursachen haben:

Sie verwenden möglicherweise einen veralteten oder beschädigten Grafiktreiber
Systemdateien auf Ihrem PC sind möglicherweise beschädigt oder passen mit anderen Dateien nicht zusammen
Ihr PC ist möglicherweise durch ein Virus oder andere Malware infiziert
Einige Anwendungen oder Dienste, die auf Ihrem PC ausgeführt werden, können verursachen, dass Windows Explorer nicht mehr reagiert.
gruss by OHR
Jimmy
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Hallo Jimmy
in dem Zitierten Artikel geht es um den Windows Explorer nicht um den Windows Internet Explorer 11 (Browser) der bei mir hängen geblieben ist.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von AUGE_OHR »

DelUser01 hat geschrieben:in dem Zitierten Artikel geht es um den Windows Explorer nicht um den Windows Internet Explorer 11 (Browser) der bei mir hängen geblieben ist.
uuups ... zu IE kann ich nichts sagen ... ich nutze FF.

hat da überprüfen der Threads was ergeben ?
wie sieht es den mit 3-PP Libs oder DLL / ActiveX aus ... ist da vielleicht noch was "offen"

s.h. auch http://www.xbaseforum.de/viewtopic.php?f=16&t=9613
gruss by OHR
Jimmy
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Hallo

hier die Microsoft-Fehlermeldungen aus der Ereignisanzeige von einem der letzten Abstürze. Es sind vier Einträge nacheinander zu finden. Vielleicht kann jemand damit etwas anfangen:

Ergänzung: Es sind also zwei Abstürze direkt hinterienander

1)

Code: Alles auswählen

Ebene: Fehler
Datum und Uhrzeit: 07.02.2017 11:34:54
Quelle: Application Error
Ereignis-ID / EventID: 1000
Level: 2
Task: 100

Name der fehlerhaften Anwendung: Gsg1.exe, Version: 0.0.0.0, Zeitstempel: 0x5897825a
Name des fehlerhaften Moduls: unknown, Version: 0.0.0.0, Zeitstempel: 0x00000000
Ausnahmecode: 0xc0000005
Fehleroffset: 0x00000000
ID des fehlerhaften Prozesses: 0xe20
Startzeit der fehlerhaften Anwendung: 0x01d28127debf73ad
Pfad der fehlerhaften Anwendung: C:\gs\Gsg1.exe
Pfad des fehlerhaften Moduls: unknown
Berichtskennung: 90c5d324-79a1-4ec8-9273-77a0b9e8bd79
Vollständiger Name des fehlerhaften Pakets: 
Anwendungs-ID, die relativ zum fehlerhaften Paket ist: 
2)

Code: Alles auswählen

Ebene: Information
Datum und Uhrzeit: 07.02.2017 11:35:04
Quelle: Windows Error Reporting
Ereignis-ID / EventID: 1001
Level: 4
Task: 0

Fehlerbucket 108728494506, Typ 1
Ereignisname: APPCRASH
Antwort: Nicht verfügbar
CAB-Datei-ID: 107921496001

Problemsignatur:
P1: Gsg1.exe
P2: 0.0.0.0
P3: 5897825a
P4: StackHash_594a
P5: 0.0.0.0
P6: 00000000
P7: c0000005
P8: PCH_FB_FROM_ntdll+0x0006EB8C
P9: 
P10: 

Angefügte Dateien:
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER3A72.tmp.WERInternalMetadata.xml
\\?\c:\temp\WER462A.tmp.csv
\\?\c:\temp\WER463B.tmp.txt
\\?\C:\temp\WER463B.tmp.appcompat.txt
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER4D60.tmp.dmp
\\?\C:\temp\WER51F5.tmp.WERDataCollectionFailure.txt

Diese Dateien befinden sich möglicherweise hier:
C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_Gsg1.exe_15c9aaf273c9266738f941e4db0a191f57d2f3_9e955b2c_cab_89ff6088

Analysesymbol: 
Es wird erneut nach einer Lösung gesucht: 0
Berichts-ID: 90c5d324-79a1-4ec8-9273-77a0b9e8bd79
Berichtstatus: 8
Bucket mit Hash: f0c7f8b4ede87c5b415f4a910b98e72c
3)

Code: Alles auswählen

Ebene: Fehler
Daum und Uhrzeit: 07.02.2017 11:35:04
Quelle: Application Error
Ereignis-ID / EventID: 1000
Level: 2
Task: 100

Name der fehlerhaften Anwendung: Gsg1.exe, Version: 0.0.0.0, Zeitstempel: 0x5897825a
Name des fehlerhaften Moduls: unknown, Version: 0.0.0.0, Zeitstempel: 0x00000000
Ausnahmecode: 0xc000041d
Fehleroffset: 0x65d8d4a1
ID des fehlerhaften Prozesses: 0xe20
Startzeit der fehlerhaften Anwendung: 0x01d28127debf73ad
Pfad der fehlerhaften Anwendung: C:\gs\Gsg1.exe
Pfad des fehlerhaften Moduls: unknown
Berichtskennung: b15f046f-1e5c-4b89-8b76-2d73352ee851
Vollständiger Name des fehlerhaften Pakets: 
Anwendungs-ID, die relativ zum fehlerhaften Paket ist:
4)

Code: Alles auswählen

Ebene: Information
Daum und Uhrzeit: 07.02.2017 11:35:24
Quelle: Windows Error Reporting
Ereignis-ID / EventID: 1001
Level: 4
Task: 0

Fehlerbucket 108728494737, Typ 1
Ereignisname: APPCRASH
Antwort: Nicht verfügbar
CAB-Datei-ID: 0

Problemsignatur:
P1: Gsg1.exe
P2: 0.0.0.0
P3: 5897825a
P4: StackHash_d760
P5: 0.0.0.0
P6: 00000000
P7: c000041d
P8: PCH_03_FROM_XPPRT1+0x000967F6
P9: 
P10: 

Angefügte Dateien:
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER6134.tmp.WERInternalMetadata.xml

Diese Dateien befinden sich möglicherweise hier:
C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_Gsg1.exe_f2449894fc85e3d4a16e2406fd558ea1f75db5f_9e955b2c_b383ae3b

Analysesymbol: 
Es wird erneut nach einer Lösung gesucht: 0
Berichts-ID: b15f046f-1e5c-4b89-8b76-2d73352ee851
Berichtstatus: 0
Bucket mit Hash: 6b2a1fe2455e6ab8b58ba1866ec9c812
Zuletzt geändert von DelUser01 am Di, 07. Feb 2017 13:59, insgesamt 1-mal geändert.
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Und hier noch die dazugehörigen Reports:

zu 1 + 2)
c:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_Gsg1.exe_15c9aaf273c9266738f941e4db0a191f57d2f3_9e955b2c_cab_89ff6088\Report.wer

Code: Alles auswählen

Version=1
EventType=APPCRASH
EventTime=131309372947950128
ReportType=2
Consent=1
UploadTime=131309372949981877
ReportIdentifier=0fd29f4a-ed21-11e6-9c24-38d54712d899
IntegratorReportIdentifier=90c5d324-79a1-4ec8-9273-77a0b9e8bd79
WOW64=1
NsAppName=Gsg1.exe
AppSessionGuid=00000e20-0015-0024-ad73-bfde2781d201
TargetAppId=W:0000da39a3ee5e6b4b0d3255bfef95601890afd80709!0000da39a3ee5e6b4b0d3255bfef95601890afd80709!GSG1.EXE
TargetAppVer=2017//02//05:19:51:54!0!GSG1.EXE
BootId=4294967295
Response.BucketId=f0c7f8b4ede87c5b415f4a910b98e72c
Response.BucketTable=1
Response.LegacyBucketId=108728494506
Response.type=4
Response.CabId=107921496001
Sig[0].Name=Anwendungsname
Sig[0].Value=Gsg1.exe
Sig[1].Name=Anwendungsversion
Sig[1].Value=0.0.0.0
Sig[2].Name=Anwendungszeitstempel
Sig[2].Value=5897825a
Sig[3].Name=Fehlermodulname
Sig[3].Value=StackHash_594a
Sig[4].Name=Fehlermodulversion
Sig[4].Value=0.0.0.0
Sig[5].Name=Fehlermodulzeitstempel
Sig[5].Value=00000000
Sig[6].Name=Ausnahmecode
Sig[6].Value=c0000005
Sig[7].Name=Ausnahmeoffset
Sig[7].Value=PCH_FB_FROM_ntdll+0x0006EB8C
DynamicSig[1].Name=Betriebsystemversion
DynamicSig[1].Value=10.0.14393.2.0.0.256.48
DynamicSig[2].Name=Gebietsschema-ID
DynamicSig[2].Value=1031
DynamicSig[22].Name=Zusatzinformation 1
DynamicSig[22].Value=594a
DynamicSig[23].Name=Zusatzinformation 2
DynamicSig[23].Value=594a174843473be50fd5e27f1c647890
DynamicSig[24].Name=Zusatzinformation 3
DynamicSig[24].Value=7898
DynamicSig[25].Name=Zusatzinformation 4
DynamicSig[25].Value=7898310f4d31e1a0eb5c07d4ce09ba4c
UI[2]=C:\gs\Gsg1.exe
UI[3]=Gsg1.exe funktioniert nicht mehr
UI[4]=Windows kann online nach einer Lösung für das Problem suchen.
UI[5]=Online nach einer Lösung suchen und das Programm schließen
UI[6]=Später online nach einer Lösung suchen und das Programm schließen
UI[7]=Programm schließen
LoadedModule[0]=C:\gs\Gsg1.exe
LoadedModule[1]=C:\WINDOWS\SYSTEM32\ntdll.dll
LoadedModule[2]=C:\WINDOWS\System32\KERNEL32.DLL
LoadedModule[3]=C:\WINDOWS\System32\KERNELBASE.dll
LoadedModule[4]=C:\gs\GSG1D.dll
LoadedModule[5]=C:\gs\GSLIB1A.dll
LoadedModule[6]=C:\gs\GSLIB1B.dll
LoadedModule[7]=C:\gs\XPPRT1.dll
LoadedModule[8]=C:\gs\xppsys.dll
LoadedModule[9]=C:\gs\XPPDBGC.dll
LoadedModule[10]=C:\WINDOWS\System32\ADVAPI32.dll
LoadedModule[11]=C:\WINDOWS\System32\msvcrt.dll
LoadedModule[12]=C:\WINDOWS\System32\sechost.dll
LoadedModule[13]=C:\WINDOWS\System32\RPCRT4.dll
LoadedModule[14]=C:\WINDOWS\System32\SspiCli.dll
LoadedModule[15]=C:\WINDOWS\System32\CRYPTBASE.dll
LoadedModule[16]=C:\WINDOWS\System32\bcryptPrimitives.dll
LoadedModule[17]=C:\WINDOWS\System32\CRYPT32.dll
LoadedModule[18]=C:\WINDOWS\System32\ucrtbase.dll
LoadedModule[19]=C:\WINDOWS\System32\MSASN1.dll
LoadedModule[20]=C:\WINDOWS\System32\GDI32.dll
LoadedModule[21]=C:\WINDOWS\System32\gdi32full.dll
LoadedModule[22]=C:\WINDOWS\System32\USER32.dll
LoadedModule[23]=C:\WINDOWS\System32\win32u.dll
LoadedModule[24]=C:\WINDOWS\System32\WS2_32.dll
LoadedModule[25]=C:\gs\GSLIB1C.dll
LoadedModule[26]=C:\gs\ot4xb.dll
LoadedModule[27]=C:\gs\adsutil.dll
LoadedModule[28]=C:\gs\ASCOM10.dll
LoadedModule[29]=C:\gs\ASInet10.dll
LoadedModule[30]=C:\gs\bap.dll
LoadedModule[31]=C:\WINDOWS\System32\ole32.dll
LoadedModule[32]=C:\WINDOWS\System32\combase.dll
LoadedModule[33]=C:\WINDOWS\System32\OLEAUT32.dll
LoadedModule[34]=C:\WINDOWS\System32\msvcp_win.dll
LoadedModule[35]=C:\WINDOWS\System32\SHLWAPI.dll
LoadedModule[36]=C:\gs\GSG1B.dll
LoadedModule[37]=C:\gs\GSG1C.dll
LoadedModule[38]=C:\gs\GSLIB2A.dll
LoadedModule[39]=C:\gs\GSR4.dll
LoadedModule[40]=C:\gs\XBTBase1.dll
LoadedModule[41]=C:\gs\XBTBase2.dll
LoadedModule[42]=C:\gs\XbZLib.dll
LoadedModule[43]=C:\gs\XPPUI2.dll
LoadedModule[44]=C:\gs\XPPDUI.dll
LoadedModule[45]=C:\gs\ADAC20B.dll
LoadedModule[46]=C:\gs\GSLIB1D.dll
LoadedModule[47]=C:\gs\GSG1A.dll
LoadedModule[48]=C:\gs\XbFTP.dll
LoadedModule[49]=C:\gs\ASRDBC10.dll
LoadedModule[50]=C:\WINDOWS\SYSTEM32\MPR.dll
LoadedModule[51]=C:\WINDOWS\SYSTEM32\VERSION.dll
LoadedModule[52]=C:\WINDOWS\SYSTEM32\WINSPOOL.DRV
LoadedModule[53]=C:\gs\XPPUI1.dll
LoadedModule[54]=C:\gs\XppNat.dll
LoadedModule[55]=C:\gs\som.dll
LoadedModule[56]=C:\gs\WS1LIB1.dll
LoadedModule[57]=C:\gs\XPPPDF51.dll
LoadedModule[58]=C:\WINDOWS\System32\SHELL32.dll
LoadedModule[59]=C:\WINDOWS\System32\cfgmgr32.dll
LoadedModule[60]=C:\WINDOWS\System32\windows.storage.dll
LoadedModule[61]=C:\WINDOWS\System32\powrprof.dll
LoadedModule[62]=C:\WINDOWS\System32\kernel.appcore.dll
LoadedModule[63]=C:\WINDOWS\System32\shcore.dll
LoadedModule[64]=C:\WINDOWS\System32\profapi.dll
LoadedModule[65]=C:\WINDOWS\System32\comdlg32.dll
LoadedModule[66]=C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.14393.447_none_5507ded2cb4f7f4c\COMCTL32.dll
LoadedModule[67]=C:\gs\ASCOM10C.dll
LoadedModule[68]=C:\gs\GSC3.dll
LoadedModule[69]=C:\gs\Xb2NET.dll
LoadedModule[70]=C:\gs\ADAC20C.dll
LoadedModule[71]=C:\gs\xpprt2.dll
LoadedModule[72]=C:\WINDOWS\SYSTEM32\bcrypt.dll
LoadedModule[73]=C:\gs\FRONTEND.dll
LoadedModule[74]=C:\gs\HRFCLASS.dll
LoadedModule[75]=C:\gs\xpphrfp.dll
LoadedModule[76]=C:\WINDOWS\System32\IMM32.DLL
LoadedModule[77]=C:\WINDOWS\SYSTEM32\uxtheme.dll
LoadedModule[78]=C:\WINDOWS\SYSTEM32\dwmapi.dll
LoadedModule[79]=C:\WINDOWS\SYSTEM32\SCHANNEL.DLL
LoadedModule[80]=C:\WINDOWS\SYSTEM32\Activeds.dll
LoadedModule[81]=C:\WINDOWS\SYSTEM32\adsldpc.dll
LoadedModule[82]=C:\WINDOWS\System32\WLDAP32.dll
LoadedModule[83]=C:\gs\DBFDBE.DLL
LoadedModule[84]=C:\gs\NTXDBE.DLL
LoadedModule[85]=C:\gs\DELDBE.DLL
LoadedModule[86]=C:\gs\SDFDBE.DLL
LoadedModule[87]=C:\gs\ADSDBE.DLL
LoadedModule[88]=C:\gs\ACE32.dll
LoadedModule[89]=C:\WINDOWS\SYSTEM32\WSOCK32.dll
LoadedModule[90]=C:\WINDOWS\system32\napinsp.dll
LoadedModule[91]=C:\WINDOWS\system32\pnrpnsp.dll
LoadedModule[92]=C:\WINDOWS\system32\NLAapi.dll
LoadedModule[93]=C:\WINDOWS\System32\mswsock.dll
LoadedModule[94]=C:\WINDOWS\SYSTEM32\DNSAPI.dll
LoadedModule[95]=C:\WINDOWS\System32\NSI.dll
LoadedModule[96]=C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
LoadedModule[97]=C:\WINDOWS\System32\winrnr.dll
LoadedModule[98]=C:\gs\axcws32.dll
LoadedModule[99]=C:\WINDOWS\System32\fwpuclnt.dll
LoadedModule[100]=C:\Windows\System32\rasadhlp.dll
LoadedModule[101]=C:\WINDOWS\System32\MSCTF.dll
LoadedModule[102]=C:\WINDOWS\System32\clbcatq.dll
LoadedModule[103]=C:\GS\MTAPI32.DLL
LoadedModule[104]=C:\gs\MTAI32.dll
LoadedModule[105]=C:\gs\OEModus.dll
LoadedModule[106]=C:\WINDOWS\SYSTEM32\MFC42.DLL
LoadedModule[107]=C:\WINDOWS\SYSTEM32\ODBC32.dll
LoadedModule[108]=C:\WINDOWS\SYSTEM32\DPAPI.dll
LoadedModule[109]=C:\Program Files (x86)\PFU\ScanSnap\CardMinder\CardHook.dll
LoadedModule[110]=C:\WINDOWS\SYSTEM32\OLEACC.dll
State[0].Key=Transport.DoneStage1
State[0].Value=1
File[0].CabName=WERInternalMetadata.xml
File[0].Path=WER3A72.tmp.WERInternalMetadata.xml
File[0].Flags=851971
File[0].Type=5
File[0].Original.Path=\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER3A72.tmp.WERInternalMetadata.xml
File[1].CabName=memory.csv
File[1].Path=WER462A.tmp.csv
File[1].Flags=851971
File[1].Type=5
File[1].Original.Path=\\?\c:\temp\WER462A.tmp.csv
File[2].CabName=sysinfo.txt
File[2].Path=WER463B.tmp.txt
File[2].Flags=851971
File[2].Type=5
File[2].Original.Path=\\?\c:\temp\WER463B.tmp.txt
File[3].CabName=triagedump.dmp
File[3].Path=WER4D60.tmp.dmp
File[3].Flags=539820035
File[3].Type=6
File[3].Original.Path=\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER4D60.tmp.dmp
File[4].CabName=WERDataCollectionFailure.txt
File[4].Path=WER51F5.tmp.WERDataCollectionFailure.txt
File[4].Flags=851971
File[4].Type=5
File[4].Original.Path=\\?\C:\temp\WER51F5.tmp.WERDataCollectionFailure.txt
File[5].CabName=Report.cab
File[5].Path=Report.cab
File[5].Flags=196608
File[5].Type=11
File[5].Original.Path=\\?\C:\WINDOWS\system32\Report.cab
FriendlyEventName=Nicht mehr funktionsfähig
ConsentKey=APPCRASH
AppName=Gsg1.exe
AppPath=C:\gs\Gsg1.exe
NsPartner=windows
NsGroup=windows8
ApplicationIdentity=AD8A4FB9B82F703FDA50B579E3AE1F61
MetadataHash=-1710132703
zu 3 + 4)
c:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_Gsg1.exe_f2449894fc85e3d4a16e2406fd558ea1f75db5f_9e955b2c_b383ae3b\Report.wer

Code: Alles auswählen

Version=1
EventType=APPCRASH
EventTime=131309373048428480
ReportType=2
Consent=1
UploadTime=131309373049209780
ReportIdentifier=15de1a0e-ed21-11e6-9c24-38d54712d899
IntegratorReportIdentifier=b15f046f-1e5c-4b89-8b76-2d73352ee851
WOW64=1
NsAppName=Gsg1.exe
AppSessionGuid=00000e20-0015-0024-ad73-bfde2781d201
TargetAppId=W:0000da39a3ee5e6b4b0d3255bfef95601890afd80709!0000da39a3ee5e6b4b0d3255bfef95601890afd80709!GSG1.EXE
TargetAppVer=2017//02//05:19:51:54!0!GSG1.EXE
BootId=4294967295
Response.BucketId=6b2a1fe2455e6ab8b58ba1866ec9c812
Response.BucketTable=1
Response.LegacyBucketId=108728494737
Response.type=4
Sig[0].Name=Anwendungsname
Sig[0].Value=Gsg1.exe
Sig[1].Name=Anwendungsversion
Sig[1].Value=0.0.0.0
Sig[2].Name=Anwendungszeitstempel
Sig[2].Value=5897825a
Sig[3].Name=Fehlermodulname
Sig[3].Value=StackHash_d760
Sig[4].Name=Fehlermodulversion
Sig[4].Value=0.0.0.0
Sig[5].Name=Fehlermodulzeitstempel
Sig[5].Value=00000000
Sig[6].Name=Ausnahmecode
Sig[6].Value=c000041d
Sig[7].Name=Ausnahmeoffset
Sig[7].Value=PCH_03_FROM_XPPRT1+0x000967F6
DynamicSig[1].Name=Betriebsystemversion
DynamicSig[1].Value=10.0.14393.2.0.0.256.48
DynamicSig[2].Name=Gebietsschema-ID
DynamicSig[2].Value=1031
DynamicSig[22].Name=Zusatzinformation 1
DynamicSig[22].Value=d760
DynamicSig[23].Name=Zusatzinformation 2
DynamicSig[23].Value=d760e20ab98fb93a9abbc630cf8b9e7d
DynamicSig[24].Name=Zusatzinformation 3
DynamicSig[24].Value=ab76
DynamicSig[25].Name=Zusatzinformation 4
DynamicSig[25].Value=ab761a901faf326d434b4a0c0a289dd6
UI[2]=C:\gs\Gsg1.exe
UI[3]=Gsg1.exe funktioniert nicht mehr
UI[4]=Windows kann online nach einer Lösung für das Problem suchen.
UI[5]=Online nach einer Lösung suchen und das Programm schließen
UI[6]=Später online nach einer Lösung suchen und das Programm schließen
UI[7]=Programm schließen
LoadedModule[0]=C:\gs\Gsg1.exe
LoadedModule[1]=C:\WINDOWS\SYSTEM32\ntdll.dll
LoadedModule[2]=C:\WINDOWS\System32\KERNEL32.DLL
LoadedModule[3]=C:\WINDOWS\System32\KERNELBASE.dll
LoadedModule[4]=C:\gs\GSG1D.dll
LoadedModule[5]=C:\gs\GSLIB1A.dll
LoadedModule[6]=C:\gs\GSLIB1B.dll
LoadedModule[7]=C:\gs\XPPRT1.dll
LoadedModule[8]=C:\gs\xppsys.dll
LoadedModule[9]=C:\gs\XPPDBGC.dll
LoadedModule[10]=C:\WINDOWS\System32\ADVAPI32.dll
LoadedModule[11]=C:\WINDOWS\System32\msvcrt.dll
LoadedModule[12]=C:\WINDOWS\System32\sechost.dll
LoadedModule[13]=C:\WINDOWS\System32\RPCRT4.dll
LoadedModule[14]=C:\WINDOWS\System32\SspiCli.dll
LoadedModule[15]=C:\WINDOWS\System32\CRYPTBASE.dll
LoadedModule[16]=C:\WINDOWS\System32\bcryptPrimitives.dll
LoadedModule[17]=C:\WINDOWS\System32\CRYPT32.dll
LoadedModule[18]=C:\WINDOWS\System32\ucrtbase.dll
LoadedModule[19]=C:\WINDOWS\System32\MSASN1.dll
LoadedModule[20]=C:\WINDOWS\System32\GDI32.dll
LoadedModule[21]=C:\WINDOWS\System32\gdi32full.dll
LoadedModule[22]=C:\WINDOWS\System32\USER32.dll
LoadedModule[23]=C:\WINDOWS\System32\win32u.dll
LoadedModule[24]=C:\WINDOWS\System32\WS2_32.dll
LoadedModule[25]=C:\gs\GSLIB1C.dll
LoadedModule[26]=C:\gs\ot4xb.dll
LoadedModule[27]=C:\gs\adsutil.dll
LoadedModule[28]=C:\gs\ASCOM10.dll
LoadedModule[29]=C:\gs\ASInet10.dll
LoadedModule[30]=C:\gs\bap.dll
LoadedModule[31]=C:\WINDOWS\System32\ole32.dll
LoadedModule[32]=C:\WINDOWS\System32\combase.dll
LoadedModule[33]=C:\WINDOWS\System32\OLEAUT32.dll
LoadedModule[34]=C:\WINDOWS\System32\msvcp_win.dll
LoadedModule[35]=C:\WINDOWS\System32\SHLWAPI.dll
LoadedModule[36]=C:\gs\GSG1B.dll
LoadedModule[37]=C:\gs\GSG1C.dll
LoadedModule[38]=C:\gs\GSLIB2A.dll
LoadedModule[39]=C:\gs\GSR4.dll
LoadedModule[40]=C:\gs\XBTBase1.dll
LoadedModule[41]=C:\gs\XBTBase2.dll
LoadedModule[42]=C:\gs\XbZLib.dll
LoadedModule[43]=C:\gs\XPPUI2.dll
LoadedModule[44]=C:\gs\XPPDUI.dll
LoadedModule[45]=C:\gs\ADAC20B.dll
LoadedModule[46]=C:\gs\GSLIB1D.dll
LoadedModule[47]=C:\gs\GSG1A.dll
LoadedModule[48]=C:\gs\XbFTP.dll
LoadedModule[49]=C:\gs\ASRDBC10.dll
LoadedModule[50]=C:\WINDOWS\SYSTEM32\MPR.dll
LoadedModule[51]=C:\WINDOWS\SYSTEM32\VERSION.dll
LoadedModule[52]=C:\WINDOWS\SYSTEM32\WINSPOOL.DRV
LoadedModule[53]=C:\gs\XPPUI1.dll
LoadedModule[54]=C:\gs\XppNat.dll
LoadedModule[55]=C:\gs\som.dll
LoadedModule[56]=C:\gs\WS1LIB1.dll
LoadedModule[57]=C:\gs\XPPPDF51.dll
LoadedModule[58]=C:\WINDOWS\System32\SHELL32.dll
LoadedModule[59]=C:\WINDOWS\System32\cfgmgr32.dll
LoadedModule[60]=C:\WINDOWS\System32\windows.storage.dll
LoadedModule[61]=C:\WINDOWS\System32\powrprof.dll
LoadedModule[62]=C:\WINDOWS\System32\kernel.appcore.dll
LoadedModule[63]=C:\WINDOWS\System32\shcore.dll
LoadedModule[64]=C:\WINDOWS\System32\profapi.dll
LoadedModule[65]=C:\WINDOWS\System32\comdlg32.dll
LoadedModule[66]=C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.14393.447_none_5507ded2cb4f7f4c\COMCTL32.dll
LoadedModule[67]=C:\gs\ASCOM10C.dll
LoadedModule[68]=C:\gs\GSC3.dll
LoadedModule[69]=C:\gs\Xb2NET.dll
LoadedModule[70]=C:\gs\ADAC20C.dll
LoadedModule[71]=C:\gs\xpprt2.dll
LoadedModule[72]=C:\WINDOWS\SYSTEM32\bcrypt.dll
LoadedModule[73]=C:\gs\FRONTEND.dll
LoadedModule[74]=C:\gs\HRFCLASS.dll
LoadedModule[75]=C:\gs\xpphrfp.dll
LoadedModule[76]=C:\WINDOWS\System32\IMM32.DLL
LoadedModule[77]=C:\WINDOWS\SYSTEM32\uxtheme.dll
LoadedModule[78]=C:\WINDOWS\SYSTEM32\dwmapi.dll
LoadedModule[79]=C:\WINDOWS\SYSTEM32\SCHANNEL.DLL
LoadedModule[80]=C:\WINDOWS\SYSTEM32\Activeds.dll
LoadedModule[81]=C:\WINDOWS\SYSTEM32\adsldpc.dll
LoadedModule[82]=C:\WINDOWS\System32\WLDAP32.dll
LoadedModule[83]=C:\gs\DBFDBE.DLL
LoadedModule[84]=C:\gs\NTXDBE.DLL
LoadedModule[85]=C:\gs\DELDBE.DLL
LoadedModule[86]=C:\gs\SDFDBE.DLL
LoadedModule[87]=C:\gs\ADSDBE.DLL
LoadedModule[88]=C:\gs\ACE32.dll
LoadedModule[89]=C:\WINDOWS\SYSTEM32\WSOCK32.dll
LoadedModule[90]=C:\WINDOWS\system32\napinsp.dll
LoadedModule[91]=C:\WINDOWS\system32\pnrpnsp.dll
LoadedModule[92]=C:\WINDOWS\system32\NLAapi.dll
LoadedModule[93]=C:\WINDOWS\System32\mswsock.dll
LoadedModule[94]=C:\WINDOWS\SYSTEM32\DNSAPI.dll
LoadedModule[95]=C:\WINDOWS\System32\NSI.dll
LoadedModule[96]=C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
LoadedModule[97]=C:\WINDOWS\System32\winrnr.dll
LoadedModule[98]=C:\gs\axcws32.dll
LoadedModule[99]=C:\WINDOWS\System32\fwpuclnt.dll
LoadedModule[100]=C:\Windows\System32\rasadhlp.dll
LoadedModule[101]=C:\WINDOWS\System32\MSCTF.dll
LoadedModule[102]=C:\WINDOWS\System32\clbcatq.dll
LoadedModule[103]=C:\GS\MTAPI32.DLL
LoadedModule[104]=C:\gs\MTAI32.dll
LoadedModule[105]=C:\gs\OEModus.dll
LoadedModule[106]=C:\WINDOWS\SYSTEM32\MFC42.DLL
LoadedModule[107]=C:\WINDOWS\SYSTEM32\ODBC32.dll
LoadedModule[108]=C:\WINDOWS\SYSTEM32\DPAPI.dll
LoadedModule[109]=C:\Program Files (x86)\PFU\ScanSnap\CardMinder\CardHook.dll
LoadedModule[110]=C:\WINDOWS\SYSTEM32\OLEACC.dll
State[0].Key=Transport.DoneStage1
State[0].Value=1
FriendlyEventName=Nicht mehr funktionsfähig
ConsentKey=APPCRASH
AppName=Gsg1.exe
AppPath=C:\gs\Gsg1.exe
NsPartner=windows
NsGroup=windows8
ApplicationIdentity=AD8A4FB9B82F703FDA50B579E3AE1F61
MetadataHash=885501584
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von AUGE_OHR »

Wow ... da hast da ja etliches in deiner Xbase++ App.

du solltest die Logfiles mal an Alaska schicken ob die damit was anfangen können ... oder einen M$ Spezialisten.

was ich immer gerne bei den M$ OS() Beta Versionen gemacht habe : nach einer neuen Version "den" Fehler melden.
die Jungs vom Windows Insider Team sind ganz scharf auf Fehlermeldung ... auch wenn es sich raus stellt das es nichts mit der OS() beta Version zu tun hat.

und da wäre ich auch schon bei meiner Frage : was war das letzte was du "neu" eingebaut hast bevor das Problem auftauchte ?

einen Tip habe ich aber schon jetzt : schmeiss BAP raus wenn du ot4xb verwendest
gruss by OHR
Jimmy
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Hallo Jimmy
AUGE_OHR hat geschrieben:du solltest die Logfiles mal an Alaska schicken ob die damit was anfangen können ...
Mit dem Alaska-Support stehe ich schon einige Monate deswegen in Kontakt.
Die habe ich über dieses Thema im Forum informiert und ich hoffe, dass sie reinschauen damit ich nicht alles x-Mal schreiben muss.
AUGE_OHR hat geschrieben:was ich immer gerne bei den M$ OS() Beta Versionen gemacht habe
Eigentlich verwende ich keine Beta-Versionen - wie kommst Du darauf?
AUGE_OHR hat geschrieben:was war das letzte was du "neu" eingebaut hast bevor das Problem auftauchte ?
Wenn ich das noch genau wüßte.
Ich meine aber, dass im Hauptprozess ein weiterer Thread (CTI) dazugekommen ist. Der ist bisher in einer eigenen EXE abgelaufen - ohne Probleme. Diese EXE läuft jetzt teilwese noch zusätzlich parallel.

Anfangs war der Fehler selten, irgendwann ist er häufiger aufgetreten.

Laut meinem Protokoll werden verschiedentlich immer noch nicht alle Threads beim Programmende gestoppt. Gerade baue ich eine eigene Sleep()-Funktion. Ich habe den Verdacht, dass längere Sleep()-Phasen nicht durch ein Programmende (App herunterfahren) abgebrochen werden könnenund deshalb die Meldung "EXE reagiert nicht mehr" kommt.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von AUGE_OHR »

DelUser01 hat geschrieben:Laut meinem Protokoll werden verschiedentlich immer noch nicht alle Threads beim Programmende gestoppt.
mit Thread die noch laufen hatte ich auch so meine Probleme die zu "stoppen".

Frage : eigene Thread Class oder "nur" Aufruf in o:Start() ?

Code: Alles auswählen

   aInfo := ThreadInfo( THREADINFO_TID + ;
                        THREADINFO_SYSTHND + ;
                        THREADINFO_FUNCINFO + ;
                        THREADINFO_TOBJ )
damit kannst du zwar feststellen das noch Threads laufen ... aber wie kommt man ran ...
DelUser01 hat geschrieben:Gerade baue ich eine eigene Sleep()-Funktion. Ich habe den Verdacht, dass längere Sleep()-Phasen nicht durch ein Programmende (App herunterfahren) abgebrochen werden können und deshalb die Meldung "EXE reagiert nicht mehr" kommt.
hm ... JA ... ein langes SLEEP() hält natürlich auf ...
hm ... und was machst du an der Stelle ?

wie schon gesagt ist die Frage wie du Threads verwendet um diese zu "terminieren" ?

ich öffne z.b. MDI Fenster so per Thread

Code: Alles auswählen

   oKundThread := Thread():new()
   oKundThread:start( bBlock )
   // 4th Parameter later filled with SP_ThreadObj()
   SP_ThreadAdd( { nSeekRec, cAction, aPos, "", "KUNDEN" } )

PROCEDURE PDRdetail( oParent, oOwner, aPos, aSize, aPP, lVisible, cAction, nSeekRec, oGUIbrowse )
   ...  
   oDlg := PdrLfuDialog() :New( oParent,, aPos, aSize, aPP, lVisible )
   oDlg:Close := { || IF( oDlg:EntryChange(), lExit := oDlg:ConfirmIt(), lExit := .T. ) }
   ...  
   SP_ThreadObj( nSeekRec, cAction, oDlg, "KUNDEN" )
   ...
   DO WHILE !lExit
      nEvent := APPEVENT( @mp1, @mp2, @oXbp )
      ...

   ENDDO
   CLOSE
   oDlg:destroy()

   // delete Thread from Array
   //
   nPosi := ASCAN( aThread, { | x | x[ ID_REC ] == nSeekRec .AND. ;
                                    x[ ID_WHO ] == "KUNDEN" } )
   IF nPosi > 0
      SP_ThreadDel( nPosi )
   ENDIF

RETURN
ich habe also alle "Fenster" Objecte, welche als Thread laufen, damit unter Kontrolle.
ein CloseAllThread() schliesst nun alle Fenster und somit auch die Threads

Code: Alles auswählen

METHOD MainDialog:CloseAllThread()
LOCAL i
LOCAL aThread := SP_Thread()
LOCAL nLen    := LEN( aThread )

   FOR i := nLen TO 1 STEP - 1
      IF aThread[ i ] [ ID_OBJ ]:lIsMarked = .F.
         PostAppEvent( xbeP_Close,,, aThread[ i ] [ ID_OBJ ] )
      ENDIF
      SLEEP( 1 )
   NEXT
RETURN
wie schon gesagt hängt es ab wie du Thread verwendest aber irgendwie "sammeln" solltest du die schon.
gruss by OHR
Jimmy
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

In jedem Thread habe ich eine Methode ::CheckTermination

In der Hauptschleife des Threads ist ein Sleep() mit mehr oder weniger langen, flexiblen Wartezeiten. In der Schleife wird ::CheckTermination abgefragt.

Beim Beenden des EXE wird unter anderem ein Flag (Static) gesetzt welches in ::CheckTermination das Beenden des Threads veranlasst.

Ein zentrales Beenden der Threads hatte ich von Anfang an. Damit konnten aber die "Langschöäfer" nicht beendet werden.

Jetzt bin ich hergegangen und habe eine Sleep-Funktion für die Threads gemacht welche in kurzen Abständen ::CheckTermination abfrägt, aber erst nach Ablauf der ursprünglichen Sleep-Zeit zur Hauptschleife des Thread zurückkehrt.
Bin gerade damit fertig geworden und es scheint zu funktionieren. Zumindest die Threads welche immer wieder übrig geblieben sind wurden jetzt beendet.

Habe das gerade in den Live-Betrieb übertragen - mal sehen was die nächsten Tagen passiert (auch bei den Kunden).
Ich hoffe es wirkt - mir gehen die Ideen aus...
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Die Frage habe ich übersehen:
AUGE_OHR hat geschrieben:Frage : eigene Thread Class oder "nur" Aufruf in o:Start() ?
Jedes Thread eine eigene Class.
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Status/Ergänzung

1) Trotz der Änderung der Threads mit wesentlich kürzeren Sleep()-Phasen kommt der Fehler noch immer.

2) Laut meinem Log sind jetzt (fast) immer alle Threads zum Programmende terminiert. Und doch kommt es dazwischen vor, dass ALLE Threads noch laufen! Das Terminieren der EXE scheint also manchmal schneller abzulaufen wie das Beenden meiner Threads.

Habe aber immer noch keinen "Beweis" für einen direkten Zusammenhang von schlafenden Threads mit dem reagiert-nicht-mehr-Fehler.

Werde jetzt AppExit erweitern und dort auf das Beenden meiner Threads warten. Mal sehen...
:banghead:
Zuletzt geändert von DelUser01 am Fr, 10. Feb 2017 2:42, insgesamt 2-mal geändert.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von AUGE_OHR »

hi,
DelUser01 hat geschrieben:Jedes Thread eine eigene Class.
das ist im Grunde die beste Voraussetzung

jetzt muss ich noch mal nachfrage was passiert in den Threads ? wozu hast du da ein "langes" SLEEP() ?

bei mir sind Threads meistens "Fenster" und dafür benötige ich eine Eventloop.
wenn ich vom Bespiel \SOURCE\samples\basics\THREAD\Worms.prg ausgehe

Code: Alles auswählen

 DO WHILE !::lTerminateRequest
aus so einer Schleife "müsste" er ziemlich schnell raus kommen.
DelUser01 hat geschrieben:Habe aber immer noch keinen "Beweis" für einen direkten Zusammenhang von schlafenden Threads mit dem reagiert-nicht-mehr-Fehler.
unabhängig von den Threads hatte ich BAP und ot4xb gesehen. wenn du noch alten BAP Code hast solltest du mal sehen ob es davon nicht eine ot4xb Version gibt.
gruss by OHR
Jimmy
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

AUGE_OHR hat geschrieben:was passiert in den Threads ?
permanente Threads für:
- 3x Telefonie (CTI) über TAPI,
- 1x Fenster-Aktualisierung,
- 2x System-Prozessabfragen
- 3x Dokumentenmanagement (Verwaltung aller Dateien)
- 1x Hardcopy
Weitere Threads sind zeitlich begrenzt und (sollten) beim Programmende bereits terminiert sein.
AUGE_OHR hat geschrieben:wozu hast du da ein "langes" SLEEP() ?
In manchen Threads wird je nach Bedarf des Users die Sleep-Time länger oder kürzer.
Das ist eigentlich nur um System-Resourcen zu schonen (CPU, Netzwerk, Festplatten).
AUGE_OHR hat geschrieben:...hatte ich BAP und ot4xb gesehen. wenn du noch alten BAP Code hast solltest du mal sehen ob es davon nicht eine ot4xb Version gibt.
Möglich dass das auch ein Problem darstellt, aber insgesam funktioniert mein Programm. Ob BAP beim Beenden eine Störung verursacht...?
AUGE_OHR hat geschrieben:bei mir sind Threads meistens "Fenster" und dafür benötige ich eine Eventloop
Bei den Fenstern habe ich seit langen Jahren meinen eigenen Stil, mit den für GUI tüpischen List-Fenstern usw. arbeite ich nicht oft. Stattdessen bekommt der User bei mir ein neues vollständiges EXE-Fenster (Slave) mit allen Möglichkeiten des Haupt-EXE-Fensters (Master) direkt verlinkt miteinander (die EXE kommunizieren miteinander). Der User kann mit so vielen verlinkten Fenstern arbeiten wie er Lust hat (Master/Slave).
Am Tag werden also unzählige dieser Fenster - vollständige EXE - von einem User geöffnet und geschlossen.
Deshlab ist es unabdingbar dass das Terminieren des Programms schnell und unproblematisch funktioniert.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von AUGE_OHR »

DelUser01 hat geschrieben:
AUGE_OHR hat geschrieben:was passiert in den Threads ?
permanente Threads für:
- 3x Telefonie (CTI) über TAPI,
- 1x Fenster-Aktualisierung,
- 2x System-Prozessabfragen
- 3x Dokumentenmanagement (Verwaltung aller Dateien)
- 1x Hardcopy
Weitere Threads sind zeitlich begrenzt und (sollten) beim Programmende bereits terminiert sein.
WOW ... das sind ja eine Menge Threads.

was ich meine : auf einen "Schalter" zu regieren ist eine Sache aber Windows arbeitet mit Events.

ein SLEEP() fügt man ja ein, wie du richtig sagt, damit auch andere Resourcen bekommen.
das betrifft aber IMHO weniger den Xbase++ Code als Windows der ja auch seine Zeit braucht für Events.

angenommen du hast ein SLEEP(100), das könnte man auch so schreiben

Code: Alles auswählen

   nEvent := APPEVENT( @mp1, @mp2, @oXbp, 100 )
   DO CASE
      CASE nEvent == xbe_None
         // bei Timeout
      CASE nEvent == My_MachAllesZu
         // UserDEF Event

      OTHERWISE
         oXbp:HandleEvent( nEvent, mp1, mp2 )
   ENDCASE
er würde also genau so lange warten aber würde auch auf einen Event reagieren.

beim XbpDialog habe ich ja den o:Close Slot den ich als Event ansprechen kann.
wenn man keinen "fertigen" Event findet muss man eben sich selbst einen Event definieren. ( My_MachAllesZu )

überlege es dir mal ob du die SLEEP() so umbauen kannst um die Threads "reaktiver" zu machen.
gruss by OHR
Jimmy
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Hallo Jimmy

habe das im Augenblick so gelöst:

Code: Alles auswählen

Function GsThreadSleep( nSleepSoll , bCheckTermination , nSleepStep )
Local nCnt1
If nSleepStep == NIL
   nSleepStep := 25
EndIf
EVal( bCheckTermination )
For nCnt1 := 0 To nSleepSoll Step nSleepStep
   Sleep( nSleepStep )
   EVal( bCheckTermination )
Next nCnt1
Return( .T. )
Das mit dem von Dir vorgeschlagenen HandleEvent() könnte auch funktionieren. Das ist mir aber als Ersatz für Sleep() zu suspekt. Die möglichen "Nebenwirkungen" kann ich mir umfangreich vorstellen.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von AUGE_OHR »

hi,
DelUser01 hat geschrieben:

Code: Alles auswählen

For nCnt1 := 0 To nSleepSoll Step nSleepStep
   Sleep( nSleepStep )
   EVal( bCheckTermination )
Next nCnt1
Return( .T. )
hm ... das EVAL() bringt ihn aber auch nicht aus der Schleife ...

ich denke hier liegt ein missverständniss vor wie ich AppEvent statt SLEEP() meine

Code: Alles auswählen

#include "Appevent.ch"
#define My_MachAllesZu   xbeP_User + 1

PROCEDURE MAIN
LOCAL lExit := .F.
   DO WHILE !lExit 
      lExit := GsThreadSleep( 100 , {|| ShowTime() } )
   ENDDO
RETURN

Function GsThreadSleep( nSleepSoll , bCheckTermination )
LOCAL nEvent, mp1, mp2, oXbp
LOCAL lRet := .F.

   // er wartet hier auf einen Event
   nEvent := APPEVENT( @mp1, @mp2, @oXbp, nSleepSoll )

   DO CASE
      CASE nEvent == xbe_None
         EVal( bCheckTermination )

      CASE nEvent == My_MachAllesZu
        // UserDEF Event wir hier nie angesprochen
        lRet := .T.

      CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_ESC
        // mit /PM:PM
        lRet := .T.

      OTHERWISE
         oXbp:HandleEvent( nEvent, mp1, mp2 )
   ENDCASE

RETURN lRet

FUNCTION ShowTime()
   DispOutAt(0, MaxCol()-7, Time(), "W+/B")
RETURN NIL
bei einem APPEVENT "wartet" er bis ein Event eintrifft oder mit dem 4th Parameter ein Timeout Event gesendet wird.
Events, durch den User z.b. Maus, passieren aber nur im Vordergrund d.h. im Hintergrund kommt nur der Timeout Event "itself"

---

das Demo soll nur zeigen das er wirklich wartet da keine (Maus) Event hier eintreten können.
allerdings ist eine FUNCTION nicht angesagt wenn du ihm einen eigenen UserDEF Event (My_MachAllesZu) schicken willst den für

Code: Alles auswählen

PostAppEvent(My_MachAllesZu,,, Empfänger) 
brauchst du ja ein Object wie deine CLASS.

p.s. jedes Windows Control hat seine eigene Event Schleife
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von brandelh »

Nach der Dokumentation von Xbase++ und den Beispielen aus dem Threads Ordner braucht man sich um Xbase++ Threads selbst keine Sorgen machen.
Die werden einwandfrei beendet, natürlich kann es sein, dass eine "Aufgabe" beendet werden muss, dann muss man das berücksichtigen.
Ansonsten wird mit dem Ende der EXE jeder Thread beendet, der beendet werden kann !

Warum "hängt" ein Rechner obwohl viel schneller als früher ?

Meist weil er auf "Netzwerklaufwerke" (verschwunden, nicht vorhanden) , Serielle COM Schnittstellen oder sonstige Fremd Programme warten muss.
Eventuell auch, weil eine Endlosschleife in der event loop (des Threads) vorliegt, oder 2 Threads sich gegenseitig blocken (ähnlich Dead-Lock bei Dateien).

Falls ein Thread also sowas überwacht, muss man diesem mitteilen, dass er die externen Schnittstellen freigeben und seine Arbeit beenden soll.
Ob man dafür Signale oder Variablen nutzt ist Geschmackssache.

Es gibt ein Beispiel das einen Kaffee Automat simuliert.
Gruß
Hubert
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von Lewi »

Nach meinen Erfahren liegen die Ursachen daran, dass ein Thread sich zum Zeitpunkt einer Programmterminierung sich in einer Pause bzw. einem Wartetzstand befindet oder eine zeitintensive Aktion durchführt (z.B. Daten schreiben, etc).
Ich habe die Probleme dahingehend gelöst, dass ich die Wartezustände in Threads in eine Do-While Schleife überführe und die Sleeps in Milli-Sekundenbereich takte und eine lokale Variable bis zur gewünschten Wartezeit hochzähle. Jeder Thread hat Zugriff auf zwei globale Variablen( z.B. lExeQuite, lThreadXYZ). Sobald ein Thread abgearbeitet ist, wird lThreadXZ auf false gesetzt, ansonsten ist er true.

Bei Programmbeendigung wird lExeQuite auf true gesetzt. Es wird geprüft, ob ein lTreadXZ auf true steht und wartet dann darauf, das der Thread selbst die Variable auf false setzt. Innerhalb eines Threads erfolgt ein Abbruch wenn lExeQuite=true ist.

Das Problem von Programmlaufzeitfehlern bei Programmbeendigungen bei laufenden Threads tritt nicht nur bei Xbase++ auf sondern auch in WinDev. Nachdem ich den Programmcode entsprechend der geschilderten Weise umgestellt hatte, treten keine Fehler mehr auf.

Viele Grüße
Olaf
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Hallo Hubert

deshalb versuche ich jetzt erst einmal umfangreich den Zustand der Threads beim Programmende herauszubekommen.
Noch habe ich die Hoffnung dass der Fehler mit den Threads zusammenhängt - leider kann das auch eine Sackgasse sein und der Fehler kommt von ganz woandes...
DelUser01

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von DelUser01 »

Hallo Olaf
Lewi hat geschrieben:Ich habe die Probleme dahingehend gelöst, dass ich die Wartezustände in Threads in eine Do-While Schleife überführe und die Sleeps in Milli-Sekundenbereich takte und eine lokale Variable bis zur gewünschten Wartezeit hochzähle. Jeder Thread hat Zugriff auf zwei globale Variablen( z.B. lExeQuite, lThreadXYZ). Sobald ein Thread abgearbeitet ist, wird lThreadXZ auf false gesetzt, ansonsten ist er true.
So ähnlich laufen meine Threads inzwischen auch ab, das habe ich die letzten Tage umgestellt. Habe aber im Kern immer noch ein Sleep(10).

Zumindest gibt mir Dein Beitrag die Hoffnung, dass es sich bei meinem Fehler um das gleiche Problem handelt und die Lösung über die Bereinigung/Umstellung der Threads erreicht werden kann.

Nachdem der Fehler z.Zt. leider wieder häufig auftritt bin ich da täglich dran.
Meine Protokolle besagen, dass inzwischen eigentlich alle Threads sauber beendet werden, dann erst das EXE.
Zwei Threads scheinen aber immer wieder Probleme zu haben und gar nicht oder träge auf die Terminierungs-Anforderung reagieren. Beide haben Aufgaben welche mit Betriebssystem-Abfragen zusammenhängen (Windows-Prozesse).
Ich versuche das jetzt noch zu im Detail herauszufinden.

Das Seltsame ist, dass als der Fehler vor einigen Monaten zum ersten Mal auftrat an den Threads nichts gedreht wurde und diese schon seit Jahren laufen. Zumindest soweit ich das zurückverfolgen kann.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: EXE funktioniert nicht mehr - MS-Fehlermeldung

Beitrag von Martin Altmann »

Roland,
werden in diesen problematischen Threads irgendwelche OCX/ActiveX-Komponenten genutzt?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten