Classic ASP : C0000005 Error on execution

I’m trying to execute classic ASP pages on a windows 2008 64 bit R2 box.

Initially the problem was with registering dlls; that’s now fixed.
Register DLL file on Windows Server 2008 R2

Now when I try to access the page I get this error

Active Server Pages error ‘ASP 0241’

CreateObject Exception

index.asp

The CreateObject of ‘(null)’ caused exception C0000005.

Server object error ‘ASP 0177 : c0000005’

When I change the code from Server.CreateObject to CreateObject, I end up with this error

Active Server Pages error ‘ASP 0115’ Unexpected error
index.asp

A trappable error (C0000005) occurred in an external object. The script cannot continue running.

I checked everything I could – Access and admin rights etc.
The application pool are set to No Managed Code + Classic mode.

Any ideas to fix this?

7

I spent several hours chasing this down as well.

In my case, it was caused by reusing a recordset object several times without closing it between DB calls. The code was working without apparent issue in several similar instances, and then one of them just stopped tolerating the process.

The error occurred when I attempted to close the recordset at the end of the page, which made troubleshooting more difficult.

I cleaned up the code, ensuring the recordset was closed between calls, and this resolved the issue.

You’re not going to fix this in ASP. The C0000005 is the Access Violation Exception. This occurs when code attempts to read memory that it hasn’t allocated.

The dll is doing something bad when it loads or during the construction of the object.

Have you tested the dll with a simple .vbs file?

4

I had exactly the same error.

In my case the C0000005 error was caused by a missing dependancy.

ProcessMonitor help me finding it. (Filter by process, and check “Name not found”)

Copying the needed file in the right place solved my problem. (In my case VB6FR.dll was a needed dependancy for vb6 in french.)

1

The problem could be caused by a recordset that outputs a varchar(max) field to the markup. Even though the error does not provide a line number, in my case I was able to pinpoint it to the outputting of the varchar(max) field through trial and error.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code><%
...
rs.Open "SELECT LongDescription FROM Table1"
while (not rs.EOF)
%> <p><%= rs("LongDescription") %></p> <% ' ERROR HAPPENS BECAUSE OF THIS LINE
rs.MoveNext
wend
%>
</code>
<code><% ... rs.Open "SELECT LongDescription FROM Table1" while (not rs.EOF) %> <p><%= rs("LongDescription") %></p> <% ' ERROR HAPPENS BECAUSE OF THIS LINE rs.MoveNext wend %> </code>
<%
...
rs.Open "SELECT LongDescription FROM Table1"
while (not rs.EOF)
   %> <p><%= rs("LongDescription") %></p> <%    ' ERROR HAPPENS BECAUSE OF THIS LINE
   rs.MoveNext
wend
%>

Removing that line fixes the problem, or you can cast the field to a non-max varchar:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code> rs.Open "SELECT LongDescription = Cast(LongDescription as varchar(4000)) FROM Table1"
</code>
<code> rs.Open "SELECT LongDescription = Cast(LongDescription as varchar(4000)) FROM Table1" </code>
 rs.Open "SELECT LongDescription = Cast(LongDescription as varchar(4000)) FROM Table1"

Very important: If you make this fix and the error still happens, recycle the app pool to make the error go away.

(For what it’s worth, I had this problem happen after KB4093114 was installed on a server. I’m not 100% sure that the KB caused the problem but I suspect so because the scripting engine was updated.)

1

I’m running some very old ASP code in IIS on a new Windows 10 1803 installation, and had it briefly running correctly then started to get this error message after running a repair in Office to fix an Outlook issue.

In this case, reinstalling the Microsoft Access Database Engine fixed the problem.

I had same error while loading the csv file data more than once.
Step 1 – Firstly create a temp table to transfer the csv data into temp table and then move to main table and delete temp table once data is moved. This has to be done programmatically.

Step 2 – Go to mysql and select the database and use this query SHOW FULL PROCESSLIST; use without brakets. this will show the status of running objects. If you find any object with status set to Sleep clear it before 2nd attempt to upload the file. Usually the default wait time is about 28000 second. You need to reduce it as per requirement. The code to reduce the wait time is SET GLOBAL wait_timeout=5;. Set it via mysql. This will re-set your global wait time to 5 sec. and change as per your needs. This should resolve your problem. All the best.

For my experience, you are using AVG Free, and after an update, you got this kind of error.

Just ran into this same error while trying to use my own com control and in my case it turned out to be caused by my dll being compiled in debug mode.

There are two ways around that:

  1. Run IIS in debug mode. For 32 bit you use the following line:
    C:WindowsSysWOW64inetsrv>w3wp.exe -debug

    Note that you have to stop the IIS service and for 64 bit you use the one in System32.

  2. Compile a release version 🙂

I’m adding this answer here, though I realise this is very much later than when the question was first answered. I’m putting the answer here in case it saves anyone else the hassle I’ve just been through.

I too was getting this error on my ASP page after I had re-installed Windows 10. Previously on my localhost IIS setup, the same page did not error. However – now it did – with the following error:

Active Server Pages error ‘ASP 0115’ Unexpected error index.asp

A trappable error (C0000005) occurred in an external object. The script cannot continue running.

I tried lots of things to try and sort it, such as:

  1. Reinstalling Windows 10 again
  2. Reinstalling IIS on the new Windows 10 installation
  3. Trying all sorts of combinations of versions of MySQL and the ODBC Connector
  4. Checking for missing files in Windows Process Monitor as per one of the answers on this page
  5. Messing about with Application Pools
  6. Messing about with lots of versions of Microsoft Visual C++ Redistributables

My problem was with an SQL Insert – when it ran, I got the error.

This is a cut down version of it:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>sql = ""
sql = sql & " INSERT INTO my_table ( "
sql = sql & " card_sender, "
sql = sql & " senders_email, "
sql = sql & " recipients_email, "
sql = sql & " card_body, "
sql = sql & " session_id, "
sql = sql & " replyID) VALUES ( "
sql = sql & " ?, "
sql = sql & " ?, "
sql = sql & " ?, "
sql = sql & " ?, "
sql = sql & " ?, "
sql = sql & " ?) "
Set stmt = Server.CreateObject("ADODB.Command")
stmt.ActiveConnection = oConn
stmt.Prepared = true
stmt.commandtext = sql
stmt.Parameters.Append stmt.CreateParameter("@001_card_sender", adVarChar, adParamInput, 255, card_sender)
stmt.Parameters.Append stmt.CreateParameter("@002_senders_email", adVarChar, adParamInput, 255, senders_email)
stmt.Parameters.Append stmt.CreateParameter("@003_recipients_email", adVarChar, adParamInput, 255, recipients_email)
stmt.Parameters.Append stmt.CreateParameter("@004_card_body", adLongVarChar, adParamInput, 256665, card_body)
stmt.Parameters.Append stmt.CreateParameter("@sessionsessionID", adVarChar, adParamInput, 255, session.sessionID)
stmt.Parameters.Append stmt.CreateParameter("@replyID", adVarChar, adParamInput, 255, session("replyID"))
stmt.Execute
Set stmt = Nothing
</code>
<code>sql = "" sql = sql & " INSERT INTO my_table ( " sql = sql & " card_sender, " sql = sql & " senders_email, " sql = sql & " recipients_email, " sql = sql & " card_body, " sql = sql & " session_id, " sql = sql & " replyID) VALUES ( " sql = sql & " ?, " sql = sql & " ?, " sql = sql & " ?, " sql = sql & " ?, " sql = sql & " ?, " sql = sql & " ?) " Set stmt = Server.CreateObject("ADODB.Command") stmt.ActiveConnection = oConn stmt.Prepared = true stmt.commandtext = sql stmt.Parameters.Append stmt.CreateParameter("@001_card_sender", adVarChar, adParamInput, 255, card_sender) stmt.Parameters.Append stmt.CreateParameter("@002_senders_email", adVarChar, adParamInput, 255, senders_email) stmt.Parameters.Append stmt.CreateParameter("@003_recipients_email", adVarChar, adParamInput, 255, recipients_email) stmt.Parameters.Append stmt.CreateParameter("@004_card_body", adLongVarChar, adParamInput, 256665, card_body) stmt.Parameters.Append stmt.CreateParameter("@sessionsessionID", adVarChar, adParamInput, 255, session.sessionID) stmt.Parameters.Append stmt.CreateParameter("@replyID", adVarChar, adParamInput, 255, session("replyID")) stmt.Execute Set stmt = Nothing </code>
sql = ""
sql = sql & " INSERT INTO my_table ( "
sql = sql & " card_sender,  "
sql = sql & " senders_email,  "
sql = sql & " recipients_email,  "
sql = sql & " card_body,  "
sql = sql & " session_id, "
sql = sql & " replyID) VALUES ( "
sql = sql & " ?,  "
sql = sql & " ?,  "
sql = sql & " ?,  "
sql = sql & " ?,  "
sql = sql & " ?,  "
sql = sql & " ?)  "

Set stmt = Server.CreateObject("ADODB.Command")
stmt.ActiveConnection = oConn
stmt.Prepared = true
stmt.commandtext = sql

stmt.Parameters.Append stmt.CreateParameter("@001_card_sender", adVarChar, adParamInput, 255, card_sender)
stmt.Parameters.Append stmt.CreateParameter("@002_senders_email", adVarChar, adParamInput, 255, senders_email)
stmt.Parameters.Append stmt.CreateParameter("@003_recipients_email", adVarChar, adParamInput, 255, recipients_email)
stmt.Parameters.Append stmt.CreateParameter("@004_card_body", adLongVarChar, adParamInput, 256665, card_body)
stmt.Parameters.Append stmt.CreateParameter("@sessionsessionID", adVarChar, adParamInput, 255, session.sessionID)
stmt.Parameters.Append stmt.CreateParameter("@replyID", adVarChar, adParamInput, 255, session("replyID"))

stmt.Execute
Set stmt = Nothing

Via a process of building up the SQL and finding which line triggered the error, I found this line caused the problem:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>stmt.Parameters.Append stmt.CreateParameter("@replyID", adVarChar, adParamInput, 255, session("replyID"))
</code>
<code>stmt.Parameters.Append stmt.CreateParameter("@replyID", adVarChar, adParamInput, 255, session("replyID")) </code>
stmt.Parameters.Append stmt.CreateParameter("@replyID", adVarChar, adParamInput, 255, session("replyID"))

In my example, the session("replyID") value was not set, and that triggered the error.

When I changed the code to check if the session variable was set, it fixed the issue:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>...
foo = session("replyID")
if foo = "" then foo = 1
...
stmt0003.Parameters.Append stmt0003.CreateParameter("@replyID", adVarChar, adParamInput, 255, foo)
</code>
<code>... foo = session("replyID") if foo = "" then foo = 1 ... stmt0003.Parameters.Append stmt0003.CreateParameter("@replyID", adVarChar, adParamInput, 255, foo) </code>
...
foo = session("replyID")
if foo = "" then foo = 1
...
stmt0003.Parameters.Append stmt0003.CreateParameter("@replyID", adVarChar, adParamInput, 255, foo)

More testing confirmed that the error would happen for any variable which was null, so I had to add in an if statement for every variable and set it to something if it was null, to prevent these errors which I didn’t used to get on a previous Windows 10 installation on the same PC.

After spending about a day working on it, it was a relief to get to the bottom of it.

1

Did you just do a Windows update? I did, abouts 2021-11-20 to 21H2 19044.1387. Somehow the update along with other updates made my code constantly crash. I found that I could code around some errors, but the database (MariaDB 10.1) returned values that did not match up. I found I could declare my sql calls differently to get the right returns — but quickly stopped re-coding. Somehow NULL was handled differently.

I was getting suspect that the driver to the database was not working the same way it used to be. I changed all connections from Server.CreateObject to CreateObject. And ended up updating the database (I am now on MariaDB 10.6) and I am using new dedicated MySQL 8.0 Unicode 64-bit driver. I am connecting via DSN.

UPDATE: These (C0000005) errors kept appearing when using Server.CreateObject. With just CreateObject it is now finally starting to look promising.

I was using this code to get the image height and width on every page and it is WIA that somehow had a memory leak and would randomly crash IIS application pool:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code> SET objFSO= CreateObject("Scripting.FileSystemObject")
If objFSO.fileExists(is_blog_img) and InStr(is_blog_img,".webp") = 0 Then
dim oIMG
SET oIMG = CreateObject("WIA.ImageFile") '<< do not use this!
oIMG.loadFile(is_blog_img)
og_image_h = "" & oIMG.Height
og_image_w = "" & oIMG.Width
SET oIMG = nothing
if og_image_h & "" <> "" then
%>
<meta property="og:image:width" content="<%=og_image_w %>" />
<meta property="og:image:height" content="<%=og_image_h %>" />
<%
end if
else
response.write("<!-- no file is_blog_img -->")
og_image_w = "0"
og_image_h = "0"
end if
SET objFSO = Nothing
</code>
<code> SET objFSO= CreateObject("Scripting.FileSystemObject") If objFSO.fileExists(is_blog_img) and InStr(is_blog_img,".webp") = 0 Then dim oIMG SET oIMG = CreateObject("WIA.ImageFile") '<< do not use this! oIMG.loadFile(is_blog_img) og_image_h = "" & oIMG.Height og_image_w = "" & oIMG.Width SET oIMG = nothing if og_image_h & "" <> "" then %> <meta property="og:image:width" content="<%=og_image_w %>" /> <meta property="og:image:height" content="<%=og_image_h %>" /> <% end if else response.write("<!-- no file is_blog_img -->") og_image_w = "0" og_image_h = "0" end if SET objFSO = Nothing </code>
    SET objFSO= CreateObject("Scripting.FileSystemObject")
    If objFSO.fileExists(is_blog_img) and InStr(is_blog_img,".webp") = 0  Then
        dim oIMG
        SET oIMG = CreateObject("WIA.ImageFile") '<< do not use this!
        oIMG.loadFile(is_blog_img)
        og_image_h = "" & oIMG.Height
        og_image_w = "" & oIMG.Width
        SET oIMG = nothing
        if og_image_h & "" <> "" then
            %>
            <meta property="og:image:width" content="<%=og_image_w %>" />
            <meta property="og:image:height" content="<%=og_image_h %>" />
            <%
        end if
    else
        response.write("<!-- no file is_blog_img -->")
        og_image_w = "0"
        og_image_h = "0"
    end if
    SET objFSO = Nothing 

You might want to check out this blog entry, titled “Classic ASP (ASP 3.0) doesn’t work on 64bit with 32bit COM objects” http://blogs.msdn.com/b/robgruen/archive/2005/05/26/422328.aspx

it’s a bit dated and the author incorrectly refers to the ASP handler as an ISAPI filter (it’s an extension, not a filter), but otherwise the information seems good.

if the asp handler is only compiled as 64bit, you will not be able to load a 32bit COM object into it no matter what you do.

the author does mention something about a COM+ solution. I have a feeling that a 32bit out of process COM+ package would be able to load this 32bit COM object and your ASP page could make cross process calls to this COM+ package.

good luck,
Mark

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật