DrWatson 4097 in 100% .Net code.

U

Urs Vogel

Hi

My appserver (winservice.exe, runs as a Windows Service), made of 100% .Net
C# code, crashes occasionally (on one machine only), giving the following
DrWatson message:

Ereignistyp: Informationen
Ereignisquelle: DrWatson
Ereigniskategorie: Keine
Ereigniskennung: 4097
Datum: 02.11.2005
Zeit: 14:48:08
Benutzer: Nicht zutreffend
Computer: APP-SRV
Beschreibung:
Die Anwendung "c:\server\winservice.exe" hat einen Programmfehler
verursacht. Datum und Zeit des Fehlers: 02.11.2005 um 14:48:07.628 Ausnahme:
c0000005 an Adresse 7C9424B2 (ntdll!ExpInterlockedPopEntrySListFault)

The server object is a remoting singleton. The few static classes are all
Hashtables and are all synchronized through the Synchronized wrapper, the
only global int counter is protected by Interlocked.Increment(val). No other
static/shared data.

Any idea what this tries to tell me or what it could indicate, what to look
for? Any hints are appreciated.

Thanks, Urs
 
W

Willy Denoyette [MVP]

What it tries to tell you is that there was an Access Violation detected
while executing the "ntdll!ExpInterlockedPopEntrySListFaultWhat function,
that is, an instruction was trying to access a memory location outside the
"normal" user space, or that it was trying to write to Read Only (R/O) or
Execute Only (E/O) memory.
It's very hard to tell without seeing a stack trace, and while I get your
point about pure C# code, let me tell you that such doesn't exist certainly
not at run-time, all is machine code, just a question though, is the type of
val?

Willy.
 
U

Urs Vogel

Willy

The type of val is an Int32, counting the user sessions. Sorry, the question
was put simple to get simple answers ... too complicated questions are
sometimes not properly answered in news gruops.

In fact, there's some minimal C++ interop code running, having a managed
body, calling out to some unmanaged functions in order to talk to older, LIB
based database drivers. These unmanaged functions do not allocate memory,
they just pass Marshal-created (and Marshal-freed) char* and value types.

The problem is that it only occurs on one customer machine, not reproducable
on our systems. Therefore, no stack traces are available at this time. We
use CompuWare BoundsChecker, but couldn't find a thing, no leaks, no memory
violations. We really don't have a clue where we could start to investigate,
or what should be observed in particular, based on the DrWatson message.

Urs
 
W

Willy Denoyette [MVP]

Well, probably you are dealing with heap block corruption, but the problem
is who is corrupting and where and this is hard to find out on a customer
system if you can't start the application under a debugger. All I can tell
is that it's usualy due to writing past buffer ends or writing to freed
memory, but I doubt this will be of any help.

Willy.
 
U

Urs Vogel

Anyway, thanks Will, we will try to get a run-time diagnostic like AppSight
installed. Hope it helps.
Urs
 

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

Top