(win) Memory Access Violation in Release Mode
Monkey Forums/Monkey Programming/(win) Memory Access Violation in Release Mode
| ||
Hey guys, I am getting a MAV in Release Mode for the Desktop Target (glfw3). No error message or line number. Debug Builds work fine, as do Html5 builds. I have narrowed the error down to a code section using Print statements. The problem now is that it actually works after inserting Print statements. This leads me to believe there is an issue with memory alignment in c++ (as also suggested by Gerry Quinn here: http://www.monkey-x.com/Community/posts.php?topic=12342) I am using just a bit of custom c++ code, don't think that's the issue: GLFWwindow* getWindow() { return BBGlfwGame::GlfwGame()->GetGLFWwindow(); } class MouseWheelInfo { public: Float x; Float y; MouseWheelInfo() : x(0.0), y(0.0) {} }; MouseWheelInfo* wheelInfo; void scrollwheelCallback(GLFWwindow* window, double xoffset, double yoffset) { wheelInfo->x = Float(xoffset); wheelInfo->y = Float(yoffset); } void NativeInit() { GLFWwindow* window = getWindow(); glfwSetScrollCallback(window, &scrollwheelCallback); wheelInfo = new MouseWheelInfo(); } Float MouseZUnsafe() { if (wheelInfo != 0) { float z = wheelInfo->y; wheelInfo->y = 0.0; return z; } return 0.0; } bool SuperKey() { return glfwGetKey(getWindow(), GLFW_KEY_LEFT_SUPER) == GLFW_PRESS || glfwGetKey(getWindow(), GLFW_KEY_RIGHT_SUPER) == GLFW_PRESS; } bool AltKey() { return glfwGetKey(getWindow(), GLFW_KEY_LEFT_ALT) == GLFW_PRESS || glfwGetKey(getWindow(), GLFW_KEY_RIGHT_ALT) == GLFW_PRESS; } void ClipboardSet(String data) { glfwSetClipboardString(getWindow(), data.ToCString<char>()); } String ClipboardGet() { const char* s = glfwGetClipboardString(getWindow()); return String(s); } void ClipboardClear() { glfwSetClipboardString(getWindow(), ""); } void SeekMusic(int ms) { gxtkChannel *channel = &(gxtkAudio::audio->channels[32]); if (channel && channel->state == 1) { alSourcef(channel->source, AL_SEC_OFFSET, (float)(ms / 1000.0)); } } EDIT: Also I have used the x64dbg debugger, but couldn't find out much because I can't read assembly. But when it crashes, it shows "TileObjectData" as info, which is a class in my project. Here the relevant class: Class TileObjectData Extends Component Field collides:Bool Field look:String Field facing:Int = TILE_DOWN Field refName:String Field data:String Field type:Int = TYPE_NONE Const TYPE_NONE:Int = 0 Const TYPE_SCRIPT:Int = 1 Const TYPE_SCRIPT_REF:Int = 2 Const TYPE_SAVEPOINT:Int = 3 Const TYPE_SHIP:Int = 6 Const TYPE_DOCK:Int = 7 End Class Component Abstract Field entity:Entity Field active:Bool = True End Class Entity Field name:String Field attributes:StringMap<String> Field tags:Int Field position:Vec2 = New Vec2 Field scale:Vec2 = New Vec2(1.0, 1.0) Field rotation:Float Field visible:Bool = True End |
| ||
I "solved" this by using the Microsoft Compiler. |
| ||
I had an error like this. I fixed it by changing a method into a function. |