Thanks for the quick response.
I actually do use setupDebugMessageCallback (GLUtil.setupDebugMessageCallback(System.out)), but I see no message after my problem. GL11.glGetError() is giving me a 1282 code when I try to call glUseProgram (the shader compiles, just doesn't bind), but the message callback is never hit.
The problem is happening on a linux laptop from 2005, so I don't know how much I care about fixing the actual problem, but I would like it if I at least got a better message for what's going on. It seems to be working fine windows desktop.