Imagescollidefehler: Memory Access Violation trotz Debug o_O

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Fetze

Betreff: Imagescollidefehler: Memory Access Violation trotz Debug o_O

BeitragSo, Feb 06, 2005 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

War letztens schonmal hier wegen meines Imagescollide-Fehlers. Ich hab mich aber danach nicht mehr weiter drum gekümmert, da ich davon ausgegangen bin, dass es ein Hardwarespezifischer Fehler sein muss, vor allem, da er nur bei mir in so großem Maße auftritt. Er ist nämlich nicht reproduzierbar und sein Auftreten variiert mit dem Pc auf dem getestet wird.
Also, hier ist das Problem:

Code: [AUSKLAPPEN]

If ImagesCollide(waffeimage(shot\typ,shot\gfxschritt,pictemp2),shot\xpos#+xmap,shot\ypos#+ymap,0,schiff(schifftyp(stemp),pictemp),x#(stemp)+xmap,y#(stemp)+ymap,0) Then


In dieser Zeile tritt der nicht reproduzierbare Fehler hin und wieder auf. EInfach so. Das seltsame ist, dass er mir auch im Debugmodus nur Memory Access Violation meldet. Logische Schlussfolgerung von mir war, dass einer der Parameter ausserhalb des zulässigen bereichs liegt. Beispielsweise wird ein Array mit falschen Daten gefüttert und produziert eine tolle "0" als Speicherposition des bildes. Also hab ich folgende 3 Zeilen davor eingefügt.

Code: [AUSKLAPPEN]

If waffeimage(shot\typ,shot\gfxschritt,pictemp2)=0 Then DebugLog "Shot_Ship_Collision("+stemp+") - Error!" : Return 0
               If shot\typ=0 Or shot\gfxschritt>gfxschritte(shot\typ) Or shot\gfxschritt<1 Or pictemp2<0 Or pictemp2>71 Or schifftyp(stemp)=0 Or pictemp<0 Or pictemp>71 Then DebugLog "Shot_Ship_Collision("+stemp+") - Error!" : Return 0
               If schiff(schifftyp(stemp),pictemp)=0 Then DebugLog "Shot_Ship_Collision("+stemp+") - Error!" : Return 0


Diese 3 Zeilen sorgen dafür, dass wenn einer der Parameter den zulässigen Bereich verlässt, die Function vorzeitig beendet wird. Die erste und die letzte der 3 Zeilen prüfen, ob eins der Arrays eine 0 zurückliefert.
Theoretisch sollte damit der Fehler behoben sein - dachte ich.

Er tritt aber weiterhin auf. Selbe Zeile, selbe Fehlermeldung, nicht reproduzierbar. Alle Parameter sind im grünen Bereich.

Woran könnte das liegen?
 

feider

ehemals "Decelion"

BeitragSo, Feb 06, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht existiert der Type an dieser Stelle nicht!
(Kein Type-Element da)
Dan versucht BB au fnichts zuzugreifen!

Fetze

BeitragSo, Feb 06, 2005 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich überprüft. Auch das Type-Element ist vorhanden.
 

Kekskiller

BeitragSo, Feb 06, 2005 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wahrscheinlich etwas OT:
Vielleicht entdeckst du dort was, wenn du die Zeile mal reduzierst/teilst,
denn bei mir gab es schon desöfteren menschliches Versagen, da ich versuchte,
dort ein paar Fehler zu entdecken Wink ...

Fetze

BeitragSo, Feb 06, 2005 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Tip, aber die einzelnen Parameter hab ich bereits geprüft. Sie sind in Ordnung.

Edit:
Wie sehen Speicheradressen eigentlich so aus?
Hatte beim letzten Fehler gerade von Bild 1 239680840 und von Bild 2 59177440. Wobei die Zahl bei Bild 2 eine Stelle weniger hat. Hat das vielleicht irgendwas zu sagen? o_O
 

Black

BeitragSo, Feb 06, 2005 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee, die Speicherreservierungen werden ganz willkürlich von Windows im virtuellen 32-Bit Adressraum verteilt, dh. solange eine Adresse nicht explizit 0 ist, kann man nichts über deren Gültigkeit sagen.
 

Jazoo

BeitragSo, Feb 06, 2005 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
lol !!!

Der gleich Fehler tritt bei mir auch manchmal auf !!!

Wenn ich das bei mir eingebe :

Code: [AUSKLAPPEN]
frametime = CreateTimer (25)

.
.
.
.
 ; Und dann in der haubtschleife das angabe :
WaitTimer(frametimer)


Ich hab auch keine ahnung warum das immer kommt !!!!
Ich lass es dann meistens weg und es lauft normal .

Fetze

BeitragSo, Feb 06, 2005 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider kann ich diese Überprüfung nicht weglassen, da sie elementarer Bestandteil des SPiels ist...

Irgendwie muss man das doch lösen können?
Was ist da denn überhaupt das Problem?
 

Jazoo

BeitragSo, Feb 06, 2005 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Fetze hat Folgendes geschrieben:
Leider kann ich diese Überprüfung nicht weglassen, da sie elementarer Bestandteil des SPiels ist...

Irgendwie muss man das doch lösen können?
Was ist da denn überhaupt das Problem?


Ich hab das auch schon bei CS2D festgestellt !!!!
Vor ein par Tagen lief es noch aber jetzt kommt auch dieser fehler .

Fetze

BeitragSo, Feb 06, 2005 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kann ohne Debugmodus aber alles sein... Muss nichts hiermit zu tun haben.

Fetze

BeitragSo, Feb 06, 2005 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab noch ein paar Tests gemacht.
Bei ImagesOverlap gibt es keinen Fehler, bei ImageRectCollide aber schon, dabei ist es egal, welches der beiden Bilder ich durch ein 1 mal 1 Pixel-Rechteck ersetze. Irgendetwas grundsätzliches scheint da schief zu laufen. Eventuell brauche ich eine Alternative Kollisionsüberprüfung. Gibts da irgendwie ne DLL oder sowas? Pixelgenau müsste es schon sein und das mindestens so schnell wie die BB-Interne Imagescollide-Funktion, was eine Userlib oder ein Include ausschließt, da die meistens langsamer sind als C-DLLs. Also: Gibts da irgendwo so ne DLL?

Ctuchik

BeitragSo, Feb 06, 2005 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Was hast du für ne Grafikkarte?
Versuch mal mit 16-Bit Farbtiefer im Fenstermodus oder wenn der Fehler da auch auftrittt mit 16-Bit im Vollbildmodus!
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Fetze

BeitragSo, Feb 06, 2005 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Tritt auch in 16 Bit auf, sowohl im Fenster- als auch im Vollbildmodus.
Ich hab ne Nvidia Geforce 6800 GT. Also relativ neu.

Ctuchik

BeitragMo, Feb 07, 2005 0:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, weil ich denk dass BB probleme mit neueren grakas hat! (hab selbst ne Geforce 6800 LE)
Beispiel: Das Spiel von Waveblue (Bubbleshooter oder so) erzeugte bei mir genau den selben Fehler!
Es ging dann in 16-Bit und Fenstermodus!
Wenns bei dir so nicht geht weiss ich dann auch nix mehr Sad
Is halt ein Bug denke ich!
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Fetze

BeitragMo, Feb 07, 2005 1:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm. Gibts Pixelgenaue, schnelle Alternativen zu Imagescollide? Am besten in ner DLL oder so. Von mir aus würdich auch alle Grafikbefehle komplett austauschen und 2D reicht mir völlig.
 

Jazoo

BeitragMo, Feb 07, 2005 9:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ctuchik hat Folgendes geschrieben:
ja, weil ich denk dass BB probleme mit neueren grakas hat! (hab selbst ne Geforce 6800 LE)
Beispiel: Das Spiel von Waveblue (Bubbleshooter oder so) erzeugte bei mir genau den selben Fehler!
Es ging dann in 16-Bit und Fenstermodus!
Wenns bei dir so nicht geht weiss ich dann auch nix mehr Sad
Is halt ein Bug denke ich!


Also ich habe ne 5 Jahre alt Grafikkarte und da kommt der Fehler auch !
Aber ich glaub das ligt daran weil man noch so ne DLL braucht .

PS: Denn bei mir kommt der fehler seit dem ich ausversehen ne DLL gelöscht habe .

Ebola33

BeitragMo, Feb 07, 2005 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiss das gehört jetzt eigentlich nicht in diesen thread aber ich glaube das hängt wirklich mit neuer hardware zusammen. Ich kann z.B. das golfspiel von hot-bit(contest) nicht spielen weil es sofort beim start abbricht.(mav)
6800le/2,4ghz.
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/

Fetze

BeitragMo, Feb 07, 2005 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
...und da gibts keinen Patch zu oder sowas?!
Das kann doch wohl nich sein. Da programmiere ich 2 Jahre an StarTrade und dann scheitert es an neuer Hardware? Confused
Gefällt mir nicht.


Da der Fehler unlösbar zu sein scheint... was gibts denn für Alternativen?
 

Jazoo

BeitragDi, Feb 08, 2005 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaub nicht das , dass an der Hardware liegt !
Denn bei mir kommt der fehler auch und mein PC ist 5 Jahre alt .

MfG
Jazoo
 

Dreamora

BeitragDi, Feb 08, 2005 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem liegt weniger an der Hardware als an den Treibern die mehr und mehr DX7 inkompatibel werden, da sie auf Performance und DX9 optimiert werden. ( siehe Antialias das schon seit geraumer Zeit nimmer funzt )

Freue mich schon auf WGF, da dürfte das Chaos sicher noch grösser werden ... wobei einen Vorteil hats: Endlich keine Absturzprobleme mehr auf Win98 und ME, da sie garnet erst unterstützt werden.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group