Thank you for doing that! Yes the grabber is working fine. The allocation check you added stops the texture not allocated message.
I've done a bit more checking and you are right, in my scenario the processing time to convert the image to grayscale is sufficient to cause the queue in the threadChannel to grow forever. If I set a limit on the queue, i.e., 100 by popping any sent items after it reaches size 100 in the send method of the threadChannel class, then memory usage will grow and then stay constant.