glGetAttributeLocation is returning invalid location and it's not (GLuint)-1

I’ll start with my output:

make test
...
cd ../../../bin && ./tryextra._x86_64_linux_cc_debug.elf -D APP_DATA=../run
Opened module './libvfxglfw._x86_64_linux_cc_debug.so'
Opened module './libvfxgl._x86_64_linux_cc_debug.so'
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   43: app->ref = glCreateProgram();
Creating program 'flat'
Generating shader 'point' with path '../run/shaders/spec.glsl':
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:   94: obj->ref = glCreateShader(35633);
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  104: glShaderSource( obj->ref, 1, &code, NULL );
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  105: glCompileShader(2);
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  106: glGetShaderiv(2, 35713, 0x7ffc6f49a47c);
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   53: glAttachShader(1, 2);
Success
Generating shader 'color' with path '../run/shaders/frag.glsl':
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:   94: obj->ref = glCreateShader(35632);
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  104: glShaderSource( obj->ref, 1, &code, NULL );
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  105: glCompileShader(3);
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  106: glGetShaderiv(3, 35713, 0x7ffc6f49a47c);
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   53: glAttachShader(1, 3);
Success
Linking program...
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   74: glLinkProgram(1);
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   75: glGetProgramiv(1, 35714, 0x7ffc6f49a60c);
Success
Testing program...
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   91: glValidateProgram(1);
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   92: glGetProgramiv(1, 35715, 0x7ffc6f49a60c);
Success
==============================================[0] '(null)' [], name count = 1
~/src/libbasic/../../src/libvfxgl/opengl_vfxcfg.c:   24: glGenVertexArrays( 1, &ref );
~/src/libbasic/../../src/libvfxgl/opengl_vfxbuf.c:   24: glGenBuffers( 1, &ref );
~/src/libbasic/../../src/libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 1 );
~/src/libbasic/../../src/libvfxgl/opengl_vfxbuf.c:   65: glBindBuffer( 34962, 1 );
~/src/libbasic/../../src/libvfxgl/opengl_vfxbuf.c:   69: glBufferData( 34962, 112, 0x55d51a063330, 35044 );
> [0][0] 'NulPoint' uint
~/src/libbasic/../../src/libvfxgl/opengl_vfxbuf.c:   24: glGenBuffers( 1, &ref );
~/src/libbasic/../../src/libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 1 );
~/src/libbasic/../../src/libvfxgl/opengl_vfxbuf.c:   65: glBindBuffer( 34962, 1 );
~/src/libbasic/../../src/libvfxgl/opengl_vfxbuf.c:   69: glBufferData( 34962, 208, 0x55d51a0657a0, 35044 );
~/src/libbasic/../../src/libvfxgl/opengl_vfxvar.c:   24: var->loc = glGetAttribLocation( 1, 'NulPoint' );
~/src/libbasic/../../src/tryextra/create.c:  333: Errno 0xFFFFFFFF (-1) EUNKNOWN: 'Unknown error -1'
Couldn't find 'NulPoint'
~/src/libbasic/../../src/tryextra/main.c:  270: Errno 0xFFFFFFFF (-1) EUNKNOWN: 'Unknown error -1'
make: *** [../../../gnu.mak:40: test] Error 1
Compilation failed.

I caught the erroneous output after switching from var->loc == (GLuint)-1 to ((GLint)(var->loc)) < 0 which I only did because I found it at a later point while debugging, I know the variable is definitely used and I have already gone to a lot of effort to make sure the code I pass to glShaderSource is valid & what I expect, I have no idea why I’m getting erroneous output.

Since I remember someone asking for a call list I went to the effort of making macros to print out the various opengl calls I make (in order), would’ve been more effort than it’s worth to somehow stringify the GL_* stuff while I’m at it so you’ll have to deal with their numeric form

Is the thing that uses that variable itself used? And the thing that uses that? All the way through to a fragment shader output?

You decide:

#version 440
#include "same.glsl"

in vec4 NulPoint;
out VERTEX
{
	vec4 DyeColor;
	vec4 DyeTexel;
} set;

void main()
{
	uint v = gl_InstanceID, c = uint_uniforms.VtxCount, stop = c - 1;
	vec4 center = vec4( 0.0, 0.0, 0.0, 1.0 );

	gl_Position =
		vec4( square_vertices[v % 4], 1.0, 1.0 ) + vec4( NulPoint.xyz, 1.0 );
	set.DyeColor = vec4(1.0,1.0,1.0,1.0);
	set.DyeTexel = vec4(1.0,1.0,1.0,1.0);
}

Edit: Just in case you ask, the contents of frag.glsl:

#version 440

in VERTEX
{
	vec4 DyeColor;
	/* We use a vec4 so we can store our information in 1 cache, we can just use
	 * the extra values for something else, like say the index of the texel */
	vec4 DyeTexel;
} got;

uniform sampler2D Texture;

out vec4 UseColor;

void main()
{
	vec4 ImgColor = texture( Texture, got.DyeTexel.xy );
	UseColor = got.DyeColor;// * ImgColor;
}

Edit 2: Just occurred to me that maybe the different names of set & got caused the issue, changed them both to frag but nope, still same issue

Edit 3: Just uploaded my code to gitlab, figured I might as well link it here before I go to bed, perhaps someone burning the night oil or someone in a different time zone might feel like searching through it for what I’ve yet to spot

I was bored so I took the time to convert some call print statements to use name arrays to retrieve the name of the relative enum, here’s the same output from my previous post with the enums named for more clarity:

make test
...
cd bin && ./tryextra._x86_64_linux_cc_debug.elf -D APP_DATA=../run
Opened module './libvfxglfw._x86_64_linux_cc_debug.so'
Opened module './libvfxgl._x86_64_linux_cc_debug.so'
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   43: app->ref = glCreateProgram();
Creating program 'flat'
Generating shader 'point' with path '../run/shaders/spec.glsl':
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:   96: glCreateShader( GL_VERTEX_SHADER );
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  108: glShaderSource( 2, 1, [0x55a7c9ae43e0], (nil) );
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  115: glCompileShader( 2 );
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  116: glGetShaderiv( 2, GL_COMPILE_STATUS, 0x7fffdfbc0574 );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   53: glAttachShader( 1, 2 );
Success
Generating shader 'color' with path '../run/shaders/frag.glsl':
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:   96: glCreateShader( GL_FRAGMENT_SHADER );
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  108: glShaderSource( 3, 1, [0x55a7ca067170], (nil) );
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  115: glCompileShader( 3 );
~/src/libvfxgl/../../src/libvfxgl/opengl_shader.c:  116: glGetShaderiv( 3, GL_COMPILE_STATUS, 0x7fffdfbc0574 );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   53: glAttachShader( 1, 3 );
Success
Linking program...
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   74: glLinkProgram( 1 );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   75: glGetProgramiv( 1, GL_LINK_STATUS, 0x7fffdfbc071c );
Success
Testing program...
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   92: glValidateProgram( 1 );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:   93: glGetProgramiv( 1, GL_VALIDATE_STATUS, 0x7fffdfbc071c );
Success
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxapp.c:  140: glUseProgram( 1 );
==============================================[0] '(null)' [], name count = 1
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxcfg.c:   24: glGenVertexArrays( 1, &ref );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 1 );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxbuf.c:   71: glBindBuffer( GL_ARRAY_BUFFER, 1 );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxbuf.c:   74: glBufferData( GL_ARRAY_BUFFER, 112, 0x55a7ca03f6f0, GL_STATIC_DRAW );
> [0][0] 'NulPoint' uint
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 1 );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxbuf.c:   71: glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 2 );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxbuf.c:   74: glBufferData( GL_ELEMENT_ARRAY_BUFFER, 28, 0x55a7ca069ab0, GL_STATIC_DRAW );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxvar.c:   24: var->loc = glGetAttribLocation( 1, 'NulPoint' );
~/src/libvfxgl/../../src/libvfxgl/opengl_vfxvar.c:   52: Errno 0x00000083 (131) ENOTRECOVERABLE: 'State not recoverable'
~/src/tryextra/../../src/tryextra/create.c:  330: Errno 0x00000083 (131) ENOTRECOVERABLE: 'State not recoverable'
Couldn't find 'NulPoint'
~/src/tryextra/../../src/tryextra/main.c:  251: Errno 0x00000083 (131) ENOTRECOVERABLE: 'State not recoverable'
make: *** [gnu.mak:40: test] Error 1
Compilation failed.
#include "same.glsl"

What are the contents of same.glsl?

#ifndef SHARED_H
#define SHARED_H

#	if defined(GL_SPIRV) || defined(GL_core_profile) || \
	defined(GL_compatibility_profile) || defined(GL_es_profile)
#		define IS_OPENGL
#	endif

#	if defined(IS_OPENGL) || defined(VULKAN)
/* Mappings to CGLM union names */
#		define uvec2s	uvec2
#		define uvec3s	uvec3
#		define uvec4s	uvec4
#		define ivec2s	ivec2
#		define ivec3s	ivec3
#		define ivec4s	ivec4
#		define vec2s	vec2
#		define vec3s	vec3
#		define vec4s	vec4
#		define dvec2s	dvec2
#		define dvec3s	dvec3
#		define dvec4s	dvec4
#	else
#		include <cglm/struct.h>
#		include <cglm/cglm.h>
#		include <cglm/call.h>
#		define uniform typedef struct
#	endif /* IS_OPENGL / VULKAN */

uniform UINTS
{
	uint FlatLine;
	uint VtxCount;
} uint_uniforms;

#	define SHARED_UINT_NAMES "VtxCount", "FlatLine"
#	define SHARED_UINT_TYPES VFXTYPE_UINT, VFXTYPE_UINT
#	define SHARED_UINT_TAKES 1, 1
#	define SHARED_UINT_COUNT (1+1)

uniform DINTS
{
	ivec2s	WinPoint;
	ivec3s	WinSpace;
} dint_uniforms;

#	define SHARED_DINT_NAMES "WinPoint", "WinSpace"
#	define SHARED_DINT_TYPES VFXTYPE_IVEC2, VFXTYPE_IVEC3
#	define SHARED_DINT_TAKES 1, 1
#	define SHARED_DINT_COUNT (2+3)

uniform FNUMS
{
	vec3s	WinScale;
	vec3s	RegScale;
	vec3s	RegPoint;
	/* Light emitted */
	vec3s	RegEmits;
	/* Light taken before ray bounces */
	vec3s	RegTakes;
} fnum_uniforms;

#	define SHARED_FNUM_NAMES \
	"WinScale", "RegScale", "RegPoint", "RegEmits", "RegTakes"
#	define SHARED_FNUM_TYPES \
	VFXTYPE_FVEC3, VFXTYPE_FVEC3, VFXTYPE_FVEC3, VFXTYPE_FVEC3, VFXTYPE_FVEC3
#	define SHARED_FNUM_TAKES 1, 1, 1, 1, 1
#	define SHARED_FNUM_COUNT (3+3+3+3+3)

uniform DNUMS { double dunused; } dnum_uniforms;

#	define SHARED_DNUM_NAMES "dunused"
#	define SHARED_DNUM_TYPES VFXTYPE_DNUM
#	define SHARED_DNUM_TAKES 1
#	define SHARED_DNUM_COUNT (1)

#	ifndef IS_OPENGL
#		undef uniform
#	else
const int INT_MAX = int(  ~0u >> 1 );
const int INT_MIN = int(~(~0u >> 1));

const uint		uqtr = ~0u / 4;
const uint		uoct = ~0u / 8;
const double	dcap = double(~0u);
const double	dqtr = double(~0u / 4);

vec2 square_vertices[] =
{
	{  0.25,  0.25 },
	{  0.25,  0.75 },
	{  0.75,  0.25 },
	{  0.75,  0.75 }
};

vec4 edge_vertex( uint x, uint y )
{
	vec4 point;
	point.x = (float(double(x) / dqtr) * 2.0) - 1.0;
	point.y = (float(double(y) / dqtr) * 2.0) - 1.0;
	point.z = 1.0;
	point.w	= 1.0;
	return point;
}

vec4 calc_point( uint v, uint vertices )
{
	double aim = double(v);
	double max = double(vertices);
	uint rotate = uint((aim / max) * dcap);
	uint linear = rotate % uqtr;

	if ( uint_uniforms.FlatLine != 0 )
		return edge_vertex( linear, uqtr - linear );
	else
	{
		uint curved = linear + (linear / 3);
		if ( linear < uoct )
			return edge_vertex( curved, uqtr - linear );
		else
			return edge_vertex( linear, uqtr - curved );
	}
}
#	endif /* IS_OPENGL */

#endif /* SHARED_H */

Er, problem seemed to have solved itself while I was changing backend stuff, however the result was still interpreted as wrong because I messed up the error check, had

	vfxvar->used = (((GLint)(var->loc)) < 0);

	if ( !(vfxvar->used) )
	{
		dint err = ENOTRECOVERABLE;
		ECHO_ERRNO( stdout, err );
		Printf( "Was given location %d\n", ((GLint)(var->loc)) );
		return err;
	}
	return 0;

Instead of

	vfxvar->used = (((GLint)(var->loc)) >= 0);

	if ( !(vfxvar->used) )
	{
		dint err = ENOTRECOVERABLE;
		ECHO_ERRNO( stdout, err );
		Printf( "Was given location %d\n", ((GLint)(var->loc)) );
		return err;
	}
	return 0;

So it turns out I’m still have the problem of an invalid location just a couple calls down, worse I cannot see any code path between glGetAttribLocation & the next offending call glVertexAttribPointer which is somehow getting a -1 where there should be a 0

If anyone feels like going through the C calls then start with line 327 of src/tryextra/create.c through to line 347 of the same file, those are the only root calls of relevance

Much as I look I cannot see the cause

Edit: Never mind, just spotted the issue, typed vfxvar by habit instead of var which was being used for sub symbols

Figured I’d re-use this thread to ask, is this call flow correct for uniform structs (same as those shown in the same.glsl given in a previous post of this thread)

make test
...
cd ../../bin && ./tryextra._x86_64_linux_cc_debug.elf -D APP_DATA=../run
Opened module './libvfxglfw._x86_64_linux_cc_debug.so'
Opened module './libvfxgl._x86_64_linux_cc_debug.so'
~/...libvfxgl/opengl_vfxapp.c:   43: app->ref = glCreateProgram();
Creating program 'flat'
Generating shader 'point' with path '../run/shaders/spec.glsl':
~/...libvfxgl/opengl_shader.c:   95: glCreateShader( GL_VERTEX_SHADER );
~/...libvfxgl/opengl_shader.c:  106: glShaderSource( 2, 1, [0x56338ca1c9b0], (nil) );
~/...libvfxgl/opengl_shader.c:  113: glCompileShader( 2 );
~/...libvfxgl/opengl_shader.c:  114: glGetShaderiv( 2, GL_COMPILE_STATUS, 0x7ffd37c71130 );
~/...libvfxgl/opengl_vfxapp.c:   53: glAttachShader( 1, 2 );
Success
Generating shader 'color' with path '../run/shaders/frag.glsl':
~/...libvfxgl/opengl_shader.c:   95: glCreateShader( GL_FRAGMENT_SHADER );
~/...libvfxgl/opengl_shader.c:  106: glShaderSource( 3, 1, [0x56338cfa9430], (nil) );
~/...libvfxgl/opengl_shader.c:  113: glCompileShader( 3 );
~/...libvfxgl/opengl_shader.c:  114: glGetShaderiv( 3, GL_COMPILE_STATUS, 0x7ffd37c71130 );
~/...libvfxgl/opengl_vfxapp.c:   53: glAttachShader( 1, 3 );
Success
Linking program...
~/...libvfxgl/opengl_vfxapp.c:   72: glLinkProgram( 1 );
~/...libvfxgl/opengl_vfxapp.c:   73: glGetProgramiv( 1, GL_LINK_STATUS, 0x7ffd37c712dc );
Success
Testing program...
~/...libvfxgl/opengl_vfxapp.c:   88: glValidateProgram( 1 );
~/...libvfxgl/opengl_vfxapp.c:   89: glGetProgramiv( 1, GL_VALIDATE_STATUS, 0x7ffd37c712dc );
Success
~/...libvfxgl/opengl_vfxapp.c:  136: glUseProgram( 1 );
==============================================[0] '(null)' [], name count = 1
~/...libvfxgl/opengl_vfxcfg.c:   24: glGenVertexArrays( 1, &ref );
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 1 );
~/...libvfxgl/opengl_vfxbuf.c:   90: glBindBuffer( GL_ARRAY_BUFFER, 1 );
~/...libvfxgl/opengl_vfxbuf.c:   93: glBufferData( GL_ARRAY_BUFFER, 112, 0x56338cf7dd20, GL_STATIC_DRAW );
> [0][0] 'NulPoint' uint
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 1 );
~/...libvfxgl/opengl_vfxbuf.c:   90: glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 2 );
~/...libvfxgl/opengl_vfxbuf.c:   93: glBufferData( GL_ELEMENT_ARRAY_BUFFER, 28, 0x56338cfa0470, GL_STATIC_DRAW );
~/...libvfxgl/opengl_vfxvar.c:   24: var->loc = (GLint)glGetAttribLocation( 1, 'NulPoint' );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 1 );
~/...libvfxgl/opengl_vfxbuf.c:   62: glVertexArrayElementBuffer( 1, 2 );
~/...libvfxgl/opengl_vfxvar.c:  254: glVertexAttribPointer( 0, 1, GL_UNSIGNED_INT, GL_FALSE, 4, (nil) );
==============================================[1] 'UINTS' [], name count = 2
~/...libvfxgl/opengl_vfxcfg.c:   24: glGenVertexArrays( 1, &ref );
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 2 );
~/...libvfxgl/opengl_vfxbuf.c:   90: glBindBuffer( GL_UNIFORM_BUFFER, 3 );
~/...libvfxgl/opengl_vfxbuf.c:   93: glBufferData( GL_UNIFORM_BUFFER, 12, 0x56338cfa3160, GL_DYNAMIC_DRAW );
~/...libvfxgl/opengl_vfxvar.c:   32: var->loc = (GLint)glGetUniformBlockIndex( 1, 'UINTS' );
> [1][0] 'VtxCount' uint
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 2 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'VtxCount'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 3 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 4, 0x56338cfac090 );
> [1][1] 'FlatLine' uint
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 2 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'FlatLine'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 3 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 4, 0x56338cf98270 );
==============================================[2] 'DINTS' [], name count = 2
~/...libvfxgl/opengl_vfxcfg.c:   24: glGenVertexArrays( 1, &ref );
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 3 );
~/...libvfxgl/opengl_vfxbuf.c:   90: glBindBuffer( GL_UNIFORM_BUFFER, 6 );
~/...libvfxgl/opengl_vfxbuf.c:   93: glBufferData( GL_UNIFORM_BUFFER, 24, 0x56338cf78760, GL_DYNAMIC_DRAW );
~/...libvfxgl/opengl_vfxvar.c:   32: var->loc = (GLint)glGetUniformBlockIndex( 1, 'DINTS' );
> [2][0] 'WinPoint' ivec2
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 3 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'WinPoint'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 6 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 8, 0x56338cf7e880 );
> [2][1] 'WinSpace' ivec3
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 3 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'WinSpace'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 6 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 12, 0x56338cf9dee0 );
==============================================[3] 'FNUMS' [], name count = 5
~/...libvfxgl/opengl_vfxcfg.c:   24: glGenVertexArrays( 1, &ref );
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 4 );
~/...libvfxgl/opengl_vfxbuf.c:   90: glBindBuffer( GL_UNIFORM_BUFFER, 9 );
~/...libvfxgl/opengl_vfxbuf.c:   93: glBufferData( GL_UNIFORM_BUFFER, 64, 0x56338cf9bbe0, GL_DYNAMIC_DRAW );
~/...libvfxgl/opengl_vfxvar.c:   32: var->loc = (GLint)glGetUniformBlockIndex( 1, 'FNUMS' );
> [3][0] 'WinScale' vec3
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 4 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'WinScale'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 9 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 12, 0x56338cfa76d0 );
> [3][1] 'RegScale' vec3
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 4 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'RegScale'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 9 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 12, 0x56338cfa76f0 );
> [3][2] 'RegPoint' vec3
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 4 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'RegPoint'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 9 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 12, 0x56338cf9ad60 );
> [3][3] 'RegEmits' vec3
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 4 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'RegEmits'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 9 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 12, 0x56338cf9dbf0 );
> [3][4] 'RegTakes' vec3
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 4 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'RegTakes'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 9 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 12, 0x56338cf7d050 );
==============================================[4] 'DNUMS' [], name count = 1
~/...libvfxgl/opengl_vfxcfg.c:   24: glGenVertexArrays( 1, &ref );
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 5 );
~/...libvfxgl/opengl_vfxbuf.c:   90: glBindBuffer( GL_UNIFORM_BUFFER, 15 );
~/...libvfxgl/opengl_vfxbuf.c:   93: glBufferData( GL_UNIFORM_BUFFER, 16, 0x56338cf70c00, GL_DYNAMIC_DRAW );
~/...libvfxgl/opengl_vfxvar.c:   32: var->loc = (GLint)glGetUniformBlockIndex( 1, 'DNUMS' );
> [4][0] 'dunused' double
~/...libvfxgl/opengl_vfxbuf.c:   27: glGenBuffers( 1, &ref );
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 5 );
~/...libvfxgl/opengl_vfxbuf.c:   52: Ignored VFXVAR 'dunused'
~/...libvfxgl/opengl_vfxvar.c:  507: glBindBuffer( GL_UNIFORM_BUFFER, 15 );
~/...libvfxgl/opengl_vfxvar.c:  510: glBufferSubData( GL_UNIFORM_BUFFER, 0, 8, 0x56338cf76430 );
==================Entering draw loop=====================
~/...libvfxgl/opengl_vfxapp.c:  136: glUseProgram( 1 );
~/...libvfxgl/opengl_vfxbuf.c:   90: glBindBuffer( GL_ARRAY_BUFFER, 1 );
~/...libvfxgl/opengl_vfxbuf.c:   93: glBufferData( GL_ARRAY_BUFFER, 112, 0x56338cf7dd20, GL_STATIC_DRAW );
> Enabling VfxCfg
~/...libvfxgl/opengl_vfxcfg.c:    6: glBindVertexArray( 1 );
~/...libvfxgl/opengl_vfxbuf.c:   43: glBindBuffer( GL_ARRAY_BUFFER, 1 );
>	Enabling VfxVar 'NulPoint', takes 1, def->count = 0
make: *** [../../gnu.mak:40: test] Segmentation fault (core dumped)
Compilation failed.

I edited out the excess path stuff so it would be easier to read the ouput