digitalmars.D - Error: Access Violation
- Ant (36/36) Nov 14 2004 I have this program that runs on linux but crashs on windows:
- Ant (4/6) Nov 14 2004 ok only crashs on glFrustum(),
- h3r3tic (4/16) Nov 14 2004 Now that is weird. glFrustum should be able to eat all kinds of params
- h3r3tic (4/48) Nov 14 2004 How about posting some more source ? e.g. the complete program that
- John Reimer (8/44) Nov 14 2004 No semicolon here either?
- h3r3tic (3/10) Nov 14 2004 Nope, that can't be the problem... also there's prinf instead of printf
- John Reimer (3/5) Nov 14 2004 Good point.
- Ant (6/15) Nov 14 2004 Sorry, guys, I did not copy/past it.
I have this program that runs on linux but crashs on windows: class A { bit mA() { prinf("entry A\n"); // calls to external C libs printf("exit A\n"); return true } } class B : A { bit mB() { prinf("entry B\n"); mA(); printf("exit B\n"); return true } } and this prints: entry B entry A exit A and crashes. It never reaches the printf just after the return from mA how can that be? Am I messing with the stack? The pure C examples that use my external calls run perfectly. There are no other threads running, wait, let me suspend the GC...no luck: same result. Ant PS this it OpenGL support for DUI on windows, seems only the simplest OpenGL progams will run on DUI windows :(
Nov 14 2004
On Sun, 14 Nov 2004 17:52:02 -0500, Ant wrote:I have this program that runs on linux but crashs on windows:ok only crashs on glFrustum(), so never mind is the gl thing that is to blaim, some how. Ant
Nov 14 2004
Ant wrote:On Sun, 14 Nov 2004 17:52:02 -0500, Ant wrote:Now that is weird. glFrustum should be able to eat all kinds of params given to it. if the function is loaded dynamically maybe the address or params are wrong... no more clues :/I have this program that runs on linux but crashs on windows:ok only crashs on glFrustum(), so never mind is the gl thing that is to blaim, some how. Ant
Nov 14 2004
Ant wrote:I have this program that runs on linux but crashs on windows: class A { bit mA() { prinf("entry A\n"); // calls to external C libs printf("exit A\n"); return true } } class B : A { bit mB() { prinf("entry B\n"); mA(); printf("exit B\n"); return true } } and this prints: entry B entry A exit A and crashes. It never reaches the printf just after the return from mA how can that be? Am I messing with the stack? The pure C examples that use my external calls run perfectly. There are no other threads running, wait, let me suspend the GC...no luck: same result. Ant PS this it OpenGL support for DUI on windows, seems only the simplest OpenGL progams will run on DUI windows :(How about posting some more source ? e.g. the complete program that crashes if that's possible. Or a minimal crashing program similar to this one of yours. I have a few opengl apps in D and they run fine...
Nov 14 2004
In article <pan.2004.11.14.22.52.02.426422 yahoo.ca>, Ant says...I have this program that runs on linux but crashs on windows: class A { bit mA() { prinf("entry A\n"); // calls to external C libs printf("exit A\n"); return true } }No semicolon after "return true"?class B : A { bit mB() { prinf("entry B\n"); mA(); printf("exit B\n"); return true } }No semicolon here either?and this prints: entry B entry A exit A and crashes. It never reaches the printf just after the return from mA how can that be? Am I messing with the stack? The pure C examples that use my external calls run perfectly. There are no other threads running, wait, let me suspend the GC...no luck: same result. Ant PS this it OpenGL support for DUI on windows, seems only the simplest OpenGL progams will run on DUI windows :(I don't know if the missing semicolons would cause the problem (or maybe it was just typed into the newsgroup post wrong). I would think that the D compiler would catch that... Later, John
Nov 14 2004
John Reimer wrote:I don't know if the missing semicolons would cause the problem (or maybe it was just typed into the newsgroup post wrong). I would think that the D compiler would catch that... Later, JohnNope, that can't be the problem... also there's prinf instead of printf so he didn't paste his code...
Nov 14 2004
In article <cn8p69$396$1 digitaldaemon.com>, h3r3tic says...Nope, that can't be the problem... also there's prinf instead of printf so he didn't paste his code...Good point. - John
Nov 14 2004
On Sun, 14 Nov 2004 23:27:16 +0000, John Reimer wrote:In article <cn8p69$396$1 digitaldaemon.com>, h3r3tic says...Sorry, guys, I did not copy/past it. I thought it would be easier to read D than my excuse for english. glFrustum() does not exist, it require parameters... AntNope, that can't be the problem... also there's prinf instead of printf so he didn't paste his code...Good point. - John
Nov 14 2004
here it is a copy past version, you gonna like it ;) funny thing is that "version=glFloat" fails but the "else" version is OK! OpenGL on DUI for windows might be just around the corner I'm blaiming DMD on this one also interesting to know that DUI OpenGL extensions never worked for windows and that's since version 0.70 or close. (BTW this D code is from converted the GtkGlExt examples and is GPL not LGPL.) have fun! (I should probably post this on the bugs group) bit resizeGL(EventConfigure event = null) { writefln("resizeGL 1"); GLfloat w = getWidth(); GLfloat h = getHeight(); double aspect; glViewport (0, 0, cast(int)w, cast(int)h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); writefln("w=%s h=%s",w,h); version(glFloat) { if (w <h) { aspect = w / h; glFrustum (-aspect, aspect, -1.0, 1.0, 5.0, 60.0); } else { aspect = h / w; glFrustum (-1.0, 1.0, -aspect, aspect, 5.0, 60.0); } } else { double a = h / w; glFrustum(-1.0,1.0, -a, a, 5.0, 60.0); } glMatrixMode (GL_MODELVIEW); writefln("resizeGL exit"); return true; } output for the good version with the non relevante lines tabed right: initGL 1 initGL exit configureFrame 1 configureFrame 2 resizeGL 1 w=300 h=300 resizeGL exit here configureFrame 3 configureFrame 4 configureFrame 5 configureFrame 8 configureFrame 9 initGL 1 initGL exit drawGL 1 drawGL exit Ant
Nov 14 2004
Ant wrote:here it is a copy past version, you gonna like it ;) funny thing is that "version=glFloat" fails but the "else" version is OK! OpenGL on DUI for windows might be just around the corner I'm blaiming DMD on this one also interesting to know that DUI OpenGL extensions never worked for windows and that's since version 0.70 or close. (...)Well, IMO this code is fine... my only guess of code that could crash the whole thing is that you define glFrustum as taking 6 floats (instead of doubles) when version(glFloat) is set... With this code I can't guess more... maybe if you posted your sources somewhere so that more people could compile and fight them, it could be solved... As for the moment, ensure that your glFrustum is defined as taking 6 doubles... No more ideas :( </h3>
Nov 15 2004
In article <cna2ap$21la$1 digitaldaemon.com>, h3r3tic says...Ant wrote:no, I created version glFloat just for posting. asptect use to be of type GLfloat (alias float GLfloat).here it is a copy past version, you gonna like it ;) funny thing is that "version=glFloat" fails but the "else" version is OK! OpenGL on DUI for windows might be just around the corner I'm blaiming DMD on this one also interesting to know that DUI OpenGL extensions never worked for windows and that's since version 0.70 or close. (...)Well, IMO this code is fine... my only guess of code that could crash the whole thing is that you define glFrustum as taking 6 floats (instead of doubles) when version(glFloat) is set...With this code I can't guess more... maybe if you posted your sources somewhere so that more people could compile and fight them, it could be solved...this is distributed with DUI since a early version. it runs fine on linux (which might be irrelevant for the windows version). http://cvs.sourceforge.net/viewcvs.py/dui/DUI/src/testGL/TestGL.d?view=markup shapesGL.d (as oposed to TestGL.d) contains the same piece of code but replacing it didn't solve the it. Seems to me then this problem runs depper. I'll have to go back on what I posted and declare the OpenGL is still not available for DUI on windows... the problem is to reduce it and remove dependencies on DUI and libgtkglext. and until that I can't be sure it isn't a problem with the gl extensions. AntAs for the moment, ensure that your glFrustum is defined as taking 6 doubles...glFrustum is all doubles. and there is only one defined so both version of the code should produce the same result...No more ideas :(thank you any way! Ant
Nov 15 2004