It issues an errorreport when it detects things like using more memory than was allocated, or using memory before it was initialized or after it was freed.
With a preallocated Runnable object and a separate scope, you should always be in a position to report a problem without using any memory in the context the error occurred.
If the program reads from memory that hasn't been initialized, or reads or writes memory that has been freed or lies beyond the ends of allocated blocks, you will see a Purify errorreport.