rhymejerky has asked for the wisdom of the Perl Monks concerning the following question:

I am running INN 2.4.1 on Perl 5.005. innd creates nnrpd when a news reader connects to the news server. The news server requests the user name and password for authentication. However, the nnprd process is killed w/o any error message generated. I did a truss and saw the nnrpd exit with "panic: top_env" What does that message mean? Googled around and that indicated Perl has done something strange and must exit. Does anyone have a more fully explanation? Thanks

Replies are listed 'Best First'.
Re: panic: top_env
by Roger (Parson) on Jun 19, 2004 at 01:09 UTC
    This error is generated when JMPENV fails (trying to do a long jump but found invalid jmpenv structure), which suggests a buffer overrun problem has been detected. Searching through the source codes of Perl yields the following:
    /* A jmpenv packages the state required to perform a proper non-local +jump. * Note that there is a start_env initialized when perl starts, and to +p_env * points to this initially, so top_env should always be non-null. * * Existence of a non-null top_env->je_prev implies it is valid to cal +l * longjmp() at that runlevel (we make sure start_env.je_prev is alway +s * null to ensure this). * * je_mustcatch, when set at any runlevel to TRUE, means eval ops must * establish a local jmpenv to handle exception traps. Care must be t +aken * to restore the previous value of je_mustcatch before exiting the * stack frame iff JMPENV_PUSH was not called in that stack frame. * GSAR 97-03-27 */


Re: panic: top_env
by eyepopslikeamosquito (Archbishop) on Jun 19, 2004 at 07:13 UTC