I cannot tell you what is causing this in your specific case but I have fixed this for others in the future and often what I see is remote dependencies. Here is just one example:
CREATE OR REPLACE PROCEDURE remote_proc AUTHID DEFINER IS
SELECT COUNT(*) INTO x FROM dual@remotedb; -- a database link
Network issues break the connection to the remote database for a fraction of a second and the result is predictable.
Check your dependencies (dba_dependencies) and if it isn't there feel free to email me directly: dmorgan @ forsythe.com and I will try to help you get to the bottom of it.