Failed To get Raw Image from Bitmap

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Failed To get Raw Image from Bitmap

Beitrag von Komoluna »

Liebes Forum,

Bei einem meiner Projekte habe ich das Problem, dass nach einer gewissen Zeit(1-10 min) das Programm abstürzt, mit der Windows Standartmeldung "start.exe funktioniert nicht mehr"...
Wenn ich das Projekt mit dem Debugger starte, und es sich dann aufhängt, wird mir die Fehlermeldung "Failed to get Raw Image from Bitmap" angezeigt. Danach springt der Debugger zu Zeile 3423 in der Unit "IntfGraphics":

Code: Alles auswählen

procedure TLazIntfImage.LoadFromBitmap(ABitmap, AMaskBitmap: HBitmap;
  AWidth: integer; AHeight: integer);
var
  R: TRect;
  RawImage: TRawImage;
  Desc: TRawImageDescription;
begin
  if not RawImage_DescriptionFromBitmap(ABitmap, Desc) then
    raise FPImageException.Create('Failed to get raw image description from bitmap');
 
  if AWidth < 0 then AWidth := Desc.Width;
  if AHeight < 0 then AHeight := Desc.Height;
  R := Rect(0, 0, AWidth, AHeight);
  if not RawImage_FromBitmap(RawImage, ABitmap, AMaskBitmap, @R) then
    raise FPImageException.Create('Failed to get raw image from bitmap');   //<--- Hier wird die Fehlermeldung generiert
 
  SetRawImage(RawImage);
end;


Das seltsame daran ist ja, dass der Fehler nach einer eher zufälligen Zeitspanne auftritt.
Ich habe das Projekt auch schon mit der HeapTrc Unit durchgecheckt, ob es irgendwo ein Memoryleak gibt, aber habe nichts gefunden.
Hattet ihr einen solchen Fehler auch schon einmal, oder ist dieses Verhalten auch euch unbekannt?

MFG

Komoluna

P.S.: Da es ein relativ großes Projekt ist und ich absolut keine Ahnung habe, wo ich den Fehler suchen soll, wird es schwer, das Ganze auf ein Minimalbeispiel einzugrenzen.
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Failed To get Raw Image from Bitmap

Beitrag von Christian »

Schau doch mal ob das Bitmap noch gültig ist.
Ist Threading im spiel ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Failed To get Raw Image from Bitmap

Beitrag von Komoluna »

Wenn ich, wenn der Debugger anhält über den Aufrufstack zu der Deklaration meiner Bitmapvariable springe, wird mir die Standardausagabe angezeigt, wie sonst auch.
Threads benutze ich in meinem Projekt (noch) nicht.

MFG
Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Failed To get Raw Image from Bitmap

Beitrag von Christian »

Nein du sollst gucken ob die Bitmap noch da ist, also mitm Debugger in die Variable schaun ob der Speicherbereich noch belegt ist.
Das sieht man normalerweise schon ganz gut wenn man die Maus drüberhält dann kommt eigentlicht sowas wie Variable: Tbitmap...
Wenn der Speicherbereich murks ist steht da meisst auch nicht mehr TBitmap u.s.w.
Eventuell hast du irgendwo nen .Free in der zwischenzeit gemacht.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Failed To get Raw Image from Bitmap

Beitrag von theo »

Da musst du wahrscheinlich den Code stellenweise auskommentieren um das Problem einzugrenzen.
Ich denke mit dem Debugger kommst du da nicht weit.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Failed To get Raw Image from Bitmap

Beitrag von Komoluna »

@Christian: Genau das meinte ich, der Hint, der angezeigt wird zeigt ein Bitmap mit Speicherbereich, und einem teil der Daten an...

@theo: Das mit dem Stellenweise auskommentieren wird kompliziert, da der Fehler manchmal überhaupt nicht, erst nach 20-30 Minuten oder manchmal auch schon nach 30 Sekunden auftritt. Ich kann daher während eines "Versuches" nicht 100% sagen, ob es jetzt klappt oder nicht.

MFG

Komoluna

P.S.: Falls euch das hilft, kann ich ja mal das gesamte Projekt hochladen. Da ich aber absolut keine Ahnung habe, wo der Fehler liegt, wird es schwer sein den Fehler zu reproduzieren(Minimalbsp.).
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Failed To get Raw Image from Bitmap

Beitrag von theo »

Hast du schon mal eine andere Lazarus Version bzw. deinen Code auf Linux GTK2 oder QT getestet?
Könnte vllt. ganz erhellend sein, da andere Systeme manchmal krasser reagieren.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Failed To get Raw Image from Bitmap

Beitrag von Christian »

Merk dir mal die Adresse der Bitmap wärend du sicher bist das die noch gültig ist. Und vergleich die dann nachdem die Exception aufgetreten ist damit. Wenn die anders ist hast du irgendwo n Stack problem oder die Bitmap zwischenzeitlich gefreet.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten