One of the caveats of ModPerl is that
global variables retain their value because your program never really exits (unless you restart the Apache server).
And given that Apache is a multithreaded server the next client HTTP request may be serviced by the same or by a different Apache child process. So if one accidentally uses the retained value of the global variable it may well hold the status for a vastly different request, you never know.
From the symptoms that you have described it appears to be related to the above caveat. A similar case was discussed in this ModPerl thread.
Clearly the recommendation is to avoid globals and when you have to use them double check you instantiate them in your handler, there's no "not initialized" warnings that you can rely on to help you debug.