glGetUniformLocation fails in confinement mode

Stephen M. Webb stephen.webb at
Mon Jan 30 13:47:56 UTC 2017

On 2017-01-30 01:56 AM, Spencer Parkin wrote:
> I have a program that has successfully snapped and run in confinement mode, but then I added a pixel and vertex shader
> which works when run on my classic system, but not in strict confinement as a snap.  I've tried to narrow down the
> earliest fail point, and I believe it is at the point where I'm calling glGetUniformFromLocation.  This is returning -1
> in confinement mode.  I'm able to read, compile and link my shader program, and bind it, but the first call to
> glGetUniformFromLocation fails.  Is OpenGL being denied read-access to a portion of protected memory?  If so, it
> certainly would fail to write there as well with a call to glUniform3f, for example.
> I've tried hooking up the snappy-debug's log-observe plug to that of ubuntu core's, then running the scanlog, but the
> only app-armer denial I get is, I believe, unrelated to the problem.  In any case, I will give it here...
> Log: apparmer="DENIED" operation="open" profile="snap.twistypuzzle.twistypuzzle" name="/usr/share/glib-2.0/schemas/"
> pid=23593 comm="desktop-launch" request_mask="r" denied_mask="r" fsuid=1000 ouid=0
> File: /usr/share/glib-2.0/schemas/ (read)

That error message is because the launcher program "desktop-launch" can not find the gsettings.  I don't know what
impact that will have (if any) but it's not going to affect how OpenGL works internally.

Your glGetUniformFromLocation() sounds more like you haven't compiled the shader.  You code contains no error handling
if the shader file itself is not found, only if the shader file is found and fails to compile.  My guess is the shader
sources are not getting found under confinement.

Stephen M. Webb  <stephen.webb at>

More information about the Snapcraft mailing list