Imagescollidefehler: Memory Access Violation trotz Debug o_O
Übersicht

![]() |
FetzeBetreff: Imagescollidefehler: Memory Access Violation trotz Debug o_O |
![]() Antworten mit Zitat ![]() |
---|---|---|
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? |
||
feiderehemals "Decelion" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielleicht existiert der Type an dieser Stelle nicht!
(Kein Type-Element da) Dan versucht BB au fnichts zuzugreifen! |
||
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab ich überprüft. Auch das Type-Element ist vorhanden. | ||
Kekskiller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kann ohne Debugmodus aber alles sein... Muss nichts hiermit zu tun haben. | ||
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tritt auch in 16 Bit auf, sowohl im Fenster- als auch im Vollbildmodus.
Ich hab ne Nvidia Geforce 6800 GT. Also relativ neu. |
||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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... ![]() verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/ |
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
...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? ![]() Gefällt mir nicht. Da der Fehler unlösbar zu sein scheint... was gibts denn für Alternativen? |
||
Jazoo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group