It seems completely broken for an OS to provide pthread_once that isn't funcitional. I'd recommend opening a bug with HP pointing out that even the non-threaded version of pthread_once does need to make sure the code is called exactly once.