Because the creation of the ManualObject takes a bit of time I put the task onto a new thread.
That's your problem right there. An OpenGL context can be active in only one thread at a time. If you call OpenGL commands from a thread which doesn't have an OpenGL context bound, all you get are errors.