KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: PSP stürzt ab beim Laden der EBOOT
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Edit: Habe gerade gesehen, dass die PSP nicht abstürzt, da sich wärend des schwarzen Screens noch der Home-Button drücken lässt. Allerdings macht das HB nicht weiter und der Code, der anscheint das ganze auslöst, wird beim Starten des HBs garnicht aufgerufen.
Edit: Stürzt doch ab, war nur weil ich PSPlink an hatte Big Grin


Ich verstehe es nicht, ich glaube, dass die PSP mich einfach nur ärgern will Sad

Folgendes:

In meinem Code wird eine Mapdatei eingelesen, allerdings erst, wenn man das Level startet, dies ist aber beim Laden des Spiels nicht der Fall, da man dann noch im Hauptmenu ist.

Hier ein Teil aus dem Maploader:

Code:
if(Rmb[mbid].dir == 0)
                {
                    Rmb[mbid].max_low = Rmb[mbid].x - Rmb[mbid].mrad * 22 * wpx;
                    Rmb[mbid].max_high = Rmb[mbid].x + Rmb[mbid].mrad * 22 * wpx;
                }


Das stürzt ab, aber wenn ich an dieser Stelle die IF-Abfrage rausnehme, dann funktiert es. Rmb[mbid].dir ist ein Integer.


PSPLink sagt folgendes:

Code:
host0:/> Loading all modules ... Ready
Exception - Syscall
Thread ID - 0x04760867
Th Name   - user_main
Module ID - 0x0476900B
Mod Name  - "Evil Monkey"
EPC       - 0x0891AF2C
Cause     - 0x90000020
BadVAddr  - 0xA5494C54
Status    - 0x20088613
zr:0x00000000 at:0xDEADBEEF v0:0x08930000 v1:0x00000000
a0:0x0000005C a1:0x00000000 a2:0x4893494C a3:0x08930000
t0:0xDEADBEEF t1:0xDEADBEEF t2:0xDEADBEEF t3:0xDEADBEEF
t4:0xDEADBEEF t5:0xDEADBEEF t6:0xDEADBEEF t7:0xDEADBEEF
s0:0x08930000 s1:0x09FBFE34 s2:0x08920000 s3:0x08920000
s4:0x08920000 s5:0x00000013 s6:0xDEADBEEF s7:0xDEADBEEF
t8:0xDEADBEEF t9:0xDEADBEEF k0:0x09FBFF00 k1:0x00000000
gp:0x08927450 sp:0x09FBFE08 fp:0x09FBFEA0 ra:0x089017C4
0x0891AF2C: 0x03E00008 '....' - jr         $ra


Kenne mich damit nicht so wirklich aus aber im letzten Teil versucht er doch mit dem MIPS CMD jr (jump register) zu $ra (0x089017C4) zu springen und das klappt anscheint nicht. Aber was hat das mit der IF-Abfrage zu tun?? Oder hat der Kompiler einen seltenen Fehler?

Edit: Kann es sein, dass das ein Buffer overflow ist?

Arktos :
Edit: Habe gerade gesehen, dass die PSP nicht abstürzt, da sich wärend des schwarzen Screens noch der Home-Button drücken lässt. Allerdings macht das HB nicht weiter und der Code, der anscheint das ganze auslöst, wird beim Starten des HBs garnicht aufgerufen.
Edit: Stürzt doch ab, war nur weil ich PSPlink an hatte Big Grin


Ich verstehe es nicht, ich glaube, dass die PSP mich einfach nur ärgern will Sad

Folgendes:

In meinem Code wird eine Mapdatei eingelesen, allerdings erst, wenn man das Level startet, dies ist aber beim Laden des Spiels nicht der Fall, da man dann noch im Hauptmenu ist.

Hier ein Teil aus dem Maploader:

Code:
if(Rmb[mbid].dir == 0)
                {
                    Rmb[mbid].max_low = Rmb[mbid].x - Rmb[mbid].mrad * 22 * wpx;
                    Rmb[mbid].max_high = Rmb[mbid].x + Rmb[mbid].mrad * 22 * wpx;
                }


Das stürzt ab, aber wenn ich an dieser Stelle die IF-Abfrage rausnehme, dann funktiert es. Rmb[mbid].dir ist ein Integer.


PSPLink sagt folgendes:

Code:
host0:/> Loading all modules ... Ready
Exception - Syscall
Thread ID - 0x04760867
Th Name   - user_main
Module ID - 0x0476900B
Mod Name  - "Evil Monkey"
EPC       - 0x0891AF2C
Cause     - 0x90000020
BadVAddr  - 0xA5494C54
Status    - 0x20088613
zr:0x00000000 at:0xDEADBEEF v0:0x08930000 v1:0x00000000
a0:0x0000005C a1:0x00000000 a2:0x4893494C a3:0x08930000
t0:0xDEADBEEF t1:0xDEADBEEF t2:0xDEADBEEF t3:0xDEADBEEF
t4:0xDEADBEEF t5:0xDEADBEEF t6:0xDEADBEEF t7:0xDEADBEEF
s0:0x08930000 s1:0x09FBFE34 s2:0x08920000 s3:0x08920000
s4:0x08920000 s5:0x00000013 s6:0xDEADBEEF s7:0xDEADBEEF
t8:0xDEADBEEF t9:0xDEADBEEF k0:0x09FBFF00 k1:0x00000000
gp:0x08927450 sp:0x09FBFE08 fp:0x09FBFEA0 ra:0x089017C4
0x0891AF2C: 0x03E00008 '....' - jr         $ra


Kenne mich damit nicht so wirklich aus aber im letzten Teil versucht er doch mit dem MIPS CMD jr (jump register) zu $ra (0x089017C4) zu springen und das klappt anscheint nicht. Aber was hat das mit der IF-Abfrage zu tun?? Oder hat der Kompiler einen seltenen Fehler?

Edit: Kann es sein, dass das ein Buffer overflow ist?


wenn du den code der gesamten function postest,dann kann dir sicher besser geholfen werden.

ardi

Ok, ich update mal mein SVN Repository. Ich nahm jetzt an, dass es wegen der Stelle kam, weil wenn ich das ohne IF dahin schreibe, es dann funktioniert.

http://code.google.com/p/evil-monkey-psp/source/checkout

-> file: loadmap.cpp

Arktos :
Ok, ich update mal mein SVN Repository. Ich nahm jetzt an, dass es wegen der Stelle kam, weil wenn ich das ohne IF dahin schreibe, es dann funktioniert.

http://code.google.com/p/evil-monkey-psp/source/checkout

-> file: loadmap.cpp


Das "if" macht nichts schlimmes.

Möglicher weise ist es doch ein Stackoverflow.

Code:
char *lines[512];

schluckt schon allein 2 kByte. versuchs mal testweise mit:

Code:
static char *lines[512];


Außerdem ist mir aufgefallen, das du "index" nicht auf 511 begrenzt. Der "lines"-Buffer könnte überlaufen
Ich würde den Teil:

Code:
while(token != NULL)
   {
        lines[index] = token; index++;
        token = strtok(NULL,"\n");
   }

so machen:

Code:
for(index<512 && token != NULL; index++)
   {
        lines[index] = token;
        token = strtok(NULL,"\n");
   }

oder so:

Code:
while(token != NULL)
   {
        if(index == 512) mcError("Error: mapfile mora as 512 Lines");
        lines[index] = token; index++;
        token = strtok(NULL,"\n");
   }

ardi

Crasht auch. Liegt nicht daran, denn die aktuelle Mapdatei hat nur 40 Zeilen.
Aber irgentwo läuft was über, weil die ReturnAdresse ($ra) anscheint falsch ist oder der Kompiler hat ein Leck oder was weis ich.
Referenz-URLs