[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Application Verifier indicates an error
- From: Shmuel Zeigerman <shmuz@...>
- Date: Fri, 27 Apr 2012 15:44:08 +0300
[Windows XP SP3 32 bit, Lua 5.1 and 5.2]
Running various Lua binding DLLs with Microsoft Application Verifier, I
noticed that all bindings that are C++ give an error. The error message
is: "Unloading DLL that allocated TLS index that was not freed."
Both Lua and the libraries were built with MinGW 4.5.2.
Here is a simple example that reproduces the error.
/* mylib.cpp */
extern "C" {
#include <lua.h>
}
extern "C" __declspec(dllexport)
int luaopen_mylib (lua_State *L)
{
char* buf = new char;
delete buf;
return 0;
}
-- test.lua
require "mylib"
print "OK" --> it prints OK
Here is the log of Application Verifier:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<avrf:logfile xmlns:avrf="Application Verifier">
<avrf:logSession TimeStarted="2012-04-27 : 15:10:26" PID="3012"
Version="2">
<avrf:logEntry Time="2012-04-27 : 15:10:26" LayerName="TLS"
StopCode="0x350" Severity="Error">
<avrf:message>Unloading DLL that allocated TLS index that was not
freed.</avrf:message>
<avrf:parameter1>4abba - TLS index</avrf:parameter1>
<avrf:parameter2>6e58a0cd - Address of the code that allocated this
TLS index.</avrf:parameter2>
<avrf:parameter3>153cfe6 - DLL name address. Use du to dump
it.</avrf:parameter3>
<avrf:parameter4>6e580000 - DLL base address.</avrf:parameter4>
<avrf:stackTrace>
<avrf:trace>vfbasics!AVrfpCheckAndFreeDllLeakedTlsSlots+62
(d:\avrf\source\base\avrf\vrfcommon\dlls.c @ 1204)</avrf:trace>
<avrf:trace>vfbasics!AVrfpDllUnloadCallback+51
(d:\avrf\source\base\avrf\vrfcommon\dlls.c @ 554)</avrf:trace>
<avrf:trace>ntdll!RtlQueryProcessDebugInformation+117e ( @
0)</avrf:trace>
<avrf:trace>ntdll!RtlDeleteAce+4c05 ( @ 0)</avrf:trace>
<avrf:trace>vfbasics!AVrfpLdrUnloadDll+5d
(d:\avrf\source\base\avrf\vrfcommon\dlls.c @ 1393)</avrf:trace>
<avrf:trace>kernel32!FreeLibrary+19 ( @ 0)</avrf:trace>
<avrf:trace>lua52!luaopen_table+f46 ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_getinfo+11f6 ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_getinfo+1477 ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_yieldk+13d7 ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_getinfo+9e2 ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_yieldk+c5 ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_yieldk+131b ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_yieldk+139d ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_yieldk+2230 ( @ 0)</avrf:trace>
<avrf:trace>lua52!lua_yieldk+7054 ( @ 0)</avrf:trace>
<avrf:trace>lua52!+402349 ( @ 0)</avrf:trace>
<avrf:trace>lua52!+4010db ( @ 0)</avrf:trace>
<avrf:trace>lua52!+401178 ( @ 0)</avrf:trace>
<avrf:trace>kernel32!RegisterWaitForInputIdle+49 ( @ 0)</avrf:trace>
</avrf:stackTrace>
</avrf:logEntry>
</avrf:logSession>
</avrf:logfile>
Any comments please?
--
Shmuel