Well, you most likely are using a native code plugin which has some errors in them. Most likely a wrong order or instructions. For example “glVertex” can only be called inside a glBegin / glEnd pair. If executed outside it would throw such an error. OpenGL is a statemachine and some operations are only allowed / possible when in a certain state.
I had this bug because I was trying to read pixels into a TextureFormat.ARGB32 from a RenderTexture.RGBAFloat. I fixed by specifying the TextureFormat in Texture2D constructor to match when creating the reading texture.
outputTexture = new RenderTexture (128, 128, 0, RenderTextureFormat.ARGBFloat);
RenderTexture.active = outputTexture;
tmpTexture = new Texture2D (outputTexture.width, outputTexture.height, TextureFormat.RGBAFloat, false); // NOTE: MUST MATCH FORMAT OF ACTIVE RENDERTEXTURE!
tmpTexture.ReadPixels (new Rect (0, 0, outputTexture.width, outputTexture.height), 0, 0, false);
tmpTexture.Apply ();
RenderTexture.active = null;