ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4421437
Jetzt (Chat):
4 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
OpenGL API + SDL
Re: [SDL] IMG_Load verursacht abstürze
Normal
AutorThema
RedEagle Offline
ZFX'ler


Registriert seit:
06.05.2005

Nordrhein-Westfalen
339790414
[SDL] IMG_Load verursacht abstürzeNach oben.
Hi
Ich habe folgenden Code:
Code:
void RAW_BUTTON_CLASS::SetPicture(const char *filename)
{
 if(this->icon != NULL)
 {
  SDL_FreeSurface(this->icon);
  this->icon = NULL;
 }

 this->icon = IMG_Load(filename);
 if(this->icon == NULL)
 {
  /**/printf(\"[%s] %s: %i: %s\n\",\"error\",__FILE__,__LINE__, IMG_GetError());
 }
}


Dieser Code hat schon monate problemlos funktioniert, doch plötzlich verursacht IMG_Load (lt Debugger) regelmäßig einen Abstruz.
filename ist ein relativer Pfad zu einer .png ("./pix/buttons/horizontal.png"). Diese Datei existiert auch IMMER.

Debugger: "Program received signal SIGABRT, Aborted."
Code:
*** glibc detected *** /home/RedEagle/Projekte/SGT2/bin/Debug/SGT2: malloc(): memory corruption: 0x08252bf8 ***


der call-stack ab IMG_Load:
Code:
#0 0xffffe430    __kernel_vsyscall() (??:??)
#1 0xb71c9900    raise() (/lib/libc.so.6:??)
#2 0xb71cb238    abort() (/lib/libc.so.6:??)
#3 0xb720510d    ??() (/lib/libc.so.6:??)
#4 0xb720afc4    ??() (/lib/libc.so.6:??)
#5 0xb720d6aa    ??() (/lib/libc.so.6:??)
#6 0xb720f11c    malloc() (/lib/libc.so.6:??)
#7 0xb6f27348    ??() (/usr/lib/libpng12.so.0:??)
#8 0xb6f1c195    png_create_read_struct_2() (/usr/lib/libpng12.so.0:??)
#9 0xb6f1c55a    png_create_read_struct() (/usr/lib/libpng12.so.0:??)
#10 0xb740ce1d    IMG_LoadPNG_RW() (/usr/lib/libSDL_image-1.2.so.0:??)
#11 0xb7408e67    IMG_LoadTyped_RW() (/usr/lib/libSDL_image-1.2.so.0:??)
#12 0xb7408f93    IMG_Load() (/usr/lib/libSDL_image-1.2.so.0:??)


System: OpenSuSE 11.0 (x86)
Linux: 2.6.25 (i686/pae)
IDE: Code::Blocks 8.02
SDL: 1.2.13
g++: 4.3.1

Wo könnte das Problem liegen?


3 Mal gendert, zuletzt am 13.02.2009, 15:18:36 Uhr von RedEagle.
13.02.2009, 15:15:07 Uhr
RedEagle-Software
RedEagle Offline
ZFX'ler


Registriert seit:
06.05.2005

Nordrhein-Westfalen
339790414
Re: [SDL] IMG_Load verursacht abstürzeNach oben.
Scheinbar hat Code::Blocks da mist gebaut >:( - nach einem rebuild des gesammten Projektes scheint es jetzt wieder zu Funktionieren...

Thread kann geschlossen/löscht werden.

1 Mal gendert, zuletzt am 13.02.2009, 15:38:58 Uhr von RedEagle.
13.02.2009, 15:38:46 Uhr
RedEagle-Software
yonibear Offline
ZFX'ler


Registriert seit:
04.02.2006

Hessen
171876359 jonathan_sieber@yahoo.de jonathan_sieber
Re: [SDL] IMG_Load verursacht abstürzeNach oben.
Vielleicht noch ein kleiner Hinweis, falls das Problem wieder auftaucht:

Dieser Fehler taucht auf, wenn die glibc eine memory corruption feststellt. Die Implementation von malloc() speichert zwischen den allokierten Speicherblöcken Informationen, die sie zur effizienten Verwaltungs des Heaps braucht. Dabei prüft sie recht penibel, ob diese Daten noch in einem sinnvollem Zustand sind. Ist das nicht der Fall, hast du wahrscheinlich irgendwo einen heap overflow, also beschreibst ein vorher allokierst Stück Speicher über seine Größe hinaus. Es ist also nicht unwahrscheinlich, dass das eigentliche Problem noch existiert, aber im Moment zufällig nicht von malloc erkannt wird.
Ich würde dir empfehlen dein Programm mal mit dem valgrind-tool memcheck durchzugehen, das ist im allgemeinen ein super Tool um solche fiesen Speicherzugriffsfehler zu finden.
20.02.2009, 23:22:59 Uhr
Blobby Volley 2
Kimmi Offline
ZFX'ler


Registriert seit:
10.10.2002

Schleswig-Holstein
93425079
Re: [SDL] IMG_Load verursacht abstürzeNach oben.
Solche Effekte hatte ich gern auch bei nicht '\0'-terminierten Strings für den Load-Call. Vielleicht hilft ein std::string statt const char*, falls das nochmal auftritt.

Gruß Kimmi
21.02.2009, 11:05:18 Uhr
Kurzer Weblog
Normal


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel