Why are you calling atexit every time anyone calls apr_md5_validate?

This (and the initialize) should be done just the once, I would think.

Is apr threadsafe?