Vorsicht BUG beim Auflöungswechsel - Absturz.

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

StarGazer

Betreff: Vorsicht BUG beim Auflöungswechsel - Absturz.

BeitragSa, Apr 29, 2006 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, mir ist da ein ärgelicher Bug in BB aufgefallen, will es nur erwähnen,
falls andere auch das Problem haben, und nicht wissen warum.

Ich benutze BB3D, Ver1.96, warscheinlich kommt der Bug auch in BB2D vor.

Ich veränder sehr oft die größen der Dims. Wenn man das anscheinend bei zu vielen macht, kommt es dann beim Auflöungswechsel bei den Befehlen

EndGraphics()

Graphics3D x,x,x,x

zu einem Absturz.

Als ich dann be ider Fehlersuche den Bug eingegrenzt habe, und bei einigen Dims eine feste Größe vorgab, die ich dann nicht mehr verändert habe, kam es anschliessend beim Auflöungswechsel nicht mehr zum Absturz.

Das finde ich schade, und zugleich ärgelich, denn der Bug kommt nicht sovort, erst später. Man kann die Dims Anfangs problemlos verändern, doch irgendwann wird ihm das DimGrößenVerändern zuviel.
Grummel, nun muß ich viel in meinem Code ändern. Sad

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Apr 29, 2006 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Dims sind ja eigentlich auch nicht dafür gedacht in ihrer Größe ständig geändert zu werden.
 

Dreamora

BeitragSa, Apr 29, 2006 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnte es sein, dass du EndGraphics und danach Graphics machst und versuchst alte Bilder / Modelle / texturen zu zeichnen?

Weil mit EndGraphics werden alle Grafiken freigegeben. Sprich du musst alles komplett neu laden. (das geschieht auch wenn du nur Graphics machen würdest).

Ohne genaueres kann ich auf jeden Fall nicht bestätigen das dieser bug überhaupt existiert.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

StarGazer

BeitragSa, Apr 29, 2006 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne, ich hab schon alles richtig ( hoffe Smile ). Ich lösche sogar vorher selbstständig sicherheitshalber alle geladenen Daten, um sie nach dem Auflöungswechsel wieder neu zu laden, aber soweit kommt es ja garnicht.
Es wird nicht auf irgend eine Grafik zugegriffen die es nicht mehr gibt. Der Absturz kommt, nachdem ich alle aus dem Speicher gelöscht habe.
Dann rufe ich " EndGraphics() " kommt zu Absturz
Ich habe auch " EndGraphics() " auskommentiert ; EndGraphics()
damit sovort das " Graphics3D x,x,x,x " aufgerufen wird, aber auch Absturz.

Und wie ich schon schrieb, wenn ich die Dim-Größen nicht veränder, dann kommt es nicht mehr zum Absturz.
BB verkraftet es wohl nicht wenn man die Dims zu oft verändert. Anfangs geht es ja, bei ein paar, hat aber zu viele die man ändert, kommt es jedenfalls beim Auflöungswechsel zum Absturz.
 

FBI-blitz

BeitragSa, Apr 29, 2006 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
könntest du mal den code posten?

Haste es schon mal mit "stop" probiert? Also vlt. einfach mal eines einbauen und gucken wo der genau abstürzt (Wenn der debugger das nicht sowieso schon zeigt)

StarGazer

BeitragDi, Mai 02, 2006 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Dafür ist der Code viel zu groß, und ich habe es auch mit "stop" alles ausgetestet.
Der Debugger zeigt da nix an, es kommt zu einen HardAbsturz, BlitzBasic hängt sich einfach auf, und gibt ne SpeicherfehlerMeldung ab.
"Memory access violation"

Ich wollte auch nur hier mal davor warnen, damit nicht anderen es gleich ergeht, und sie ihren ganzen Code umändern müssen.

Hip Teen

BeitragDi, Mai 02, 2006 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal: Die "Dims" nennt man Arrays.

Aber hier sieht man wieder was passiert, wenn man programmieren ohne den technischen Background erklärt bekommt. Ist halt der Nachteil einer Sprache, die entfernter von der Maschine ist.
Nun, durch zu häufiges redimensionieren fragmentierst du den Speicher. Das ganze ist stärker, je größere Arrays und vor allem von der größe verschiedene Arrays man schreiben will. Irgendwann kann BB kein entsprechendes Array mehr schreiben (wenn es zu groß wird), weil im Arbeitsspeicher kein Block vorhanden ist, der groß genug ist. Tja, dann gibts einen Schreibfehler und BB kollabiert. Hab mal einen Testcode dafür geschrieben. Falls jemand interessiert, wie der Fehler aussieht Wink
Code: [AUSKLAPPEN]
For I = 1 To 10000
   Dim blub (rand(1000),rand(1000),rand(1000))
Next


Ernsthafter Tipp: Überdenk noch mal den Sinn und Zweck von Arrays. Er ist es jedenfalls nicht, diese dauernd in der Größe zu verändern. Nicht umsonst sind sie statisch.
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

Markus2

Betreff: Beitragsüberschrift

BeitragMi, Mai 03, 2006 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Was mich immer son bischen stört das BB immer alles Schuld sein soll .
Denke doch mal drüber nach wie viele Faktoren es gibt und was alles
dazwischen hängt damit alles zusammen einwandfrei läuft .
Ihr tut immer so als BB ein komplettes Betriebsystem ist mit
perfekten Treibern und Hardware und ihr keine Fehler in der
Programmierung macht .

StarGazer

BeitragDo, Mai 04, 2006 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Hip Teen
Danke, das ist gut zu wissen.
Da werde ich wohl lieber meinen ganzen Code durchforsten und sicherhaltshaber korregieren. Das wird viel Sad
Aber hauptsache keine Abstürze mehr.

Einen Technischen Background habe ich nicht wirklich. Habe erst seid kurzem den Spaß am programmieren gefunden.





Ich wollte keineswegs BB niedermachen. Ich finde es ist eine super teil.
Nur da ich dachte es wäre ein Bug, wollte ich es nur mal erwähnen, falls andere auch das gleich Problem haben, oder sie davor warnen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group