AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlersuche - komm nicht weiter

Ein Thema von schwa226 · begonnen am 28. Aug 2009 · letzter Beitrag vom 18. Feb 2010
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Fehlersuche - komm nicht weiter

  Alt 28. Aug 2009, 18:23
Hi,

ich habe ein Programm, dass StayOnTop ist.

Wenn nun der PC gesperrt ist bekomme ich nach ~30min diese Meldung:
Zitat:
Erste Gelegenheit für Exception bei $768442EB. Exception-Klasse EOutOfResources mit Meldung 'Das Handle ist ungültig.
'. Prozess myApp.exe (1604)
Erste Gelegenheit für Exception bei $768442EB. Exception-Klasse EOutOfResources mit Meldung 'Systemressourcen erschöpft.'. Prozess myApp.exe (1604)
Erste Gelegenheit für Exception bei $768442EB. Exception-Klasse EOutOfResources mit Meldung 'Falscher Parameter.
'. Prozess myApp.exe (1604)
Erste Gelegenheit für Exception bei $768442EB. Exception-Klasse EOutOfResources mit Meldung 'Falscher Parameter.
'. Prozess myApp.exe (1604)
Erste Gelegenheit für Exception bei $768442EB. Exception-Klasse EStackOverflow mit Meldung 'Stack-Überlauf'. Prozess xHTPC.exe (1604)
und der Cursor steht in Graphics:
Delphi-Quellcode:
procedure GDIError;
const
  BufSize = 256;
var
  ErrorCode: Integer;
{$IF DEFINED(CLR)}
  Buf: StringBuilder;
{$ELSE}
  Buf: array [Byte] of Char;
{$IFEND}
begin
{$IF DEFINED(CLR)}
  Buf := StringBuilder.Create(BufSize);
{$IFEND}
  ErrorCode := GetLastError;
  if (ErrorCode <> 0) and (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil,
    ErrorCode, LOCALE_USER_DEFAULT, Buf, BufSize, nil) <> 0) then
{$IF DEFINED(CLR)}
    raise EOutOfResources.Create(Buf.ToString)
{$ELSE}
    raise EOutOfResources.Create(Buf)
{$IFEND}
  else
    OutOfResources;
end;
raise EOutOfResources.Create(Buf)

Wie kann ich herausfinden wo es von meinem Programm aus einen Fehler gibt?
Denn mit Umschalt-F8 weiter gehe kommen noch mehr Meldungen in der Graphics.
Der Taskmanager sagt mir das dass Programm ~3MB RAM braucht.

Ich habe Bitmaps & TIcons in meinem Programm.
Das komische ist halt, dass dieser Fehler nur auftritt wenn der PC gesperrt ist!?
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehlersuche - komm nicht weiter

  Alt 28. Aug 2009, 18:34
Was macht den dein Programm?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#3

Re: Fehlersuche - komm nicht weiter

  Alt 28. Aug 2009, 19:11
Wichtiger, als die Auslöse-Prozedur, wäre z.B. der Aufrufstack,

denn in dieser Prpzedur wird nur "nachträglich" die Exception ausgelöst und der Verursacher ist wo anders.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#4

Re: Fehlersuche - komm nicht weiter

  Alt 28. Aug 2009, 19:52
Zitat von himitsu:
Wichtiger, als die Auslöse-Prozedur, wäre z.B. der Aufrufstack,

denn in dieser Prpzedur wird nur "nachträglich" die Exception ausgelöst und der Verursacher ist wo anders.
Und wie mache ich das?
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#5

Re: Fehlersuche - komm nicht weiter

  Alt 29. Aug 2009, 10:20
Ok

Das ist der Aufrufstack wenn ich auf Anhalten drücke:

Zitat:
:7c812afb kernel32.RaiseException + 0x52
Graphics.GDIError
Graphics.GDICheck(0)
Graphics.CopyBitmap(0,0,0,$12EB78,nil)
Graphics.TBitmap.CopyImage(0,0,((0, 75, 23, 0, 0, 0, nil), (40, 75, 23, 1, 24, 0, 0, 0, 0, 0, 0), (0, 0, 0), 0, 0))
Graphics.TBitmap.SetSize(???,???)
Graphics.TBitmap.SetHeight(???)
:0043b4b8 TBitmap.SetSize + $50
:7e368734 user32.GetDC + 0x6d
:7e368816 ; C:\WINDOWS\system32\user32.dll
:7e37927b ; C:\WINDOWS\system32\user32.dll
:7e3792e3 user32.SendMessageW + 0x49
:004fdf50 TacBtnWnd.acWndProc + $350
:7e368734 user32.GetDC + 0x6d
:7e368816 ; C:\WINDOWS\system32\user32.dll
:7e378ea0 ; C:\WINDOWS\system32\user32.dll
:7e378eec ; C:\WINDOWS\system32\user32.dll
:7c91e473 ntdll.KiUserCallbackDispatcher + 0x13
:7e368734 user32.GetDC + 0x6d
:7e37413c ; C:\WINDOWS\system32\user32.dll
:7e373b30 user32.EnumDisplaySettingsA + 0xc9
:7e373d5c user32.DefDlgProcW + 0x22
:7e368734 user32.GetDC + 0x6d
:7e368816 ; C:\WINDOWS\system32\user32.dll
:7e37927b ; C:\WINDOWS\system32\user32.dll
:7e37651a ; C:\WINDOWS\system32\user32.dll
:7e3749b1 ; C:\WINDOWS\system32\user32.dll
:7e38a956 ; C:\WINDOWS\system32\user32.dll
:7e38a2bc ; C:\WINDOWS\system32\user32.dll
:7e3b63fd user32.MessageBoxTimeoutW + 0x7a
:7e3a0853 user32.MessageBoxExW + 0x1b
:7e3b6579 user32.MessageBoxW + 0x45
Forms.TApplication.MessageBox(???,'myApp',???)
Forms.TApplication.ShowException(???)
Forms.TApplication.HandleException(???)
ExtCtrls.TTimer.WndProc(???)
Classes.StdWndProc(262192,275,1,0)
:7e368734 user32.GetDC + 0x6d
:7e368816 ; C:\WINDOWS\system32\user32.dll
:7e3689cd ; C:\WINDOWS\system32\user32.dll
:7e368a10 user32.DispatchMessageW + 0xf
Forms.TApplication.ProcessMessage(???)
Ich habe ein 'CopyIcon' in meinem Source.
Aber kein CopyBitmap oder auch kein CopyImage. Wird wahrscheinlich so sein, dass 'CopyIcon' diese Funktionen aufruft, oder?
Ich werde einmal eine Abfrage einfügen ob das Icon-Handle 0 ist bevor ein CopyIcon durchgeführt wird.
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Fehlersuche - komm nicht weiter

  Alt 29. Aug 2009, 10:32
Hallo,

kann es sein, dass dein Programm per Timer
ständig das Icon wechselt ?


Heiko
Heiko
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#7

Re: Fehlersuche - komm nicht weiter

  Alt 29. Aug 2009, 15:12
Nein,

das Icon wird von extern gewechselt (TNotifyIconData). Shell-Ersatz.

Habe nun das CopyIcon & DestroyIcon abgesichert.
Soweit ist der Fehler nicht mehr aufgetretten.
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
KridSElot

Registriert seit: 7. Sep 2006
Ort: Bad Kreuznach
3 Beiträge
 
#8

Re: Fehlersuche - komm nicht weiter

  Alt 18. Feb 2010, 14:44
Äh also ich habe diese Fehlermeldung einen ähnlichen Callstack wenn ich keinen Desktop Heap mehr habe.

Eventuell kann Dir das hier helfen: http://blogs.msdn.com/ntdebugging/ar...-overview.aspx
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:05 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