I guess you should set GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB in GLX_CONTEXT_FLAGS_ARB and GLX_CONTEXT_CORE_PROFILE_BIT_ARB in GLX_CONTEXT_PROFILE_MASK_ARB while calling glXCreateContextAttribsARB (see: https://www.khronos.org/registry/OpenGL/extensions/ARB/GLX_ARB_create_context.txt).