I have traced this problem to the imon.dll component of the NOD32
Antivirus suite (specifically, version 2.7 with internet filter
version 1.002 build 1013) and will be filing a bug report with them.
The full stack trace at the point of failure is:
ntdll.dll!_KiFastSystemCallRet@0()
ntdll.dll!_NtWaitForSingleObject@12() + 0xc bytes
kernel32.dll!_WaitForSingleObjectEx@12() + 0x84 bytes
ntdll.dll!ExecuteHandler2@20() + 0x26 bytes
ntdll.dll!ExecuteHandler@20() + 0x24 bytes
> ntdll.dll!_KiUserExceptionDispatcher@8() + 0xf bytes
imon.dll!20b2472a()
[Frames below may be incorrect and/or missing, no symbols loaded for
imon.dll]
imon.dll!20b20bca()
imon.dll!20b06e21()
imon.dll!20b23afa()
imon.dll!20b23afa()
imon.dll!20b239f1()
imon.dll!20b239f1()
imon.dll!20b239de()
imon.dll!20b24d79()
kernel32.dll!_MultiByteToWideChar@24() + 0x76 bytes
imon.dll!20b19418()
imon.dll!20b212ae()
imon.dll!20b0602a()
[Managed to Native Transition]
System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer =
{Dimensions:[2]}, int offset = 0, int size,
System.Net.Sockets.SocketFlags socketFlags = None, out
System.Net.Sockets.SocketError errorCode = Success) + 0x139 bytes
System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer, int
offset, int size, System.Net.Sockets.SocketFlags socketFlags) + 0x1d
bytes
System.dll!System.Net.Sockets.NetworkStream.Read(byte[] buffer, int
offset, int size) + 0x78 bytes
System.dll!System.Net.PooledStream.Read(byte[] buffer, int offset,
int size) + 0x16 bytes
System.dll!System.Net.ConnectStream.ReadSingleByte() + 0x45 bytes
System.dll!System.Net.StreamChunkBytes.NextByte.get() + 0x1b bytes
System.dll!
System.Net.ChunkParse.GetChunkSize(System.Net.IReadChunkBytes Source =
{System.Net.StreamChunkBytes}, out int chunkSize = 0) + 0x80 bytes
System.dll!
System.Net.ConnectStream.ProcessReadChunkedSize(System.Net.StreamChunkBytes
ReadByteBuffer = {System.Net.StreamChunkBytes}) + 0x18 bytes
System.dll!System.Net.ConnectStream.ReadChunkedSync(byte[] buffer =
{Dimensions:[1024]}, int offset = 0, int size = 1024) + 0x52 bytes
System.dll!System.Net.ConnectStream.ReadWithoutValidation(byte[]
buffer, int offset, int size, bool abortOnError = true) + 0x58 bytes
System.dll!System.Net.ConnectStream.Read(byte[] buffer = {Dimensions:
[1024]}, int offset = 0, int size) + 0x134 bytes
DownloadTester.exe!
DownloadTester.Program.Main.AnonymousMethod(System.IAsyncResult ar =
{System.Net.ContextAwareResult}) Line 29 + 0x16 bytes C#
System.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr
userToken) + 0x8c bytes
System.dll!System.Net.ContextAwareResult.CompleteCallback(object
state) + 0x1a bytes
mscorlib.dll!
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext
executionContext, System.Threading.ContextCallback callback, object
state) + 0x81 bytes
System.dll!System.Net.ContextAwareResult.Complete(System.IntPtr
userToken) + 0xa7 bytes
System.dll!System.Net.LazyAsyncResult.ProtectedInvokeCallback(object
result, System.IntPtr userToken) + 0x77 bytes
System.dll!System.Net.HttpWebRequest.ProcessResponse() + 0xe1 bytes
System.dll!
System.Net.HttpWebRequest.SetResponse(System.Net.CoreResponseData
coreResponseData) + 0x19b bytes
System.dll!System.Net.HttpWebRequest.SetAndOrProcessResponse(object
responseOrException) + 0x181 bytes
System.dll!
System.Net.ConnectionReturnResult.SetResponses(System.Net.ConnectionReturnResult
returnResult = {System.Net.ConnectionReturnResult}) + 0x6c bytes
System.dll!System.Net.Connection.ReadComplete(int bytesRead,
System.Net.WebExceptionStatus errorStatus) + 0x303 bytes
System.dll!System.Net.Connection.ReadCallback(System.IAsyncResult
asyncResult) + 0xe1 bytes
System.dll!
System.Net.Connection.ReadCallbackWrapper(System.IAsyncResult
asyncResult) + 0x44 bytes
System.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr
userToken) + 0x8c bytes
System.dll!System.Net.ContextAwareResult.Complete(System.IntPtr
userToken) + 0x2f bytes
System.dll!System.Net.LazyAsyncResult.ProtectedInvokeCallback(object
result, System.IntPtr userToken) + 0x77 bytes
System.dll!
System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(uint
errorCode, uint numBytes, System.Threading.NativeOverlapped*
nativeOverlapped) + 0x10c bytes
mscorlib.dll!
System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint
errorCode, uint numBytes, System.Threading.NativeOverlapped* pOVERLAP)
+ 0x7c bytes
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes
ntdll.dll!__RtlUserThreadStart@8() + 0x27 bytes
> Hi,
>
[quoted text clipped - 64 lines]
> Thanks in advance,
> Max
Max Bolingbroke - 27 Sep 2007 20:23 GMT
And ESET have told me that they aren't going to fix it because IMON is
known to be broken :-). I quote their reply below:
""
Hello,
In our next major release (3.0), we are doing away with IMON after
many years and replacing it with two more utilities.
In 1992, when NOD32 was introduced, very few programs operated at the
Winsock level. Today, in addition to Google and Microsoft, 100's of
other developers are creating software in this manner. That would be
fine, except for the fact that any app that operates here needs the
top spot in the stack, and only one program can have it.
As it is now, it can't be enabled at all on a server.
IMON was just the first layer of defense, a supplement. The strengths
of NOD32 are AMON, which scans every file that performs an action, as
it performs that action and the advanced heuristics which is stopping
90%+ of all new threats, before a definition is even written.
By quitting IMON now, you'll not only allow both programs to operate
together, but you'll also lose no coverage.
Thank you,
ESET Tech Support
""
> I have traced this problem to the imon.dll component of the NOD32
> Antivirus suite (specifically, version 2.7 with internet filter
[quoted text clipped - 164 lines]
> > Thanks in advance,
> > Max