Warning: Persistent ASP 0240 Bug in ActivePerl 5.8

D

David Dickinson

Hello,

Running the following ASP web page on any version of ActivePerl 5.8.x under
any version of Win32/IIS returns an error:

----- BEGIN ASP CODE -----
<%@ LANGUAGE="PerlScript" %>
<%
$Response->End();
%>
----- END ASP CODE -----

The script will run correctly the first time but, if the page is refreshed
in the web browser, the following error message is displayed:

----- BEGIN ERROR MESSAGE -----
Active Server Pages error 'ASP 0240'

Script Engine Exception

/test.asp

A ScriptEngine threw exception 'C0000005' in
'IActiveScript::SetScriptState()' from 'CActiveScriptEngine::ReuseEngine()'.
----- END ERROR MESSAGE -----

Refreshing the web page in the browser allows for normal continuation. A
VBScript version of the same code does not result in this error message.

This problem has dire consequences. Many scripts which use, for instance,
$Response->Redirect() to a page that contains a $Response->End() can die.
All that the web site visitor sees is the error message. They don't know
that they can simply refresh the web page to get past the error.

This bug (ActiveState Bug 65223) has, as far as I know, existed in every
version of ActivePerl 5.8.
 
Joined
Jan 19, 2016
Messages
1
Reaction score
1
This reply comes 9 years later, but hopefully it will be helpful for someone.

I recently ran into this issue when assisting with the porting of a ASP application that uses PerlScript, and discovered that the issue is still present in ActivePerl 5.16.3. I noticed that the reported error message is in CActiveScriptEngine::ReuseEngine, and so figured if there was a way to prevent reuse of script engines, that might serve as a workaround without requiring coding changes or extensive testing.

Sure enough, setting "Maximum Script Engines Cached" (scriptEngineCacheMax) to 0 has the effect of disabling script engine caching, which in turn means no reuse. Since every call gets a fresh script engine, the bug in CActiveScriptEngine::ReuseEngine is no longer exposed. It appears that the setting is a server level property (the setting is visible, but grayed out, at the application level). See https://www.iis.net/configreference/system.webserver/asp/cache for additionaly information.

Toby Ovod-Everett
 
Joined
Apr 21, 2017
Messages
1
Reaction score
0
Thank you, Toby,

This has been haunting me for years, and your tip works marvelously.

Cheers!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,733
Messages
2,569,440
Members
44,829
Latest member
PIXThurman

Latest Threads

Top