Re: Strange segfault (Derelict/OpenGL)

2014-08-30 Thread Robin Schroer via Digitalmars-d-learn

On Friday, 29 August 2014 at 15:20:00 UTC, Mike Parker wrote:
As the README in Derelict 3 points out, that project is no 
longer updated. You should be using the binding from the 
DerelictOrg project [1] for anything new.


[1] https://github.com/DerelictOrg/



stitch


On 8/29/2014 9:16 PM, Robin Schroer wrote:

On Friday, 29 August 2014 at 11:51:47 UTC, Marc Schütz wrote:


display.Display.render() is what tries to render the triangle 
using a

glBegin-block.


Some code would be helpful. My first thought is that you aren't 
loading properly. DerelictGL3 does not load deprecated 
functions, but you're trying to call a deprecated function. Are 
you loading DerelictGL or DerelictGL3?




So, I dug around a lot. I am using DerelictOrg, sorry if this was 
unclear, I was under the impression that it is still version 3. 
But anyway, I found out that some of my GL code is actually 
refering to null pointers because I have been using deprecated 
functions. So I am able to establish an OpenGL 3.3 context 
without crashing (although my test does not render yet, but that 
is another problem).


Thank you to everyone nudging me in the right direction.

--

Robin Schroer


Re: Strange segfault (Derelict/OpenGL)

2014-08-30 Thread Mike Parker via Digitalmars-d-learn

On 8/30/2014 11:12 PM, Robin Schroer wrote:



Some code would be helpful. My first thought is that you aren't
loading properly. DerelictGL3 does not load deprecated functions, but
you're trying to call a deprecated function. Are you loading
DerelictGL or DerelictGL3?



So, I dug around a lot. I am using DerelictOrg, sorry if this was
unclear, I was under the impression that it is still version 3. But
anyway, I found out that some of my GL code is actually refering to null
pointers because I have been using deprecated functions. So I am able to
establish an OpenGL 3.3 context without crashing (although my test does
not render yet, but that is another problem).

Thank you to everyone nudging me in the right direction.



FYI, if you need the deprecated stuff it's all there.

```
// Modern GL only
// import derelict.opengl3.gl3;

// All of it, including the deprecated stuff
import derelict.opengl3.gl;

void loadGL() {
   DerelictGL.load();
   DerelictGL.reload(); // Assuming a context is already created
}
```

DerelictGL extends DerelictGL3, so it loads everything.


---
This email is free from viruses and malware because avast! Antivirus protection 
is active.
http://www.avast.com



Strange segfault (Derelict/OpenGL)

2014-08-29 Thread Robin Schroer via Digitalmars-d-learn

I'm not entirely sure where to post, so I will put it here.

I'm playing around with D and Derelict 3 to make something with 
OpenGL (don't really know what yet). I managed to open a window, 
add an OpenGL context, clear the screen and flip buffers. But as 
soon as I try to render a triangle, my program crashes. I already 
tried hardcoding values in the shaders to rule them out. I end up 
with:


Error executing command run: Program exited with code -11

Upon running with gdb, I get:

Program received signal SIGSEGV, Segmentation fault.
0x in ?? ()

which is not really helpful to me.

dub -v's output:

[...]

Full exception: 
object.Exception@source/dub/generators/build.d(405): Program 
exited with code -11


dub(pure @safe bool std.exception.enforce!(bool).enforce(bool, 
lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x67346f]
dub(void 
dub.generators.build.BuildGenerator.runTarget(dub.internal.vibecompat.inet.path.Path, 
const(dub.compilers.compiler.BuildSettings), 
immutable(char)[][])+0x4dc) [0x62db70]
dub(void 
dub.generators.build.BuildGenerator.generateTargets(dub.generators.generator.GeneratorSettings, 
const(dub.generators.generator.ProjectGenerator.TargetInfo[immutable(char)[]]))+0x231) 
[0x62a75d]
dub(void 
dub.generators.generator.ProjectGenerator.generate(dub.generators.generator.GeneratorSettings)+0x2de) 
[0x62f9a2]
dub(void dub.dub.Dub.generateProject(immutable(char)[], 
dub.generators.generator.GeneratorSettings)+0xaa) [0x5f1f46]
dub(int dub.commandline.GenerateCommand.execute(dub.dub.Dub, 
immutable(char)[][], immutable(char)[][])+0x677) [0x5e5b6b]
dub(int dub.commandline.BuildCommand.execute(dub.dub.Dub, 
immutable(char)[][], immutable(char)[][])+0x8d) [0x5e5e81]
dub(int dub.commandline.RunCommand.execute(dub.dub.Dub, 
immutable(char)[][], immutable(char)[][])+0x8d) [0x5e6041]
dub(int 
dub.commandline.runDubCommandLine(immutable(char)[][])+0x1211) 
[0x5e3b8d]

dub(_Dmain+0x20) [0x5e2334]
dub(void rt.dmain2._d_run_main(int, char**, extern (C) int 
function(char[][])*).runAll().void __lambda1()+0x18) [0x6ce504]
dub(void rt.dmain2._d_run_main(int, char**, extern (C) int 
function(char[][])*).tryExec(scope void delegate())+0x2a) 
[0x6ce45e]
dub(void rt.dmain2._d_run_main(int, char**, extern (C) int 
function(char[][])*).runAll()+0x30) [0x6ce4c4]
dub(void rt.dmain2._d_run_main(int, char**, extern (C) int 
function(char[][])*).tryExec(scope void delegate())+0x2a) 
[0x6ce45e]

dub(_d_run_main+0x1a3) [0x6ce3df]
dub(main+0x25) [0x5e2979]
/lib64/libc.so.6(__libc_start_main+0xf5) [0x3dcae21d65]

I am using the current master versions of Derelict, dub 0.9.21, 
dmd v2.066.0, on Linux 3.15.7 x86_64


I can post my source if needed, but it is quite a lot already. 
I'm not really sure if it is my fault or a bug in Derelict or 
dmd, hopefully someone is able to track this down.


--

Robin Schroer


Re: Strange segfault (Derelict/OpenGL)

2014-08-29 Thread John Colvin via Digitalmars-d-learn

On Friday, 29 August 2014 at 11:23:34 UTC, Robin Schroer wrote:

I'm not entirely sure where to post, so I will put it here.

I'm playing around with D and Derelict 3 to make something with 
OpenGL (don't really know what yet). I managed to open a 
window, add an OpenGL context, clear the screen and flip 
buffers. But as soon as I try to render a triangle, my program 
crashes. I already tried hardcoding values in the shaders to 
rule them out. I end up with:


Error executing command run: Program exited with code -11

Upon running with gdb, I get:

Program received signal SIGSEGV, Segmentation fault.
0x in ?? ()

which is not really helpful to me.

dub -v's output:

[...]

Full exception: 
object.Exception@source/dub/generators/build.d(405): Program 
exited with code -11


dub(pure @safe bool std.exception.enforce!(bool).enforce(bool, 
lazy const(char)[], immutable(char)[], ulong)+0x6b) [0x67346f]
dub(void 
dub.generators.build.BuildGenerator.runTarget(dub.internal.vibecompat.inet.path.Path, 
const(dub.compilers.compiler.BuildSettings), 
immutable(char)[][])+0x4dc) [0x62db70]
dub(void 
dub.generators.build.BuildGenerator.generateTargets(dub.generators.generator.GeneratorSettings, 
const(dub.generators.generator.ProjectGenerator.TargetInfo[immutable(char)[]]))+0x231) 
[0x62a75d]
dub(void 
dub.generators.generator.ProjectGenerator.generate(dub.generators.generator.GeneratorSettings)+0x2de) 
[0x62f9a2]
dub(void dub.dub.Dub.generateProject(immutable(char)[], 
dub.generators.generator.GeneratorSettings)+0xaa) [0x5f1f46]
dub(int dub.commandline.GenerateCommand.execute(dub.dub.Dub, 
immutable(char)[][], immutable(char)[][])+0x677) [0x5e5b6b]
dub(int dub.commandline.BuildCommand.execute(dub.dub.Dub, 
immutable(char)[][], immutable(char)[][])+0x8d) [0x5e5e81]
dub(int dub.commandline.RunCommand.execute(dub.dub.Dub, 
immutable(char)[][], immutable(char)[][])+0x8d) [0x5e6041]
dub(int 
dub.commandline.runDubCommandLine(immutable(char)[][])+0x1211) 
[0x5e3b8d]

dub(_Dmain+0x20) [0x5e2334]
dub(void rt.dmain2._d_run_main(int, char**, extern (C) int 
function(char[][])*).runAll().void __lambda1()+0x18) [0x6ce504]
dub(void rt.dmain2._d_run_main(int, char**, extern (C) int 
function(char[][])*).tryExec(scope void delegate())+0x2a) 
[0x6ce45e]
dub(void rt.dmain2._d_run_main(int, char**, extern (C) int 
function(char[][])*).runAll()+0x30) [0x6ce4c4]
dub(void rt.dmain2._d_run_main(int, char**, extern (C) int 
function(char[][])*).tryExec(scope void delegate())+0x2a) 
[0x6ce45e]

dub(_d_run_main+0x1a3) [0x6ce3df]
dub(main+0x25) [0x5e2979]
/lib64/libc.so.6(__libc_start_main+0xf5) [0x3dcae21d65]

I am using the current master versions of Derelict, dub 0.9.21, 
dmd v2.066.0, on Linux 3.15.7 x86_64


I can post my source if needed, but it is quite a lot already. 
I'm not really sure if it is my fault or a bug in Derelict or 
dmd, hopefully someone is able to track this down.


--

Robin Schroer


Are you following this pattern?:

// For core API functions.
import derelict.opengl3.gl3;

void main() {
// Load OpenGL versions 1.0 and 1.1.
DerelictGL3.load();

// Create an OpenGL context with another library (like SDL 2 
or GLFW 3)

...

// Load versions 1.2+ and all supported ARB and EXT 
extensions.

DerelictGL3.reload();

// Now OpenGL functions can be called.
...
}



The Segfault in ?? error is usually from calling a function 
pointer that hasn't been initialised, e.g. a more recent OpenGL 
api function that is only bound by calling DerelictGL3.reload();


Re: Strange segfault (Derelict/OpenGL)

2014-08-29 Thread via Digitalmars-d-learn

On Friday, 29 August 2014 at 11:23:34 UTC, Robin Schroer wrote:

I'm not entirely sure where to post, so I will put it here.


This is the right place.



I'm playing around with D and Derelict 3 to make something with 
OpenGL (don't really know what yet). I managed to open a 
window, add an OpenGL context, clear the screen and flip 
buffers. But as soon as I try to render a triangle, my program 
crashes. I already tried hardcoding values in the shaders to 
rule them out. I end up with:


Error executing command run: Program exited with code -11

Upon running with gdb, I get:

Program received signal SIGSEGV, Segmentation fault.
0x in ?? ()

which is not really helpful to me.


Can you still try to get a backtrace with `bt`? This looks like 
it's calling a null function pointer. I'm not familiar with 
Derelict, but I remember that some initialization needs to be 
done which involves setting up function pointers; your problem is 
probably related to that.


Re: Strange segfault (Derelict/OpenGL)

2014-08-29 Thread Robin Schroer via Digitalmars-d-learn

On Friday, 29 August 2014 at 11:51:47 UTC, Marc Schütz wrote:

On Friday, 29 August 2014 at 11:23:34 UTC, Robin Schroer wrote:

Upon running with gdb, I get:

Program received signal SIGSEGV, Segmentation fault.
0x in ?? ()

which is not really helpful to me.


Can you still try to get a backtrace with `bt`? This looks like 
it's calling a null function pointer. I'm not familiar with 
Derelict, but I remember that some initialization needs to be 
done which involves setting up function pointers; your problem 
is probably related to that.


Yes, I can:

Program received signal SIGSEGV, Segmentation fault.
0x in ?? ()
(gdb) bt
#0  0x in ?? ()
#1  0x004ad33e in display.Display.render() 
(this=0x77ecfe00)

at source/dgame/display.d:95
#2  0x004a01d5 in D main (args=...) at source/app.d:41
#3  0x004cd9af in rt.dmain2._d_run_main() ()
#4  0x004cd902 in rt.dmain2._d_run_main() ()
#5  0x004cd968 in rt.dmain2._d_run_main() ()
#6  0x004cd902 in rt.dmain2._d_run_main() ()
#7  0x004cd883 in _d_run_main ()
#8  0x004acfb5 in main ()

display.Display.render() is what tries to render the triangle 
using a glBegin-block.


Re: Strange segfault (Derelict/OpenGL)

2014-08-29 Thread ponce via Digitalmars-d-learn

On Friday, 29 August 2014 at 11:23:34 UTC, Robin Schroer wrote:

I'm not entirely sure where to post, so I will put it here.

I'm playing around with D and Derelict 3 to make something with 
OpenGL (don't really know what yet). I managed to open a 
window, add an OpenGL context, clear the screen and flip 
buffers. But as soon as I try to render a triangle, my program 
crashes.


As John Colvin said, forgetting to call DerelictGL3.reload() is a 
common error.


Re: Strange segfault (Derelict/OpenGL)

2014-08-29 Thread Robin Schroer via Digitalmars-d-learn

On Friday, 29 August 2014 at 12:41:38 UTC, ponce wrote:

On Friday, 29 August 2014 at 11:23:34 UTC, Robin Schroer wrote:

I'm not entirely sure where to post, so I will put it here.

I'm playing around with D and Derelict 3 to make something 
with OpenGL (don't really know what yet). I managed to open a 
window, add an OpenGL context, clear the screen and flip 
buffers. But as soon as I try to render a triangle, my program 
crashes.


As John Colvin said, forgetting to call DerelictGL3.reload() is 
a common error.


I definitely reload after setting the context and before trying 
to render.


Re: Strange segfault (Derelict/OpenGL)

2014-08-29 Thread Andrej Mitrovic via Digitalmars-d-learn
On 8/29/14, Robin Schroer via Digitalmars-d-learn
digitalmars-d-learn@puremagic.com wrote:
 I definitely reload after setting the context and before trying
 to render.

Typically these kinds of errors happen when a null function pointer is
called. I'd add a few checks in some places to see what might have
been left uninitialized.


Re: Strange segfault (Derelict/OpenGL)

2014-08-29 Thread Mike Parker via Digitalmars-d-learn

On 8/29/2014 9:16 PM, Robin Schroer wrote:

On Friday, 29 August 2014 at 11:51:47 UTC, Marc Schütz wrote:



display.Display.render() is what tries to render the triangle using a
glBegin-block.


Some code would be helpful. My first thought is that you aren't loading 
properly. DerelictGL3 does not load deprecated functions, but you're 
trying to call a deprecated function. Are you loading DerelictGL or 
DerelictGL3?


---
This email is free from viruses and malware because avast! Antivirus protection 
is active.
http://www.avast.com