Sorry für Doppelpost, aber ich habe nun festgestellt das alles daran wirklich nur die Element Liste verwaltung von Purebasic Schuld ist.
Ich habe deswegen mein Debug loging stark erweitert um den Fehler zu finden.
In den letzten Zeilen des Logs kann man folgendes lesen:
Code: Alles auswählen
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Ab hier ist das Loging unterbrochen - wegen absturz natürlich.
Hier die Code Zeilen im Programm:
Code: Alles auswählen
E_DebugLog("E_AddVertex", "Add vertex element.")
AddElement( E_Vertex() )
Der absturz tritt nur auf, wenn man zuvor E_DeleteSurface aufgeruft hat. Also wenn folgende Codezeilen ausgeführt wurden:
Code: Alles auswählen
E_DebugLog("E_DeleteSurface", "Delete Element.")
DeleteElement(E_Surface())
Jetzt nochmal ganz langsam: Wie verwaltet Purebasic intern die Element Liste? Was muss ich dabei beachten? Welche bekannte Bugs oder Merkwürdigkeiten sind davon bekannt?
Es kann doch nicht sein das eine andere LinkedList rumspinnt, weil ich eine andere gelöscht habe.
cu
Code: Alles auswählen
Log @ E_Init: Initalisiere OpenGL Fenster.
Log @ E_Init: Setze OpenGL optionen.
Log @ E_CreateTexturpack: Texturpack wurde erstellt. ID, 8450084.
Log @ E_CreateTexturpack: Texturpack wurde erstellt. ID, 8450296.
Log @ E_Init: Ok.
Log @ E_CreateTexturpack: Texturpack wurde erstellt. ID, 8450360.
Log @ E_LoadTexture_RGBA: samplemedia\testtex1.RGB wurde geöffnet, ID: 8450412
Log @ E_LoadTexture_RGBA: samplemedia\testtex2.RGB wurde geöffnet, ID: 8453132
Log @ E_CreateCube: Make Cube...
Log @ E_CreateCube: Make Wall 1
Log @ E_CreateSurface: -----------------------------
Log @ E_CreateSurface: Set Entity ...
Log @ E_CreateSurface: Save last Surface ...
Log @ E_CreateSurface: Add Element for Surface
Log @ E_CreateSurface: Set Entity Handle in the Surface
Log @ E_CreateSurface: Set next surface from last surface
Log @ E_CreateSurface: Set last Surface with this surface
Log @ E_CreateSurface: add surface counter
Log @ E_CreateSurface: Surface is Created - now give it back.
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_CreateCube: Make Wall 2
Log @ E_CreateSurface: -----------------------------
Log @ E_CreateSurface: Set Entity ...
Log @ E_CreateSurface: Save last Surface ...
Log @ E_CreateSurface: Add Element for Surface
Log @ E_CreateSurface: Set Entity Handle in the Surface
Log @ E_CreateSurface: Set next surface from last surface
Log @ E_CreateSurface: Set last Surface with this surface
Log @ E_CreateSurface: add surface counter
Log @ E_CreateSurface: Surface is Created - now give it back.
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_CreateCube: Make Wall 3
Log @ E_CreateSurface: -----------------------------
Log @ E_CreateSurface: Set Entity ...
Log @ E_CreateSurface: Save last Surface ...
Log @ E_CreateSurface: Add Element for Surface
Log @ E_CreateSurface: Set Entity Handle in the Surface
Log @ E_CreateSurface: Set next surface from last surface
Log @ E_CreateSurface: Set last Surface with this surface
Log @ E_CreateSurface: add surface counter
Log @ E_CreateSurface: Surface is Created - now give it back.
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_CreateCube: Make Wall 4
Log @ E_CreateSurface: -----------------------------
Log @ E_CreateSurface: Set Entity ...
Log @ E_CreateSurface: Save last Surface ...
Log @ E_CreateSurface: Add Element for Surface
Log @ E_CreateSurface: Set Entity Handle in the Surface
Log @ E_CreateSurface: Set next surface from last surface
Log @ E_CreateSurface: Set last Surface with this surface
Log @ E_CreateSurface: add surface counter
Log @ E_CreateSurface: Surface is Created - now give it back.
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_CreateCube: Make Wall 5
Log @ E_CreateSurface: -----------------------------
Log @ E_CreateSurface: Set Entity ...
Log @ E_CreateSurface: Save last Surface ...
Log @ E_CreateSurface: Add Element for Surface
Log @ E_CreateSurface: Set Entity Handle in the Surface
Log @ E_CreateSurface: Set next surface from last surface
Log @ E_CreateSurface: Set last Surface with this surface
Log @ E_CreateSurface: add surface counter
Log @ E_CreateSurface: Surface is Created - now give it back.
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_CreateCube: Make Wall 6
Log @ E_CreateSurface: -----------------------------
Log @ E_CreateSurface: Set Entity ...
Log @ E_CreateSurface: Save last Surface ...
Log @ E_CreateSurface: Add Element for Surface
Log @ E_CreateSurface: Set Entity Handle in the Surface
Log @ E_CreateSurface: Set next surface from last surface
Log @ E_CreateSurface: Set last Surface with this surface
Log @ E_CreateSurface: add surface counter
Log @ E_CreateSurface: Surface is Created - now give it back.
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.
Log @ E_AddVertex: Set properitys
Log @ E_AddVertex: Set LastVertex as next vertex
Log @ E_AddVertex: Set his as LastVertex
Log @ E_AddVertex: Add Vertices number...
Log @ E_AddVertex: Give vertice number back..
Log @ E_CreateCube: Delete Wall 4
Log @ E_DeleteSurface: -----------------------------
Log @ E_DeleteSurface: Set Surface ...
Log @ E_DeleteSurface: Delete Vertices
Log @ E_DeleteSurface: Quest: Have this Entity more Surfaces?
Log @ E_DeleteSurface: Answer: Yap.
Log @ E_DeleteSurface: Scan each Surface...
Log @ E_DeleteSurface: Jump on next Element for Scan.
Log @ E_DeleteSurface: When Surface as 'next' found, than Delete next Surface.
Log @ E_DeleteSurface: Save Act. Surface Element.
Log @ E_DeleteSurface: Jump on next Element.
Log @ E_DeleteSurface: Save his next Element.
Log @ E_DeleteSurface: Jump on prev Element (from Act.).
Log @ E_DeleteSurface: Set NextSurface from Prev. Surf. to the Overnext.
Log @ E_DeleteSurface: Delete Element.
Log @ E_DeleteSurface: Set Surface Counter -1
Log @ E_DeleteSurface: Set E_Surface on 0
Log @ E_DeleteSurface: End Delete
Log @ E_CreateCube: Make Cube...
Log @ E_CreateCube: Make Wall 1
Log @ E_CreateSurface: -----------------------------
Log @ E_CreateSurface: Set Entity ...
Log @ E_CreateSurface: Save last Surface ...
Log @ E_CreateSurface: Add Element for Surface
Log @ E_CreateSurface: Set Entity Handle in the Surface
Log @ E_CreateSurface: Set next surface from last surface
Log @ E_CreateSurface: Set last Surface with this surface
Log @ E_CreateSurface: add surface counter
Log @ E_CreateSurface: Surface is Created - now give it back.
Log @ E_AddVertex: Make a vertex... btw, set atm the Surface handle
Log @ E_AddVertex: Add vertex element.