@Caras
Quote:
I did get a few crashes that the GR caught and was able to generate a stack trace. They were in glDeleteBuffers(). I assume I passed in a value that wasn't a valid buffer, but after much looking can't see how.
...
I took a quick look at the spot in the W3DN_SI driver listed in the stack trace, and it looks very much like an attempt to destroy a buffer that doesn't exist (so a stale/corrupt pointer). It's crashing at a FreeVecPooled() call, and there's actually a NULL pointer check in there. This suggests that the VBO in question has been freed and the memory reused before an attempt is made to free it again. Either that, or something's trashing memory and managed to corrupt that pointer.
@salass00
Quote:
Have you reported these findings to Hans de Ruiter who is the developer of Warp3D Nova?
It might be a bug in the W3DN_SI driver or Warp3D Nova itself or the ogles2 wrapper.
I certainly want people to report potential bugs. However, please make an effort to figure out if it's your own code, the GLES2 wrapper or Warp3D Nova first. I don't have time to be the "general graphics bug tracker."
The reason I'm saying this is because I've been sent far too many invalid bug reports in the past, and ended up debugging other people's code.** "It works on Linux/Windows" is
not enough. When I was working on MiniGL I saw code that had uninitialised variable and/or array overrun bugs. They only worked on Linux/Windows because those OSes zero all memory before allocation. AmigaOS doesn't, and so is less forgiving for such bugs.
Likewise, AmigaOS does
not have automatic stack extension, so we can still get data corruption caused by stack overflows. That can be checked fairly easily by allocating a ridiculously large stack before starting the game/app in question (start from a shell window, and use the stack command). If that solves the problem, then a stack cookie is needed.
If, after checking, you still think it's likely a driver bug, then please report it at
http://amigadeveloper.com/bugreports/.
Hans