AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Exception mit ntdll.dll, Quelle nicht feststellbar

Exception mit ntdll.dll, Quelle nicht feststellbar

Ein Thema von berens · begonnen am 19. Nov 2013 · letzter Beitrag vom 19. Nov 2013
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
430 Beiträge
 
Delphi 2010 Professional
 
#1

Exception mit ntdll.dll, Quelle nicht feststellbar

  Alt 19. Nov 2013, 11:55
Delphi-Version: 2007
Hallo mal wieder!

Mein Projekt, dass seit Erzeugung vor einem Jahr fehlerfrei gelaufen ist, spinnt seit heute total. Nach dem Zufallsprinzip geht es -im fertigen .exe Modus- einfach kommentarlos zu, und beim Starten in Delphi kommt nach einiger Zeit folgendes Zustande:

Zitat:
---------------------------
Benachrichtigung über Debugger-Problem
---------------------------
In Projekt <ProjektExe> trat ein Problem mit folgender Meldung auf: 'access violation at 0x68746f20: read of address 0x68746f20'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK
---------------------------
Der komplette Aufruf-Stack ist voll mit:
:77050133 ntdll.KiUserExceptionDispatcher + 0xf
:7709b46b ; ntdll.dll
es steht nichts anderes im Aufruf-Stack drinnen.

Das Programm hat mehrere Threads, die unter anderem mit MAPI auf Outlook, und ADO auf eine Datenbank zugreifen. In den Threads wird mit CoInitialize etc. gearbeitet. In den Threads habe ich mir bei on E: Exception einen Haltepunkt und Logbuchausgabe gemacht, ich habe das Programm mehrmals mit (jeweils einzeln installiert) EurekaLog und MadExcept gestartet --> beide liefern bei diesem Fehler keine Untersuchungsmöglichkeit, bekommen also noch nicht mal mit, dass es hier ein Problem gibt.

Ich vermute, es gibt hier speziell bei dem Synchronize() der Threads irgendwelche Probleme, da beim Debuggen in Delphi in der "Threads-Liste" der erste Thread in der Liste (also (wohl?) der VCL/Hauptthread) mit "Fehler" steht.

Ich bin Euch schon sehr dankbar, wenn mir bei dem aktuellen Problem weiter geholfen werden kann, noch mehr interessiert mich allerdings:
-Wie kommt man selbst einem solchen Problem auf die Schliche?
-Was (zur Hölle) kann ich mit den ganzen Pointer-Adressen anfangen? Wie komm ich von der Pointer-Adresse auf eine Prozedur, ein Objekt oder sonst etwas?
-Was kann ich als Entwickler der Software mit "access violation at 0x68746f20: read of address 0x68746f20" anfangen? Wie finde ich Objekte und Variablen heraus, die auf diesen Speicherbereich verweisen?
-Ich habe mir zwar hier das Debug-Tutorial auf der Seite durchgelesen, finde dort aber keine Herangehensweise die mir hier hilt, außer im Prinzip "alles Auskommentieren und solange wieder Zeilenweise hinzufügen, bis der Fehler wieder Auftritt". Das kann bei einem riesen Projekt mit zig möglichen Threads als Auslöser ja nicht die einzige Mögliche herangehensweise sein, oder? Gerade da der Fehler sporadisch Auftritt, fällt es schwer zu sagen, ob das Problem durch auskommentieren von X-Zeilen nun gelöst ist oder nicht...

In letzter Zeit ist die Delphi-IDE wieder häufiger -beim eintippen, nicht beim ausführen- komplett mit einer ähnlichen ntdll.dll Meldung abgestürzt. Kann das was damit zu tun haben?

*** EDIT 2: Ich habe das Projekt nun doch nach Delphi 2010 migriert, dort scheint das Abfangen mit EurekaLog zu funktionieren. Ist dies das Selbe oder ein anderes Problem? Hier scheint es laut dem Log einen Deadlock oder Stacküberlauf mit dem WM_MouseMove der TSectionListBox (Komponente von TMSsoftware.com) zu geben?

Code:
EurekaLog 7.0.6.72 RC 11 

Exception:
-------------------------------------------------------------------------------------------------------------
  2.2 Address: 76F79B56
  2.5 Type  : EAccessViolation
  2.6 Message: Zugriffsverletzung bei Adresse 76F79B60 in Modul 'msvcrt.dll'. Schreiben von Adresse 00190000.
  2.7 ID    : 5BC70000
  2.11 Sent : 0

User:
-----------------
  3.2 Name : name
  3.3 Email:

Steps to reproduce:
------------
  8.1 Text:


Call Stack Information:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Methods |Details|Stack  |Address |Module       |Offset |Unit                                    |Class                        |Procedure/Method                 |Line      |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|*Exception Thread: ID=3356; Parent=0; Priority=0                                                                                                                                  |
|Class=; Name=MAIN                                                                                                                                                                |
|DeadLock=0; Wait Chain=                                                                                                                                                          |
|Comment=                                                                                                                                                                         |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03     |00000000|76F79B56|msvcrt.dll   |00009B56|msvcrt                                  |                              | (possible memcpy+582)           |           |
|00000020|04     |0018CC68|00543E1A|pCRM7.exe    |00143E1A|EExceptionManager                       |                              |InternalInfo                     |1654[11]  |
|00000020|04     |0018CC80|00543E6E|pCRM7.exe    |00143E6E|EExceptionManager                       |                              |InternalInfo                     |1658[15]  |
|00000020|04     |0018CCA4|00543F6B|pCRM7.exe    |00143F6B|EExceptionManager                       |TExceptionManager            |Info                             |1700[33]  |
|00000020|04     |0018CCD4|005442CE|pCRM7.exe    |001442CE|EExceptionManager                       |TExceptionManager            |Info                             |1789[18]  |
|00000020|04     |0018CFA8|0054438A|pCRM7.exe    |0014438A|EExceptionManager                       |TExceptionManager            |Info                             |1810[7]   |
|00000020|04     |0018CFCC|0054340C|pCRM7.exe    |0014340C|EExceptionManager                       |TExceptionManager            |Handle                           |1368[11]  |
|00000020|04     |0018CFF4|005469EE|pCRM7.exe    |001469EE|EExceptionManager                       |                              |HandleException1                  |2894[1]   |
|00000020|04     |0018D014|00427249|pCRM7.exe    |00027249|EAppType                                |                              |_ExceptionManagerHandle          |1764[2]   |
|00000020|04     |0018D028|005F01CE|pCRM7.exe    |001F01CE|EAppVCL                                 |                              |ApplicationShowExceptionHandler  |50[9]     |
|00000020|04     |0018D05C|005F0255|pCRM7.exe    |001F0255|EAppVCL                                 |                              |ApplicationShowExceptionHook     |80[17]    |
|00000020|04     |0018D06C|005B867A|pCRM7.exe    |001B867A|Forms                                   |TApplication                 |HandleException                  |9978[16]  |
|00000020|03     |0018D624|772EAFA3|KERNELBASE.dll|0000AFA3|KERNELBASE                              |                              | (possible lstrlenW+81)          |           |
|00000020|03     |0018D6C0|74216A88|comctl32.dll |00096A88|comctl32                                 |                              | (possible DrawSizeBox+4859)     |           |
|00000020|03     |0018D728|777C62F7|user32.dll   |000162F7|USER32                                   |                              | (possible gapfnScSendMessage+815)|           |
|00000020|04     |0018D854|00406812|pCRM7.exe    |00006812|System                                  |                              |_HandleFinally                   |11892[58] |
|00000020|04     |0018DA20|00406812|pCRM7.exe    |00006812|System                                  |                              |_HandleFinally                   |11892[58] |
|00000020|04     |0018DA2C|004065E2|pCRM7.exe    |000065E2|System                                  |                              |_HandleAnyException              |11332[100] |
|00000020|04     |0018DA48|0046DFCC|pCRM7.exe    |0006DFCC|Classes                                 |                              |StdWndProc                       |13015[8]  |
|00000020|03     |0018DA60|777C62F7|user32.dll   |000162F7|USER32                                   |                              | (possible gapfnScSendMessage+815)|           |
|00000020|03     |0018DA8C|777C6D35|user32.dll   |00016D35|USER32                                   |                              | (possible DefWindowProcW+672)   |           |
|00000020|03     |0018DB04|777C9659|user32.dll   |00019659|USER32                                   |                              | (possible GetWindow+1003)       |           |
|00000020|03     |0018DB48|777C96C0|user32.dll   |000196C0|USER32                                   |                              |SendMessageW                     |           |
|00000020|04     |0018DB6C|0072F0AA|pCRM7.exe    |0032F0AA|slstbox                                 |TSectionListBox              |WMMouseMove                      |2263[158] |
|00000020|04     |0018FFF0|00690063|pCRM7.exe    |00290063|DB                                      |TParam                       |SetAsMemo                        |10978[3]  |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|                                                                                                                                                                                  |
|Running Thread: ID=4536; Parent=3356; Priority=-1                                                                                                                                 |
|Class=TOutlookReloadThread; Name=[Unnamed thread] Kind: TThread. Thread function: uClasses_ThreadedOutlookContact_Connector.TOutlookReloadThread.Execute. Thread caller: uClasses_ThreadedOutlookContact_Connector.TOutlookReloadThread.Create (uClasses_ThreadedOutlookContact_Connector.TOutlookReloadThread.Execute)|
|DeadLock=0; Wait Chain=thread: [ 11B8 / 4536 ] is blocked                                                                                                                        |
|Comment=                                                                                                                                                                         |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03     |00000000|77D7F8D1|ntdll.dll    |0001F8D1|ntdll                                   |                              |ZwWaitForSingleObject            |           |
|00000020|03     |058AFC3C|7758118F|kernel32.dll |0001118F|kernel32                                 |                              |WaitForSingleObjectEx            |           |
|00000020|03     |058AFC54|77581143|kernel32.dll |00011143|kernel32                                 |                              |WaitForSingleObject              |           |
|00000020|04     |058AFC68|0046C2F6|pCRM7.exe    |0006C2F6|Classes                                 |TThread                      |Synchronize                      |11383[38] |
|00000020|04     |058AFCB8|0046C3A9|pCRM7.exe    |0006C3A9|Classes                                 |TThread                      |Synchronize                      |11412[5]  |
|00000020|04     |058AFCC4|007186C5|pCRM7.exe    |003186C5|uClasses_ThreadedOutlookContact_Connector|TOutlookReloadThread         |Execute                          |438[200]  |
|00000020|04     |058AFCD4|00718739|pCRM7.exe    |00318739|uClasses_ThreadedOutlookContact_Connector|TOutlookReloadThread         |Execute                          |442[204]  |
|00000020|04     |058AFEF8|0046BAFA|pCRM7.exe    |0006BAFA|Classes                                 |                              |ThreadProc                       |11019[8]  |
|00000020|04     |058AFF28|0051A761|pCRM7.exe    |0011A761|EThreadsManager                         |                              |NakedBeginThreadWrapper          |1282[5]   |
|00000020|04     |058AFF38|0054678C|pCRM7.exe    |0014678C|EExceptionManager                       |                              |DefaultThreadHandleException     |2763[6]   |
|00000020|04     |058AFF44|005467B2|pCRM7.exe    |001467B2|EExceptionManager                       |                              |DefaultThreadHandleException     |2765[8]   |
|00000020|04     |058AFF5C|0051B260|pCRM7.exe    |0011B260|EThreadsManager                         |                              |ThreadWrapperCT                  |1672[17]  |
|00000020|03     |058AFF8C|77583368|kernel32.dll |00013368|kernel32                                 |                              |BaseThreadInitThunk              |           |
|7FFFFFFE|04     |00000000|007175F5|pCRM7.exe    |003175F5|uClasses_ThreadedOutlookContact_Connector|TOutlookReloadThread         |Create                           |201[3]    |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|                                                                                                                                                                                  |
|Running Thread: ID=5428; Parent=3356; Priority=0                                                                                                                                  |
|Class=TLoadSaveThread; Name=[Unnamed thread] Kind: TThread. Thread function: uLoadSave.TLoadSaveThread.Execute. Thread caller: uLoadSave.TLoadSaveThread.Create (uLoadSave.TLoadSaveThread.Execute)|
|DeadLock=0; Wait Chain=thread: [ 1534 / 5428 ] is blocked                                                                                                                        |
|Comment=                                                                                                                                                                         |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03     |00000000|77D7F8D1|ntdll.dll    |0001F8D1|ntdll                                   |                              |ZwWaitForSingleObject            |           |
|00000020|03     |059AF9CC|7758118F|kernel32.dll |0001118F|kernel32                                 |                              |WaitForSingleObjectEx            |           |
|00000020|03     |059AF9E4|77581143|kernel32.dll |00011143|kernel32                                 |                              |WaitForSingleObject              |           |
|00000020|04     |059AF9F8|0046C2F6|pCRM7.exe    |0006C2F6|Classes                                 |TThread                      |Synchronize                      |11383[38] |
|00000020|04     |059AFA48|0046C3A9|pCRM7.exe    |0006C3A9|Classes                                 |TThread                      |Synchronize                      |11412[5]  |
|00000020|04     |059AFA54|00795C91|pCRM7.exe    |00395C91|uLoadSave                               |TLoadSaveThread              |Execute                          |1902[1388] |
|00000020|04     |059AFA64|00795CC4|pCRM7.exe    |00395CC4|uLoadSave                               |TLoadSaveThread              |Execute                          |1904[1390] |
|00000020|04     |059AFA70|00795CF5|pCRM7.exe    |00395CF5|uLoadSave                               |TLoadSaveThread              |Execute                          |1907[1393] |
|00000020|04     |059AFEF8|0046BAFA|pCRM7.exe    |0006BAFA|Classes                                 |                              |ThreadProc                       |11019[8]  |
|00000020|04     |059AFF28|0051A761|pCRM7.exe    |0011A761|EThreadsManager                         |                              |NakedBeginThreadWrapper          |1282[5]   |
|00000020|04     |059AFF38|0054678C|pCRM7.exe    |0014678C|EExceptionManager                       |                              |DefaultThreadHandleException     |2763[6]   |
|00000020|04     |059AFF44|005467B2|pCRM7.exe    |001467B2|EExceptionManager                       |                              |DefaultThreadHandleException     |2765[8]   |
|00000020|04     |059AFF5C|0051B260|pCRM7.exe    |0011B260|EThreadsManager                         |                              |ThreadWrapperCT                  |1672[17]  |
|00000020|03     |059AFF8C|77583368|kernel32.dll |00013368|kernel32                                 |                              |BaseThreadInitThunk              |           |
|7FFFFFFE|04     |00000000|0078FECB|pCRM7.exe    |0038FECB|uLoadSave                               |TLoadSaveThread              |Create                           |122[3]    |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|                                                                                                                                                                                  |
|Running Thread: ID=4708; Parent=3356; Priority=-1                                                                                                                                 |
|Class=TThreadedOutlookMailBoxScanner; Name=[Unnamed thread] Kind: TThread. Thread function: uClasses_ThreadedMailboxScanner.TThreadedOutlookMailBoxScanner.Execute. Thread caller: uClasses_ThreadedMailboxScanner.TThreadedOutlookMailBoxScanner.Create (uClasses_ThreadedMailboxScanner.TThreadedOutlookMailBoxScanner.Execute)|
|DeadLock=0; Wait Chain=thread: [ 1264 / 4708 ] is blocked                                                                                                                        |
|Comment=                                                                                                                                                                         |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03     |00000000|77D7FD91|ntdll.dll    |0001FD91|ntdll                                   |                              |ZwDelayExecution                 |           |
|00000020|03     |05CAFDB8|772F4493|KERNELBASE.dll|00014493|KERNELBASE                              |                              |Sleep                            |           |
|00000020|04     |05CAFDC8|0074CABC|pCRM7.exe    |0034CABC|uClasses_ThreadedMailboxScanner         |TThreadedOutlookMailBoxScanner|Execute                          |444[132]  |
|00000020|04     |05CAFDD4|0074CB05|pCRM7.exe    |0034CB05|uClasses_ThreadedMailboxScanner         |TThreadedOutlookMailBoxScanner|Execute                          |331[19]   |
|00000020|04     |05CAFEF8|0046BAFA|pCRM7.exe    |0006BAFA|Classes                                 |                              |ThreadProc                       |11019[8]  |
|00000020|04     |05CAFF28|0051A761|pCRM7.exe    |0011A761|EThreadsManager                         |                              |NakedBeginThreadWrapper          |1282[5]   |
|00000020|04     |05CAFF38|0054678C|pCRM7.exe    |0014678C|EExceptionManager                       |                              |DefaultThreadHandleException     |2763[6]   |
|00000020|04     |05CAFF44|005467B2|pCRM7.exe    |001467B2|EExceptionManager                       |                              |DefaultThreadHandleException     |2765[8]   |
|00000020|04     |05CAFF5C|0051B260|pCRM7.exe    |0011B260|EThreadsManager                         |                              |ThreadWrapperCT                  |1672[17]  |
|00000020|03     |05CAFF8C|77583368|kernel32.dll |00013368|kernel32                                 |                              |BaseThreadInitThunk              |           |
|7FFFFFFE|04     |00000000|0074C1A1|pCRM7.exe    |0034C1A1|uClasses_ThreadedMailboxScanner         |TThreadedOutlookMailBoxScanner|Create                           |275[4]    |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Modules Information:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Handle |Name                                   |Description                                                                     |Version          |Size   |Modified          |Path                                                                                                         |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|00370000|symsrv.dll                             |Symbol Server                                                                   |6.12.2.633        |131856  |2013-08-20 13:59:22|C:\Program Files (x86)\EurekaLab\EurekaLog 7\Bin\                                                             |
|00400000|pCRM7.exe                              |                                                                                 |                  |15424788|2013-11-19 15:46:53|C:\05_Develop\crm7\                                                                                           |
|02640000|olepro32.dll                           |                                                                                 |6.1.7601.17514    |90112   |2010-11-21 04:24:03|C:\Windows\System32\                                                                                          |
|045C0000|dbghelp.dll                            |Windows Image Helper                                                            |6.12.2.633        |1213200 |2013-08-20 13:59:24|C:\Program Files (x86)\EurekaLab\EurekaLog 7\Bin\                                                             |
|04830000|msadcer.dll                            |OLE DB Cursor Engine Resources                                                  |6.1.7600.16385    |8192    |2009-07-14 02:06:52|C:\Program Files (x86)\Common Files\System\msadc\                                                             |
|04B00000|oledb32r.dll                           |OLE DB Core Services-Ressourcen                                                 |6.1.7600.16385    |81920   |2009-07-14 02:09:16|C:\Program Files (x86)\Common Files\System\Ole DB\                                                            |
|0F9A0000|vbajet32.dll                           |Visual Basic for Applications Development Environment - Expression Service Loader|6.0.1.9431        |30749   |2009-07-14 02:16:17|C:\Windows\System32\                                                                                          |
|0F9C0000|expsrv.dll                             |Visual Basic for Applications Runtime - Expression Service                      |6.0.72.9589       |380957  |2009-07-14 02:15:20|C:\Windows\System32\                                                                                          |
|13C10000|msadce.dll                             |OLE DB Cursor Engine                                                            |6.1.7601.17514    |561152  |2010-11-21 04:24:15|C:\Program Files (x86)\Common Files\System\msadc\                                                             |
|1ABC0000|msjetoledb40.dll                       |                                                                                 |4.0.9756.0        |364544  |2009-07-14 02:15:45|C:\Windows\SysWOW64\                                                                                          |
|1B140000|oledb32.dll                            |OLE DB Core Services                                                            |6.1.7601.17514    |864256  |2010-11-21 04:24:02|C:\Program Files (x86)\Common Files\System\Ole DB\                                                            |
|1CB40000|msado15.dll                            |ActiveX Data Objects                                                            |6.1.7601.17857    |1019904 |2013-05-16 19:40:56|C:\Program Files (x86)\Common Files\System\ado\                                                               |
|41590000|msdart.dll                             |OLE DB Runtime Routines                                                         |6.1.7600.16385    |126976  |2009-07-14 02:15:43|C:\Windows\System32\                                                                                          |
|57AC0000|OFFICE.ODF                             |                                                                                 |14.0.7109.5000    |4300456 |2013-09-05 00:14:10|C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\Cultures\                                       |
|57EE0000|OLMAPI32.DLL                           |Extended MAPI 1.0 for Windows NT                                                |14.0.7109.5000    |3323584 |2013-09-06 19:59:50|C:\Program Files (x86)\Microsoft Office\Office14\                                                             |
|583C0000|RICHED20.DLL                           |RichEdit Version 6.0                                                             |14.0.7008.1000    |1367640 |2013-01-15 11:33:16|C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\                                                |
|58640000|MSO.DLL                                |Microsoft Office 2010 component                                                 |14.0.7106.5003    |18612928|2013-09-12 12:14:42|C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\                                                |
|5AAC0000|msjtes40.dll                           |Microsoft Jet Expression Service                                                |4.0.9756.0        |290816  |2009-07-14 02:15:45|C:\Windows\SysWOW64\                                                                                          |
|5AD60000|msvcr90.dll                            |Microsoft® C Runtime Library                                                    |9.0.30729.6161    |653136  |2013-05-16 21:48:25|C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\               |
|5C2E0000|msvcp90.dll                            |Microsoft® C++ Runtime Library                                                  |9.0.30729.6161    |569680  |2013-05-16 21:48:25|C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\               |
|63330000|oleacc.dll                             |Active Accessibility Core Component                                             |7.0.0.0           |233472  |2013-05-16 19:36:40|C:\Windows\System32\                                                                                          |
|6E7B0000|atl.dll                                |ATL Module for Windows XP (Unicode)                                             |3.5.2284.0        |70144   |2009-07-14 02:14:57|C:\Windows\System32\                                                                                          |
|6E7D0000|comsvcs.dll                            |COM+ Services                                                                   |2001.12.8530.16385|1242112 |2009-07-14 02:15:07|C:\Windows\System32\                                                                                          |
|6E920000|msjint40.dll                           |Microsoft Jet-Datenbankmodul - Internationale DLL                               |4.0.9756.0        |24576   |2009-07-14 02:15:45|C:\Windows\SysWOW64\                                                                                          |
|6E930000|msjter40.dll                           |Microsoft Jet Database Engine Error DLL                                         |4.0.9756.0        |61440   |2009-07-14 02:15:45|C:\Windows\SysWOW64\                                                                                          |
|6E960000|mswstr10.dll                           |Microsoft Jet Sort Library                                                      |4.0.9756.0        |618496  |2009-07-14 02:15:51|C:\Windows\SysWOW64\                                                                                          |
|6EA10000|msjet40.dll                            |Microsoft Jet Engine Library                                                    |4.0.9756.0        |1589248 |2009-07-14 02:15:44|C:\Windows\SysWOW64\                                                                                          |
|71450000|apphelp.dll                            |Clientbibliothek für Anwendungskompatibilität                                   |6.1.7601.17514    |295936  |2010-11-21 04:24:14|C:\Windows\System32\                                                                                          |
|71AF0000|bcryptprimitives.dll                   |Windows Cryptographic Primitives Library                                        |6.1.7600.16385    |249680  |2009-07-14 02:17:54|C:\Windows\SysWOW64\                                                                                          |
|71B70000|bcrypt.dll                             |Windows Cryptographic Primitives Library (Wow64)                                |6.1.7600.16385    |80896   |2009-07-14 02:11:20|C:\Windows\System32\                                                                                          |
|71BB0000|GdiPlus.dll                            |Microsoft GDI+                                                                   |6.1.7601.18120    |1625088 |2013-04-03 05:50:20|C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18120_none_72d2e82386681b36\        |
|71F10000|winmm.dll                              |MCI API-DLL                                                                     |6.1.7601.17514    |194048  |2010-11-21 04:24:16|C:\Windows\System32\                                                                                          |
|72430000|ntmarta.dll                            |Windows NT MARTA-Anbieter                                                       |6.1.7600.16385    |121856  |2009-07-14 02:16:11|C:\Windows\System32\                                                                                          |
|72460000|uxtheme.dll                            |Microsoft UxTheme-Bibliothek                                                    |6.1.7600.16385    |245760  |2009-07-14 02:11:24|C:\Windows\System32\                                                                                          |
|72AC0000|msi.dll                                |Windows Installer                                                               |5.0.7601.17807    |2342400 |2012-04-07 12:26:29|C:\Windows\System32\                                                                                          |
|72D40000|sxs.dll                                |Fusion 2.5                                                                       |6.1.7601.17514    |380416  |2010-11-21 04:24:16|C:\Windows\System32\                                                                                          |
|72DB0000|RpcRtRemote.dll                        |Remote RPC Extension                                                            |6.1.7601.17514    |46080   |2010-11-21 04:24:14|C:\Windows\System32\                                                                                          |
|72DC0000|rsaenh.dll                             |Microsoft Enhanced Cryptographic Provider                                       |6.1.7600.16385    |242936  |2009-07-14 02:17:54|C:\Windows\System32\                                                                                          |
|72E60000|cryptsp.dll                            |Cryptographic Service Provider API                                              |6.1.7600.16385    |78848   |2009-07-14 02:15:07|C:\Windows\System32\                                                                                          |
|74120000|winspool.drv                           |Windows-Spoolertreiber                                                          |6.1.7601.17514    |320000  |2010-11-21 04:24:08|C:\Windows\System32\                                                                                          |
|74180000|comctl32.dll                           |Bibliothek für Steuerelemente                                                   |6.10.7601.17514   |1680896 |2010-11-21 04:23:55|C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\|
|74330000|version.dll                            |Version Checking and File Installation Libraries                                |6.1.7600.16385    |21504   |2009-07-14 02:16:17|C:\Windows\System32\                                                                                          |
|74BF0000|msimg32.dll                            |GDIEXT Client DLL                                                               |6.1.7600.16385    |4608    |2009-07-14 02:15:44|C:\Windows\System32\                                                                                          |
|75770000|CRYPTBASE.dll                          |Base cryptographic API DLL                                                      |6.1.7600.16385    |36864   |2009-07-14 02:15:07|C:\Windows\SysWOW64\                                                                                          |
|75780000|sspicli.dll                            |Security Support Provider Interface                                             |6.1.7601.18270    |96768   |2013-09-25 02:58:17|C:\Windows\SysWOW64\                                                                                          |
|759C0000|shlwapi.dll                            |Shell Light-weight-Dienstprogrammbibliothek                                     |6.1.7601.17514    |350208  |2010-11-21 04:23:48|C:\Windows\SysWOW64\                                                                                          |
|75A20000|shell32.dll                            |Allgemeine Windows-Shell-DLL                                                    |6.1.7601.18222    |12872704|2013-07-26 02:55:59|C:\Windows\SysWOW64\                                                                                          |
|76A80000|Wldap32.dll                            |Win32 LDAP-API-DLL                                                              |6.1.7601.17514    |269824  |2010-11-21 04:24:16|C:\Windows\SysWOW64\                                                                                          |
|76AD0000|crypt32.dll                            |Krypto-API32                                                                     |6.1.7601.18277    |1168384 |2013-10-05 20:57:25|C:\Windows\SysWOW64\                                                                                          |
|76C00000|gdi32.dll                              |GDI Client DLL                                                                  |6.1.7601.18275    |311808  |2013-10-03 03:00:44|C:\Windows\SysWOW64\                                                                                          |
|76C90000|msctf.dll                              |MSCTF-Server-DLL                                                                |6.1.7600.16385    |828928  |2009-07-14 02:15:43|C:\Windows\SysWOW64\                                                                                          |
|76D60000|clbcatq.dll                            |COM+ Configuration Catalog                                                      |2001.12.8530.16385|522240  |2009-07-14 02:15:03|C:\Windows\SysWOW64\                                                                                          |
|76DF0000|ole32.dll                              |Microsoft OLE für Windows                                                       |6.1.7601.17514    |1414144 |2010-11-21 04:24:01|C:\Windows\SysWOW64\                                                                                          |
|76F60000|msasn1.dll                             |ASN.1 Runtime APIs                                                              |6.1.7601.17514    |34304   |2010-11-21 04:23:48|C:\Windows\SysWOW64\                                                                                          |
|76F70000|msvcrt.dll                             |Windows NT CRT DLL                                                              |7.0.7601.17744    |690688  |2013-05-16 19:38:16|C:\Windows\SysWOW64\                                                                                          |
|771D0000|imm32.dll                              |Multi-User Windows IMM32 API Client DLL                                         |6.1.7601.17514    |119808  |2010-11-21 04:24:25|C:\Windows\System32\                                                                                          |
|77240000|advapi32.dll                           |Erweiterte Windows 32 Base-API                                                  |6.1.7601.18247    |640512  |2013-08-29 02:48:17|C:\Windows\SysWOW64\                                                                                          |
|772E0000|KERNELBASE.dll                         |Client-DLL für Windows NT-Basis-API                                             |6.1.7601.18229    |274944  |2013-08-02 02:50:42|C:\Windows\SysWOW64\                                                                                          |
|773A0000|rpcrt4.dll                             |Remoteprozeduraufruf-Laufzeitumgebung                                           |6.1.7601.18205    |663552  |2013-07-09 05:52:33|C:\Windows\SysWOW64\                                                                                          |
|774A0000|imagehlp.dll                           |Windows NT Image Helper                                                         |6.1.7601.17787    |159232  |2013-05-16 19:38:24|C:\Windows\SysWOW64\                                                                                          |
|774D0000|lpk.dll                                |Language Pack                                                                   |6.1.7601.18177    |25600   |2013-06-06 05:57:01|C:\Windows\SysWOW64\                                                                                          |
|774E0000|psapi.dll                              |Process Status Helper                                                           |6.1.7600.16385    |6144    |2009-07-14 02:16:12|C:\Windows\SysWOW64\                                                                                          |
|77570000|kernel32.dll                           |Client-DLL für Windows NT-Basis-API                                             |6.1.7601.18229    |1114112 |2013-08-02 02:50:41|C:\Windows\SysWOW64\                                                                                          |
|776B0000|usp10.dll                              |Uniscribe Unicode script processor                                              |1.626.7601.18009  |626688  |2012-11-22 05:45:03|C:\Windows\SysWOW64\                                                                                          |
|777B0000|user32.dll                             |Multi-User Windows USER API Client DLL                                          |6.1.7601.17514    |833024  |2010-11-21 04:24:20|C:\Windows\SysWOW64\                                                                                          |
|778B0000|oleaut32.dll                           |                                                                                 |6.1.7601.17676    |571904  |2013-05-16 19:36:40|C:\Windows\SysWOW64\                                                                                          |
|77940000|sechost.dll                            |Host for SCM/SDDL/LSA Lookup APIs                                               |6.1.7600.16385    |92160   |2009-07-14 02:16:13|C:\Windows\SysWOW64\                                                                                          |
|77D30000|api-ms-win-downlevel-advapi32-l1-1-0.dll|ApiSet Stub DLL                                                                 |6.2.9200.16492    |10752   |2013-01-13 22:16:42|C:\Windows\SysWOW64\                                                                                          |
|77D60000|ntdll.dll                              |DLL für NT-Layer                                                                |6.1.7601.18247    |1292192 |2013-08-29 02:50:30|C:\Windows\SysWOW64\                                                                                          |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Processes Information:
----------------------


Assembler Information:
--------------------------------------------------------------------------
; Base Address: $76F79000, Allocation Base: $76F70000, Region Size: 618496
; Allocation Protect: PAGE_EXECUTE_WRITECOPY, Protect: PAGE_EXECUTE_READ
; State: MEM_COMMIT, Type: MEM_IMAGE
;
;
; msvcrt. (possible memcpy+547) (Line=0 - Offset=547)
; ---------------------------------------------------
76F79B33  C3      RET
76F79B34  8A4603  MOV AL, [ESI+3]
76F79B37  884703  MOV [EDI+3], AL
76F79B3A 8A4602  MOV AL, [ESI+2]
76F79B3D 884702  MOV [EDI+2], AL
76F79B40  8B4508  MOV EAX, [EBP+8]
76F79B43  5E     POP ESI
76F79B44  5F     POP EDI
76F79B45  C9      LEAVE
76F79B46  C3      RET
76F79B47  8A4603  MOV AL, [ESI+3]
76F79B4A 884703  MOV [EDI+3], AL
76F79B4D 8A4602  MOV AL, [ESI+2]
76F79B50  884702  MOV [EDI+2], AL
76F79B53  8A4601  MOV AL, [ESI+1]
;
; msvcrt. (possible memcpy+582) (Line=0 - Offset=582)
; ---------------------------------------------------
76F79B56  884701  MOV [EDI+1], AL  ; <-- EXCEPTION
76F79B59  8B4508  MOV EAX, [EBP+8]
76F79B5C 5E     POP ESI
76F79B5D 5F     POP EDI
76F79B5E C9      LEAVE

Registers:
-----------------------------
EAX: ????       EDI: ????   
EBX: ????       ESI: ????   
ECX: ????       EBP: ????   
EDX: ????       ESP: ????   
EIP: ????       FLG: ????   
EXP: 76F79B56   STK: 0018CC64

Stack:              Memory Dump:
------------------   ---------------------------------------------------------------------------
0018CCA0: 0018CCC8   76F79B56: 88 47 01 8B 45 08 5E 5F C9 C3 F3 A5 FF 24 95 B8  .G..E.^_.....$..
0018CC9C: 0054B757   76F79B66: 99 F7 76 8A 06 88 07 8A 46 01 88 47 01 8B 45 08  ..v.....F..G..E.
0018CC98: 0018CCA4   76F79B76: 5E 5F C9 C3 83 3D 44 00 01 77 00 0F 84 B5 FD FF ^_...=D..w......
0018CC94: 0054B729   76F79B86: FF 57 56 83 E7 0F 83 E6 0F 3B FE 5E 5F 0F 85 A3  .WV......;.^_...
0018CC90: 0018CCC8   76F79B96: FD FF FF 5E 5F 5D E9 12 04 00 00 55 8B EC 83 EC ...^_].....U....
0018CC8C: 01B2166C  76F79BA6: 20 83 E4 F0 D9 C0 D9 54 24 18 DF 7C 24 10 DF 6C  ......T$..|$..l
0018CC88: 1177977C  76F79BB6: 24 10 8B 54 24 18 8B 44 24 10 85 C0 0F 84 07 02  $..T$..D$.......
0018CC84: 11CB57EC  76F79BC6: 00 00 DE E9 85 D2 0F 88 09 5E 00 00 D9 1C 24 8B .........^....$.
0018CC80: 117F8A9C  76F79BD6: 0C 24 81 C1 FF FF FF 7F 83 D8 00 8B 54 24 14 83  .$..........T$..
0018CC7C: 0DAC0D2C  76F79BE6: DA 00 C9 C3 83 3D 44 00 01 77 00 75 0A E9 BE FB .....=D..w.u....
0018CC78: 00000000   76F79BF6: FF FF 90 90 90 90 90 8B C0 55 8B EC 83 EC 10 89  .........U......
0018CC74: 0055BE50   76F79C06: 7D FC 8B 45 08 99 8B F8 33 FA 2B FA 83 E7 0F 33  }..E....3.+....3
0018CC70: 0055BE50   76F79C16: FA 2B FA 85 FF 0F 85 95 00 00 00 8B 4D 10 8B D1  .+..........M...
0018CC6C: 0018CC90   76F79C26: 83 E2 7F 89 55 F4 3B CA 74 12 2B CA 51 50 E8 2E ....U.;.t.+.QP..
0018CC68: 0054BB44   76F79C36: 00 00 00 83 C4 08 8B 45 08 8B 55 F4 85 D2 74 15  .......E..U...t.
0018CC64: 0018CC98   76F79C46: 03 45 10 2B C2 89 45 F8 33 C0 8B 7D F8 8B 4D F4  .E.+..E.3..}..M.



*** Aus ursprünglicher Frage:
Anbei ein Beispiel für eine mögliche Fehlerquelle: eine Prozedur, die vom Thread mit Synchronize aufgerufen wird:
Delphi-Quellcode:
{$Region 'procedure TThreadedOutlookMailBoxScanner.SyncMails;'}
procedure TThreadedOutlookMailBoxScanner.SyncMails;
var
  i, j: integer;
  blFail: Boolean;
  blGefunden: Boolean;
  blChanged: Boolean;
  tmpMail: TMail;
  CrashCount, VerifyTick: Cardinal;
begin
  try
    blChanged := False;
    VerifyTick := GetTickCount;

    for i := 0 to FclMail.Count - 1 do begin
      blGefunden := False;
      for j := 0 to clMail.Count - 1 do begin
        if TMail(FclMail.Items[i]).EntryID = TMail(clMail.Items[j]).EntryID then begin
          if not TMail(FclMail.Items[i]).Equals(TMail(clMail.Items[j])) then begin
            TMail(clMail.Items[j]).Assign(TMail(FclMail.Items[i]));
            blChanged := True;
          end;
          TMail(clMail.Items[j]).VerifiedTick := VerifyTick;
          blGefunden := True;
          Break;
        end;
      end;

      if not blGefunden then begin
        tmpMail := TMail.Create(NIL);
        tmpMail.Assign(TMail(FclMail.Items[i]));
        tmpMail.VerifiedTick := VerifyTick;
        clMail.Add(tmpMail);
        blChanged := True;
      end;
    end;

    i := 0;
    CrashCount := GetTickCount + 10000;
    while (i < clMail.Count) and (GetTickCount < CrashCount) do begin
      if Mail(i).VerifiedTick <> VerifyTick then begin
        clMail.Delete(i);
        blChanged := True;
      end else begin
        inc(i);
      end;
    end;

    {$Region 'Nach Eingangsdatum/-Uhrzeit sortieren / Neu nach Alt'}
    repeat
      blFail := False;

      for i := 0 to clMail.Count - 2 do begin
        if TMail(clMail.Items[i]).SentOn < TMail(clMail.Items[i+1]).SentOn then begin
          clMail.Move(i, i+1);
          blFail := True;
        end;
      end;
    until not blFail;
    {$EndRegion}

    if blChanged and assigned(OnChange) then begin
      OnChange(Self);
    end;
  except
    on E: SysUtils.Exception do begin
      Log('TThreadedOutlookMailBoxScanner.SyncMails', M, E.Message, ws_SEVERITY_EXCEPTION);
    end;
  end;
end;
{$EndRegion}
Vielen Dank!

Geändert von berens (19. Nov 2013 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Exception mit ntdll.dll, Quelle nicht feststellbar

  Alt 19. Nov 2013, 15:41
Bei Threads solltest du so vorgehen, dass du alle Exceptions abfängst.
Mit folgendem Code verhinderst du dass dir eine Exception durch die Lappen geht.
ReturnValue kann zusätzlich dazu benützt werden einen Fehler für den Starter des Threads zu signalisieren.
Delphi-Quellcode:
procedure TMeinThread.InternalExecute;
begin
  // hier kommt der Code rein, der ürsprünglich in Execute stand
end;

procedure TMeinThread.Execute;
begin
  try
    InternalExecute;
    ReturnValue := 0;
  except
    on E:Exception do
    begin
      ReturnValue := 1;
      // hier die Exception loggen
    end;
  end;
end;
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Exception mit ntdll.dll, Quelle nicht feststellbar

  Alt 19. Nov 2013, 16:00
Ich würde als allererstes die Threads mit TThread.NameThreadForDebugging so benennen, dass du weißt welcher Thread eigentlich was macht:
http://docwiki.embarcadero.com/Libra...adForDebugging
Damit bekommst du den verursachenden Thread vielleicht ja schon heraus.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
430 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Exception mit ntdll.dll, Quelle nicht feststellbar

  Alt 19. Nov 2013, 16:19
@sx2008: Generell gute Idee. Im Prinzip hab ich das schon so, nur verwende ich aktuell nicht explizit nochmal eine andere Prozedur. Werde ich aber wohl auch bei Gelegenheit ändern, da man so wirklich nur eine einzige "Except"-Stelle hat. Die Frage ist allerdings: Aktuell mache ich noch ein "CleanUp" in der .Execute, falls mit try..except was nicht geklappt hat (Objekte löschen etc.). Das kann ich dann jetzt nicht mehr machen, oder müsste es in dieser Prozedur hintendran schreiben?

@jaenicke: Hab ich jetzt gemacht. Das sollte zumindest mal Helfen, die eigenen Threads klar im Auge behalten zu können.

*** EDIT: Ich habe von der TMS-Komponente damals glücklicherweise den Quellcode mitgekauft. Bei der TSectionListBox habe ich das komplette WM_MouseMove herausgenommen (War nur so eine "hervorheben" Funktion der Komponente), aktuell scheint es zu klappen. Da der Fehler nur sporadisch aufritt, und die Fehlermeldung hier nun eine andere ist wie die mit ntdll.dll unter Delphi 2007 kann ich noch nicht sagen, ob das Problem definitiv gelöst ist.

@4dk2: Ja, habe auch madExept mit Delphi 2007 versucht, aber der konnte keine Exception (ab)fangen.

Geändert von berens (19. Nov 2013 um 16:39 Uhr)
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#5

AW: Exception mit ntdll.dll, Quelle nicht feststellbar

  Alt 19. Nov 2013, 16:35
Eureka Log hab ich noch nie benutzt, schon mal nen andern stack tracer versucht? Madexcept oder evtl. jclDebug von jedi tools?
die logs sehen nen bisschen danach aus, als ob der alles aus dem exception stack ausliest,
bei mir war das schon mal bei jclDebug, dass da ntdll.dll und co drin stand, als ich den ExceptionTrace mit zu viel Parametern gestartet habe.
Obwohl die eigentliche Exeception einfach der Zugriff auf ein nicht initialisiertes Objekt war.

Das andere ist, dass du gesagt hast das dort ein Stackoverflow auftritt in einer TSectionListBox Auftritt, bei WMMouseMove.

Ist nicht so ganz nachvollziehbar warum das nach einem Aufruf von SetAsMemo von TParam passiert.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Exception mit ntdll.dll, Quelle nicht feststellbar

  Alt 19. Nov 2013, 17:14
Die Frage ist allerdings: Aktuell mache ich noch ein "CleanUp" in der .Execute, falls mit try..except was nicht geklappt hat (Objekte löschen etc.).
Allgemein sollte man Resourcen in der umgekehrten Reihenfolge wieder abbauen.
Objekte die im Konstruktor erzeugt wurden werden im Destruktor freigegeben.
Wenn du etwas in Execute anlegst dann sollte man es dort auch mit Hilfe eines Resourcenschutzblocks (try...finally) wieder freigeben.
Wenn die Schachtelung von try...except und try...finally unübersichtlich wird dann kann man auch einfach eine weitere Unterfunktion verwenden um die Sache zu entflechten.
Bei Threads ist es empfehlenswert wenn man dem Thread von aussen (z.B. über Parameter im Konstruktor) benötigte Objekte übergibt.
Bei COM-Unterfaces muss man allerdings vorsichtig sein, den diese müssen "gemarshalt" werden.

Mit ist bei deinem Code noch aufgefallen, dass viele unnötige Casts enthalten sind.
Man sollte Zwischenvariablen verwenden damit die Sache klarer wird:
Delphi-Quellcode:
var
  m1, m2 : TMail;
...
    for i := 0 to FclMail.Count - 1 do begin
      blGefunden := False;
      m1 := TMail(FclMail.Items[i]); // Zwischenvariable belegen
      for j := 0 to clMail.Count - 1 do begin
        m2 := TMail(clMail.Items[j]); // Zwischenvariable belegen
        if m1.EntryID = m2.EntryID then begin // so wird der Vergleich einfacher
...
fork me on Github
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz