layout(binding=0, rgba32f) uniform image2DRect data;
Should supposedly work better like this:
layout(location=0, rgba32f) uniform image2DRect data;
But yes, glMemoryBarrier doesn't quite seem to work. I tried substituting glMemoryBarrier for glFinish and it worked for me.