Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Exception ohne wirklichen Auslöser treibt mich in den Wahnsinn!

  Alt 19. Aug 2013, 16:38
Delphi-Version: 2007
Hallo mal wieder.

Ich bin mit meinem Latei mal wieder komplett am Ende, und selbst die SuFu oder Google liefern mir hier noch nicht mal mehr Ansätze.

Ich habe hier (m)ein Programm, das aus einer Datenbank über einen Thread Werte lädt, diese mittels Synchronize() an eine Komponente aus dem Hauptformular übergibt und dann weiterverarbeitet wird. Das klappt alles 100% zuverlässig und störungsfrei.

Nun ergibt sich aber das Problem, dass, sobald ich/der Benutzer etwas in ein TEdit oder TMemo eingibt, und (nach wilden rumtippseln auf der Tastatur) dann Leertaste drücke, eine Exception kommt. Alle TEdit/TMemo Objekte haben kein On-Ereignis hinterlegt. Alle Formulare haben KeyPreview auf "False". Es scheint so, als ob beim Drücken der Leertaste Delphi/Windows intern "Application.ProcessMessages" aufruft (siehe Stack weiter unten) und dann irgendwas im Hintergrund schafft.

Ich vermute ja fast, dass Delphi alle Nachfahren von TObject, die momentan als Variable in meinem Programm/Speicher vorhanden sind benachrichtigt, dass der Hotkey "Leertaste" gedrückt wurde. Interessiert zwar keine einzige Komponente, aber egal. Während die Liste (wo nimmt er die her?) mit allen Komponenten durchgeht, wird wohl eine Komponente aus der Liste gelöscht, und es kommt zu der Exception. Meine Vermutung.

Der Thread löscht keine Komponenten aus dem Hauptprogramm. Beim Debuggen wird mir beim Anklicken aller Threads nacheinander bei "Thread-Status" auch kein Thread angezeigt, in dem aktuell mein Quelltext läuft oder sonst irgendwie etwas gelöscht wird (es gibt ja immer mehrere "leere" Threads beim Debuggen wo nur "WaitForSingleObject" o.ä. als einziger Stackbefehl zu sehen ist). Der VCL/Main Thread ist idle und durchläuft zu diesem Zeitpunkt keine Prozeduren von mir.

Ich verwende außer meinen Objekten und den Standard-Komponenten nur ein paar LMD-Panels etc., aber die werden nur bei Programmstart erzeugt. Keine weiteren Threads oder Fremdkomponenten.

Wie bekomme ich denn raus, bei welcher TList der .Get-Befehl fehlgeschlagen ist? Was kann man machen? Kann ich der TApplication die Reaktionen auf Tastatur-Anschläge verbieten (MessageHandler überschreiben, ...)?


Anbei das Log:
Code:
EurekaLog 7.0.6.0 

Exception:
-------------------------------------------------------------
  2.2 Address: 00436D20
  2.5 Type  : EListError
  2.6 Message: Listenindex überschreitet das Maximum (21116).
  2.7 ID    : 60500000
  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=4024; Parent=0; Priority=0                                                                                               |
|Class=; Name=MAIN                                                                                                                             |
|DeadLock=0; Wait Chain=                                                                                                                       |
|Comment=                                                                                                                                      |
|-----------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|04     |00000000|00436D20|pCRM7.exe  |00036D20|Classes         |TList         |Get                                     |2992[2]  |
|00000020|04     |0018FBA8|00440ABB|pCRM7.exe  |00040ABB|Classes         |TComponent    |GetComponent                            |10673[2] |
|00000020|04     |0018FBB4|005034BF|pCRM7.exe  |001034BF|Forms           |               |DispatchShortCut                        |5997[5]  |
|00000020|04     |0018FBD0|0050356D|pCRM7.exe  |0010356D|Forms           |TCustomForm   |IsShortCut                              |6018[3]  |
|00000020|03     |0018FEB8|75BE6175|USER32.dll |00026175|USER32           |               |SendMessageA                            |          |
|00000020|04     |0018FEDC|005067EB|pCRM7.exe  |001067EB|Forms           |TApplication  |IsKeyMsg                                |8022[24] |
|00000020|04     |0018FF08|00506A49|pCRM7.exe  |00106A49|Forms           |TApplication  |ProcessMessage                          |8097[15] |
|00000020|04     |0018FF20|00506AAE|pCRM7.exe  |00106AAE|Forms           |TApplication  |HandleMessage                           |8124[1]  |
|00000020|04     |0018FF44|00506DA3|pCRM7.exe  |00106DA3|Forms           |TApplication  |Run                                     |8223[20] |
|00000020|04     |0018FF74|006B05B5|pCRM7.exe  |002B05B5|pCRM7            |               |Initialization                          |39[8]    |
|00000020|03     |0018FFD8|77BD9F40|ntdll.dll  |00039F40|ntdll           |               |(possible RtlInitializeExceptionChain+49)|          |
|-----------------------------------------------------------------------------------------------------------------------------------------------|
|                                                                                                                                               |
|Running Thread: ID=5216; Parent=4024; Priority=0                                                                                               |
|Class=TLoadSaveThread; Name= (uLoadSave.TLoadSaveThread.Execute)                                                                              |
|DeadLock=0; Wait Chain=thread: [ 1460 / 5216 ] is blocked                                                                                     |
|Comment=                                                                                                                                      |
|-----------------------------------------------------------------------------------------------------------------------------------------------|
|7FFFFFFE|03     |00000000|77BBF8D1|ntdll.dll  |0001F8D1|ntdll           |               |ZwWaitForSingleObject                   |          |
|00000020|03     |03F3F984|766F118F|kernel32.dll|0001118F|kernel32         |               |WaitForSingleObjectEx                   |          |
|00000020|03     |03F3F99C|766F1143|kernel32.dll|00011143|kernel32         |               |WaitForSingleObject                     |          |
|00000020|04     |03F3F9B0|0044028F|pCRM7.exe  |0004028F|Classes         |TThread       |Synchronize                             |10168[34] |
|00000020|04     |03F3FA00|00440336|pCRM7.exe  |00040336|Classes         |TThread       |Synchronize                             |10196[4] |
|00000020|04     |03F3FA08|006942DE|pCRM7.exe  |002942DE|uLoadSave       |TLoadSaveThread|Execute                                 |1157[644] |
|00000020|04     |03F3FE64|004DE045|pCRM7.exe  |000DE045|EAppMultiThreaded|               |ThreadExecuteSafeWrapper                |64[11]   |
|00000020|04     |03F3FEA8|0043FE10|pCRM7.exe  |0003FE10|Classes         |               |ThreadProc                              |9877[7]  |
|00000020|04     |03F3FED8|00405334|pCRM7.exe  |00005334|System          |               |ThreadWrapper                           |12110[33] |
|00000020|04     |03F3FEEC|004DE21E|pCRM7.exe  |000DE21E|EAppMultiThreaded|               |ThreadProcHandler                       |137[13]  |
|00000020|04     |03F3FF34|004C2607|pCRM7.exe  |000C2607|EExceptionManager|               |DefaultThreadHandleException            |2850[3]  |
|00000020|04     |03F3FF78|0049D8C3|pCRM7.exe  |0009D8C3|EThreadsManager |               |ThreadWrapper                           |611[11]  |
|00000020|03     |03F3FF8C|766F33A8|kernel32.dll|000133A8|kernel32         |               |BaseThreadInitThunk                     |          |
|7FFFFFFE|04     |00000000|0069135B|pCRM7.exe  |0029135B|uLoadSave       |TLoadSaveThread|Create                                  |121[3]   |
-------------------------------------------------------------------------------------------------------------------------------------------------

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


Assembler Information:
-----------------------------------------------------------
; Classes.TList.Get (Line=2991 - Offset=9)
; ----------------------------------------
00436D15  add    eax, +$7C08733B
;
; Line=2991 - Offset=14
; ---------------------
00436D1A jnp    +$6C414415
;
; Line=2992 - Offset=20
; ---------------------
00436D20  add    [ebx+$E8038BCE], cl      ; <-- EXCEPTION
;
; Line=2992 - Offset=26
; ---------------------
00436D26  push   ds
;
; Line=2992 - Offset=27
; ---------------------
00436D27  DB     $FF, $FF //     
;
; Line=2992 - Offset=29
; ---------------------
00436D29  dec    dword ptr [ebx+$48B0443]
;
; Line=2993 - Offset=35
; ---------------------
00436D2F mov    al, $5E
;
; Line=2994 - Offset=37
; ---------------------
00436D31  pop    ebx
;
; Line=2994 - Offset=38
; ---------------------
00436D32  ret

Registers:
-----------------------------
EAX: 0018FAC4   EDI: 00000001
EBX: 00000000   ESI: 0EEDFADE
ECX: 00000007   EBP: 0018FB14
EDX: 00000000   ESP: 0018FAC4
EIP: 7583C41F  FLG: 00000212
EXP: 00436D20   STK: 0018FB9C

Stack:              Memory Dump:
------------------   ---------------------------------------------------------------------------
0018FBD8: 00000000   00436D20: 00 8B CE 8B 03 E8 1E FF FF FF 8B 43 04 8B 04 B0  ...........C....
0018FBD4: 0018FBEC  00436D30: 5E 5B C3 90 8B 50 0C 83 FA 40 7E 0E 8B CA 85 C9  ^[...P...@~.....
0018FBD0: 00503572   00436D40: 79 03 83 C1 03 C1 F9 02 EB 11 83 FA 08 7E 07 B9  y............~..
0018FBCC: 0018FBEC  00436D50: 10 00 00 00 EB 05 B9 04 00 00 00 03 CA 8B D1 E8  ................
0018FBC8: 02742020   00436D60: 64 01 00 00 C3 8D 40 00 53 33 C9 EB 01 41 3B 48  d.....@.S3...A;H
0018FBC4: 00000018   00436D70: 08 7D 08 8B 58 04 3B 14 8B 75 F2 3B 48 08 75 03  .}..X.;..u.;H.u.
0018FBC0: 02742020   00436D80: 83 C9 FF 8B C1 5B C3 90 53 56 57 8B F9 8B F2 8B .....[..SVW.....
0018FBBC: 00503514   00436D90: D8 85 F6 7C 05 3B 73 08 7E 0F 8B 15 44 41 6C 00  ...|.;s.~...DAl.
0018FBB8: 00000000   00436DA0: 8B CE 8B 03 E8 9F FE FF FF 8B 43 08 3B 43 0C 75  ..........C.;C.u
0018FBB4: 005034C4   00436DB0: 06 8B C3 8B 10 FF 12 8B 43 08 3B F0 7D 1A 2B C6  ........C.;.}.+.
0018FBB0: 0ABF0580   00436DC0: 8B C8 03 C9 03 C9 8B 43 04 8D 54 B0 04 8B 43 04  .......C..T...C.
0018FBAC: 00000001   00436DD0: 8D 04 B0 E8 A4 C6 FC FF 8B 43 04 89 3C B0 FF 43  .........C..<..C
0018FBA8: 00440AC0   00436DE0: 08 85 FF 74 0B 33 C9 8B D7 8B C3 8B 18 FF 53 04  ...t.3........S.
0018FBA4: 02742020   00436DF0: 5F 5E 5B C3 8B 50 08 4A E8 0F FF FF FF C3 8B C0  _^[..P.J........
0018FBA0: 0000527C  00436E00: 53 56 57 55 8B F1 8B FA 8B D8 3B F7 74 45 85 F6  SVWU......;.tE..
0018FB9C: 00436D2A  00436E10: 7C 05 3B 73 08 7C 0F 8B 15 44 41 6C 00 8B CE 8B |.;s.|...DAl....
  Mit Zitat antworten Zitat