Omgili, forum search, forums search, search forums, discussion search,discussions search, search discussions, board search, boards search, search boards
  Advanced Search

Need Help Debugging

On Mon, 24 Sep 2007 16:03:36 -0000, Ben <...@gmail.com> wrote:

I have a non-managed c++ service that has a crash periodically.

I analyze the DrWatson dump and every time it seems to point to a
ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
CRITICAL_SECTIONS often throughout the code to manage access to the
variables, since it's a multi-threaded app.

Is there a certain rule of thumb when using Critical Sections to avoid
this ? I saw in MSDN they say to call
InitializeCriticalSectionAndSpinCount instead of just
InitializeCriticalSection in order to avoid memory resource exceptions
on pre-windows-XP systems... but our clients are XP, so I think i'm ok
with using InitializeCriticalSection. Maybe there's something more
recommended to use ?

In my searches, i'm seen some references to stack overflows... i'm not
too familiar with how to avoid it ? can someone offer some
guidance ? I know we use some string variables that can hold a few MB
of xml data... usually they are declared as an STL "string" and passed
as references. Do I need to use 'new' to allocate these large vars ?
does that avoid using the stack ?!?

Thanks for any tips!
ben



On Mon, 24 Sep 2007 20:41:06 +0200, Johannes Passing <...@nospam.com> wrote:

What is the code of the exception that brings your application down? You
can look it up under 'Exception number' in the DrWatson Log. The code
should give you a hint on the reason of the crash.

--Johannes

Ben wrote:
> I have a non-managed c++ service that has a crash periodically.
>
> I analyze the DrWatson dump and every time it seems to point to a
> ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
> CRITICAL_SECTIONS often throughout the code to manage access to the
> variables, since it's a multi-threaded app.
>
> Is there a certain rule of thumb when using Critical Sections to avoid
> this ? I saw in MSDN they say to call
> InitializeCriticalSectionAndSpinCount instead of just
> InitializeCriticalSection in order to avoid memory resource exceptions
> on pre-windows-XP systems... but our clients are XP, so I think i'm ok
> with using InitializeCriticalSection. Maybe there's something more
> recommended to use ?
>
> In my searches, i'm seen some references to stack overflows... i'm not
> too familiar with how to avoid it ? can someone offer some
> guidance ? I know we use some string variables that can hold a few MB
> of xml data... usually they are declared as an STL "string" and passed
> as references. Do I need to use 'new' to allocate these large vars ?
> does that avoid using the stack ?!?
>
> Thanks for any tips!
> ben
>

--
Johannes Passing - http://int3.de/

On Mon, 24 Sep 2007 23:02:02 -0000, Ben <...@gmail.com> wrote:

On Sep 24, 1:41 pm, Johannes Passing
<...@nospam.com> wrote:
> What is the code of the exception that brings your application down? You
> can look it up under 'Exception number' in the DrWatson Log. The code
> should give you a hint on the reason of the crash.
>
> --Johannes
>
>
>
>
>
> Ben wrote:
> > I have a non-managed c++ service that has a crash periodically.
>
> > I analyze the DrWatson dump and every time it seems to point to a
> > ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
> > CRITICAL_SECTIONS often throughout the code to manage access to the
> > variables, since it's a multi-threaded app.
>
> > Is there a certain rule of thumb when using Critical Sections to avoid
> > this ? I saw in MSDN they say to call
> > InitializeCriticalSectionAndSpinCount instead of just
> > InitializeCriticalSection in order to avoid memory resource exceptions
> > on pre-windows-XP systems... but our clients are XP, so I think i'm ok
> > with using InitializeCriticalSection. Maybe there's something more
> > recommended to use ?
>
> > In my searches, i'm seen some references to stack overflows... i'm not
> > too familiar with how to avoid it ? can someone offer some
> > guidance ? I know we use some string variables that can hold a few MB
> > of xml data... usually they are declared as an STL "string" and passed
> > as references. Do I need to use 'new' to allocate these large vars ?
> > does that avoid using the stack ?!?
>
> > Thanks for any tips!
> > ben
>
> --
> Johannes Passing -http://int3.de/- Hide quoted text -
>
> - Show quoted text -

In all cases, it is: c0000005 (access violation)

how can i know if i have a stack/heap overflow ? I saw that option
Jack was referring to is set to 0 (i assume the default) - but wasn't
sure if i should change it and to what.

I did find some sections in the code that used 'malloc', and then used
'delete' instead of 'free' -- I updated those to use 'free' based on a
tip I read, in hopes it'll resolve the problems. But really want to
do it in a more accurate way by learning how to analyze the drWatson
dump instead of just guessing what is wrong in the code...

On Mon, 24 Sep 2007 21:34:54 -0700, "Alexander Grigoriev" <...@earthlink.net> wrote:

You're not trying to initialize the same critical section object multiple
times, by any chance?

"Ben" <...@gmail.com> wrote in message
news...@y42g2000hsy.googlegroups.com...
>I have a non-managed c++ service that has a crash periodically.
>
> I analyze the DrWatson dump and every time it seems to point to a
> ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
> CRITICAL_SECTIONS often throughout the code to manage access to the
> variables, since it's a multi-threaded app.
>
> Is there a certain rule of thumb when using Critical Sections to avoid
> this ? I saw in MSDN they say to call
> InitializeCriticalSectionAndSpinCount instead of just
> InitializeCriticalSection in order to avoid memory resource exceptions
> on pre-windows-XP systems... but our clients are XP, so I think i'm ok
> with using InitializeCriticalSection. Maybe there's something more
> recommended to use ?
>
> In my searches, i'm seen some references to stack overflows... i'm not
> too familiar with how to avoid it ? can someone offer some
> guidance ? I know we use some string variables that can hold a few MB
> of xml data... usually they are declared as an STL "string" and passed
> as references. Do I need to use 'new' to allocate these large vars ?
> does that avoid using the stack ?!?
>
> Thanks for any tips!
> ben
>


On Mon, 24 Sep 2007 21:53:04 -0700, Tim Roberts <...@probo.com> wrote:

Ben <...@gmail.com> wrote:
>
>I have a non-managed c++ service that has a crash periodically.
>
>I analyze the DrWatson dump and every time it seems to point to a
>ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
>CRITICAL_SECTIONS often throughout the code to manage access to the
>variables, since it's a multi-threaded app.

How often do you call InitializeCriticalSection? Typically, you initialize
your critical sections at startup time, and then just use Enter- and
LeaveCriticalSection as a lock.

Also remember that you can't call InitializeCriticalSection on a critical
section that has already been initialized.
--
Tim Roberts, tim...@probo.com
Providenza & Boekelheide, Inc.

On Tue, 25 Sep 2007 15:15:57 -0000, Ben <...@gmail.com> wrote:

On Sep 25, 8:42 am, "Waleri Todorov" <...@not.an.email.com> wrote:
> Dr. Watson can create a crash minidump, that can be used for postmortem debuggin. It will take you to exact location of the crash. With debug build of your code, you will be positioned to the crash location, with debug info loaded, etc...
>
>
>
> "Ben" <...@gmail.com> wrote in mess...@y42g2000hsy.googlegroups.com...
> > I have a non-managed c++ service that has a crash periodically.
>
> > I analyze the DrWatson dump and every time it seems to point to a
> > ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
> > CRITICAL_SECTIONS often throughout the code to manage access to the
> > variables, since it's a multi-threaded app.
>
> > Is there a certain rule of thumb when using Critical Sections to avoid
> > this ? I saw in MSDN they say to call
> > InitializeCriticalSectionAndSpinCount instead of just
> > InitializeCriticalSection in order to avoid memory resource exceptions
> > on pre-windows-XP systems... but our clients are XP, so I think i'm ok
> > with using InitializeCriticalSection. Maybe there's something more
> > recommended to use ?
>
> > In my searches, i'm seen some references to stack overflows... i'm not
> > too familiar with how to avoid it ? can someone offer some
> > guidance ? I know we use some string variables that can hold a few MB
> > of xml data... usually they are declared as an STL "string" and passed
> > as references. Do I need to use 'new' to allocate these large vars ?
> > does that avoid using the stack ?!?
>
> > Thanks for any tips!
> > ben- Hide quoted text -
>
> - Show quoted text -

I do use DrWatson and set to generate a full dump with symbols. I'm
running 'release' code on my 90 user pilot group since the debug
version has a 30-40% cpu spike every 10 seconds when we enumerate
system procs. But I do have a PDB file generated and all the source
code for each version.

Had about 5 crashes this month all from different PCs, and in all of
them, when I looked at the call stack, it seems to have started with a
call to addToLog (a custom func we have to write to the eventviewer)
in order to log some exception that happened in a try{}catch(...){}
block. The first line of that function is MyEnterCriticalSection,
which is our custom CRITICAL_SECTION class. That's the last line in
my code that call stack leads me to... and the next functions i see in
the stack are usually EnterCriticalSection or
IntializeCriticalSection... but double-clicking on them doesn't lead
me inside my custom MyEnterCriticalSection function... anyone know
why ? I did a full re-build one time, and still didn't help...

btw, the MyEnterCriticalSection is part of a custom class I built to
help track CRITICAL_SECTION usage. So in my code, when i want to
protect a section, I call
MyEnterCriticalSection("NameOfCriticalSection",
"NameOfFunctionThatIsRequesting") -- then my custom function, looks up
if "NameOfSection" appears in the <map> object it uses to store the
CRITICAL_SECTION pointers. If it does, it calls EnterCriticalSection
on it, if it doesn't, it creates a new CRITICAL_SECTION pointer and
adds to the <map> as "NameOfSection", then initializes & enters it.
Every time it messes with the <map> it protects it with
EnterCriticalSection. The beautiful thing, is I can get a report of
every critical_section and see which function 'owns' it and at what
time it aquired it and also see which functions are requesting it
currently... it helped me debug deadlocks in minutes.

On Tue, 25 Sep 2007 09:25:05 -0700, "Ivan Brugiolo [MSFT]" <...@online.microsoft.com> wrote:

Assuming you are at least on WinXp/Win2003, then AppVerifier
http://www.microsoft.com/downloads/details.aspx?familyid=BD02C19C-1250-433C-8C1 B-2619BD93B3A2&displaylang=en
does a much better job to track Critical Section usage than other
home brewed components.
And, in any case, the OS, even without instrumentation, tracks critical
sections
for you (you can use !locks in any windbg|cdb|ntsd debugger, for example).
As far as debugging crashes in production environments,
you should learn how to set-up Corporate Wrror Reporting / WER,
or, you should use straight and plain ADPlus.VBS from the debugger package.
In any case, you will have a much better dump than Drtwtsn32.exe can
generate,
and, it will give you a much better idea of what's going on.

Once you have the minidump of your process, you
can load-it in windbg|cdb|ntsd and, after having set-up good symbols,
you can post to the newsgroup the output of `!analyze -f -v;r;~*kb`.

--

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

"Ben" <...@gmail.com> wrote in message
news...@57g2000hsv.googlegroups.com...
> On Sep 25, 8:42 am, "Waleri Todorov" <...@not.an.email.com> wrote:
>> Dr. Watson can create a crash minidump, that can be used for postmortem
>> debuggin. It will take you to exact location of the crash. With debug
>> build of your code, you will be positioned to the crash location, with
>> debug info loaded, etc...
>>
>>
>>
>> "Ben" <...@gmail.com> wrote in
>> mess...@y42g2000hsy.googlegroups.com...
>> > I have a non-managed c++ service that has a crash periodically.
>>
>> > I analyze the DrWatson dump and every time it seems to point to a
>> > ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
>> > CRITICAL_SECTIONS often throughout the code to manage access to the
>> > variables, since it's a multi-threaded app.
>>
>> > Is there a certain rule of thumb when using Critical Sections to avoid
>> > this ? I saw in MSDN they say to call
>> > InitializeCriticalSectionAndSpinCount instead of just
>> > InitializeCriticalSection in order to avoid memory resource exceptions
>> > on pre-windows-XP systems... but our clients are XP, so I think i'm ok
>> > with using InitializeCriticalSection. Maybe there's something more
>> > recommended to use ?
>>
>> > In my searches, i'm seen some references to stack overflows... i'm not
>> > too familiar with how to avoid it ? can someone offer some
>> > guidance ? I know we use some string variables that can hold a few MB
>> > of xml data... usually they are declared as an STL "string" and passed
>> > as references. Do I need to use 'new' to allocate these large vars ?
>> > does that avoid using the stack ?!?
>>
>> > Thanks for any tips!
>> > ben- Hide quoted text -
>>
>> - Show quoted text -
>
> I do use DrWatson and set to generate a full dump with symbols. I'm
> running 'release' code on my 90 user pilot group since the debug
> version has a 30-40% cpu spike every 10 seconds when we enumerate
> system procs. But I do have a PDB file generated and all the source
> code for each version.
>
> Had about 5 crashes this month all from different PCs, and in all of
> them, when I looked at the call stack, it seems to have started with a
> call to addToLog (a custom func we have to write to the eventviewer)
> in order to log some exception that happened in a try{}catch(...){}
> block. The first line of that function is MyEnterCriticalSection,
> which is our custom CRITICAL_SECTION class. That's the last line in
> my code that call stack leads me to... and the next functions i see in
> the stack are usually EnterCriticalSection or
> IntializeCriticalSection... but double-clicking on them doesn't lead
> me inside my custom MyEnterCriticalSection function... anyone know
> why ? I did a full re-build one time, and still didn't help...
>
> btw, the MyEnterCriticalSection is part of a custom class I built to
> help track CRITICAL_SECTION usage. So in my code, when i want to
> protect a section, I call
> MyEnterCriticalSection("NameOfCriticalSection",
> "NameOfFunctionThatIsRequesting") -- then my custom function, looks up
> if "NameOfSection" appears in the <map> object it uses to store the
> CRITICAL_SECTION pointers. If it does, it calls EnterCriticalSection
> on it, if it doesn't, it creates a new CRITICAL_SECTION pointer and
> adds to the <map> as "NameOfSection", then initializes & enters it.
> Every time it messes with the <map> it protects it with
> EnterCriticalSection. The beautiful thing, is I can get a report of
> every critical_section and see which function 'owns' it and at what
> time it aquired it and also see which functions are requesting it
> currently... it helped me debug deadlocks in minutes.
>


On Tue, 25 Sep 2007 20:03:17 -0000, Ben <...@gmail.com> wrote:

On Sep 25, 11:25 am, "Ivan Brugiolo [MSFT]"
<...@online.microsoft.com> wrote:
> Assuming you are at least on WinXp/Win2003, then AppVerifierhttp://www.microsoft.com/downloads/details.aspx?familyid=BD02C19C-125 ...
> does a much better job to track Critical Section usage than other
> home brewed components.
> And, in any case, the OS, even without instrumentation, tracks critical
> sections
> for you (you can use !locks in any windbg|cdb|ntsd debugger, for example).
> As far as debugging crashes in production environments,
> you should learn how to set-up Corporate Wrror Reporting / WER,
> or, you should use straight and plain ADPlus.VBS from the debugger package.
> In any case, you will have a much better dump than Drtwtsn32.exe can
> generate,
> and, it will give you a much better idea of what's going on.
>
> Once you have the minidump of your process, you
> can load-it in windbg|cdb|ntsd and, after having set-up good symbols,
> you can post to the newsgroup the output of `!analyze -f -v;r;~*kb`.
>
> --
>
> --
> This posting is provided "AS IS" with no warranties, and confers no rights.
> Use of any included script samples are subject to the terms specified athttp://www.microsoft.com/info/cpyright.htm
>
> "Ben" <...@gmail.com> wrote in message
>
> news...@57g2000hsv.googlegroups.com...
>
>
>
> > On Sep 25, 8:42 am, "Waleri Todorov" <...@not.an.email.com> wrote:
> >> Dr. Watson can create a crash minidump, that can be used for postmortem
> >> debuggin. It will take you to exact location of the crash. With debug
> >> build of your code, you will be positioned to the crash location, with
> >> debug info loaded, etc...
>
> >> "Ben" <...@gmail.com> wrote in
> >> mess...@y42g2000hsy.googlegroups.com...
> >> > I have a non-managed c++ service that has a crash periodically.
>
> >> > I analyze the DrWatson dump and every time it seems to point to a
> >> > ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
> >> > CRITICAL_SECTIONS often throughout the code to manage access to the
> >> > variables, since it's a multi-threaded app.
>
> >> > Is there a certain rule of thumb when using Critical Sections to avoid
> >> > this ? I saw in MSDN they say to call
> >> > InitializeCriticalSectionAndSpinCount instead of just
> >> > InitializeCriticalSection in order to avoid memory resource exceptions
> >> > on pre-windows-XP systems... but our clients are XP, so I think i'm ok
> >> > with using InitializeCriticalSection. Maybe there's something more
> >> > recommended to use ?
>
> >> > In my searches, i'm seen some references to stack overflows... i'm not
> >> > too familiar with how to avoid it ? can someone offer some
> >> > guidance ? I know we use some string variables that can hold a few MB
> >> > of xml data... usually they are declared as an STL "string" and passed
> >> > as references. Do I need to use 'new' to allocate these large vars ?
> >> > does that avoid using the stack ?!?
>
> >> > Thanks for any tips!
> >> > ben- Hide quoted text -
>
> >> - Show quoted text -
>
> > I do use DrWatson and set to generate a full dump with symbols. I'm
> > running 'release' code on my 90 user pilot group since the debug
> > version has a 30-40% cpu spike every 10 seconds when we enumerate
> > system procs. But I do have a PDB file generated and all the source
> > code for each version.
>
> > Had about 5 crashes this month all from different PCs, and in all of
> > them, when I looked at the call stack, it seems to have started with a
> > call to addToLog (a custom func we have to write to the eventviewer)
> > in order to log some exception that happened in a try{}catch(...){}
> > block. The first line of that function is MyEnterCriticalSection,
> > which is our custom CRITICAL_SECTION class. That's the last line in
> > my code that call stack leads me to... and the next functions i see in
> > the stack are usually EnterCriticalSection or
> > IntializeCriticalSection... but double-clicking on them doesn't lead
> > me inside my custom MyEnterCriticalSection function... anyone know
> > why ? I did a full re-build one time, and still didn't help...
>
> > btw, the MyEnterCriticalSection is part of a custom class I built to
> > help track CRITICAL_SECTION usage. So in my code, when i want to
> > protect a section, I call
> > MyEnterCriticalSection("NameOfCriticalSection",
> > "NameOfFunctionThatIsRequesting") -- then my custom function, looks up
> > if "NameOfSection" appears in the <map> object it uses to store the
> > CRITICAL_SECTION pointers. If it does, it calls EnterCriticalSection
> > on it, if it doesn't, it creates a new CRITICAL_SECTION pointer and
> > adds to the <map> as "NameOfSection", then initializes & enters it.
> > Every time it messes with the <map> it protects it with
> > EnterCriticalSection. The beautiful thing, is I can get a report of
> > every critical_section and see which function 'owns' it and at what
> > time it aquired it and also see which functions are requesting it
> > currently... it helped me debug deadlocks in minutes.- Hide quoted text -
>
> - Show quoted text -

Thank you for all this info!

Yea, we're XP/2003. That AppVerifier sounds interesting, but doesn't
look like it works for services ? (since it asks for a file path to
launch).

I looked at the ADPlus.vbs before... then thought might be easier to
utilize drWatson, instead of copying all the files needed for it to
work to each systems -- but if you say it makes a better dump file
might be worth to try... So I noticed i just need to copy just 5
files to make it work... not too bad... two questions:

1) when running on a remote system (not the development PC) it warns
about not having the _NT_SYMBOL_PATH defined and it'll be forced to
use 'export' symbols -- is this a big deal ? do I need to copy the PDB
file to each system i'm debugging ? I did perform a 'test' crash on a
remote system, and it debugged ok on my PC and brought me to the line
of code that caused the crash.

2) i noticed when cdb.exe is killed, it terminates the debugged
process as well - is there any way to avoid this ? i didn't find a
switch...

btw, the other thing I like about drWatson is that it seems non-
invasive.. it doesn't touch the process until it crashes... but with
cdb.exe is seems to inject itself into the process... maybe that's
what makes it better ? it definatley wouldn't be an option we can
always leave on... i guess only leave it active during the debug
phase (while drWatson could of always been there just in case).

I tried !locks while attached to my process just for kicks, but it
just returned "Scanned 549 critical sections" -- is it normal ? ...how
do u make give more details ?

On Tue, 25 Sep 2007 22:04:16 -0000, Ben <...@gmail.com> wrote:

On Sep 25, 3:03 pm, Ben <...@gmail.com> wrote:
> On Sep 25, 11:25 am, "Ivan Brugiolo [MSFT]"
>
>
>
>
>
> <...@online.microsoft.com> wrote:
> > Assuming you are at least on WinXp/Win2003, then AppVerifierhttp://www.microsoft.com/downloads/details.aspx?familyid=BD02C19C-125 ...
> > does a much better job to track Critical Section usage than other
> > home brewed components.
> > And, in any case, the OS, even without instrumentation, tracks critical
> > sections
> > for you (you can use !locks in any windbg|cdb|ntsd debugger, for example).
> > As far as debugging crashes in production environments,
> > you should learn how to set-up Corporate Wrror Reporting / WER,
> > or, you should use straight and plain ADPlus.VBS from the debugger package.
> > In any case, you will have a much better dump than Drtwtsn32.exe can
> > generate,
> > and, it will give you a much better idea of what's going on.
>
> > Once you have the minidump of your process, you
> > can load-it in windbg|cdb|ntsd and, after having set-up good symbols,
> > you can post to the newsgroup the output of `!analyze -f -v;r;~*kb`.
>
> > --
>
> > --
> > This posting is provided "AS IS" with no warranties, and confers no rights.
> > Use of any included script samples are subject to the terms specified athttp://www.microsoft.com/info/cpyright.htm
>
> > "Ben" <...@gmail.com> wrote in message
>
> >...@57g2000hsv.googlegroups.com...
>
> > > On Sep 25, 8:42 am, "Waleri Todorov" <...@not.an.email.com> wrote:
> > >> Dr. Watson can create a crash minidump, that can be used for postmortem
> > >> debuggin. It will take you to exact location of the crash. With debug
> > >> build of your code, you will be positioned to the crash location, with
> > >> debug info loaded, etc...
>
> > >> "Ben" <...@gmail.com> wrote in
> > >> mess...@y42g2000hsy.googlegroups.com...
> > >> > I have a non-managed c++ service that has a crash periodically.
>
> > >> > I analyze the DrWatson dump and every time it seems to point to a
> > >> > ntdll!RtlInitializeCriticalSectionAndSpinCount. I do use
> > >> > CRITICAL_SECTIONS often throughout the code to manage access to the
> > >> > variables, since it's a multi-threaded app.
>
> > >> > Is there a certain rule of thumb when using Critical Sections to avoid
> > >> > this ? I saw in MSDN they say to call
> > >> > InitializeCriticalSectionAndSpinCount instead of just
> > >> > InitializeCriticalSection in order to avoid memory resource exceptions
> > >> > on pre-windows-XP systems... but our clients are XP, so I think i'm ok
> > >> > with using InitializeCriticalSection. Maybe there's something more
> > >> > recommended to use ?
>
> > >> > In my searches, i'm seen some references to stack overflows... i'm not
> > >> > too familiar with how to avoid it ? can someone offer some
> > >> > guidance ? I know we use some string variables that can hold a few MB
> > >> > of xml data... usually they are declared as an STL "string" and passed
> > >> > as references. Do I need to use 'new' to allocate these large vars ?
> > >> > does that avoid using the stack ?!?
>
> > >> > Thanks for any tips!
> > >> > ben- Hide quoted text -
>
> > >> - Show quoted text -
>
> > > I do use DrWatson and set to generate a full dump with symbols. I'm
> > > running 'release' code on my 90 user pilot group since the debug
> > > version has a 30-40% cpu spike every 10 seconds when we enumerate
> > > system procs. But I do have a PDB file generated and all the source
> > > code for each version.
>
> > > Had about 5 crashes this month all from different PCs, and in all of
> > > them, when I looked at the call stack, it seems to have started with a
> > > call to addToLog (a custom func we have to write to the eventviewer)
> > > in order to log some exception that happened in a try{}catch(...){}
> > > block. The first line of that function is MyEnterCriticalSection,
> > > which is our custom CRITICAL_SECTION class. That's the last line in
> > > my code that call stack leads me to... and the next functions i see in
> > > the stack are usually EnterCriticalSection or
> > > IntializeCriticalSection... but double-clicking on them doesn't lead
> > > me inside my custom MyEnterCriticalSection function... anyone know
> > > why ? I did a full re-build one time, and still didn't help...
>
> > > btw, the MyEnterCriticalSection is part of a custom class I built to
> > > help track CRITICAL_SECTION usage. So in my code, when i want to
> > > protect a section, I call
> > > MyEnterCriticalSection("NameOfCriticalSection",
> > > "NameOfFunctionThatIsRequesting") -- then my custom function, looks up
> > > if "NameOfSection" appears in the <map> object it uses to store the
> > > CRITICAL_SECTION pointers. If it does, it calls EnterCriticalSection
> > > on it, if it doesn't, it creates a new CRITICAL_SECTION pointer and
> > > adds to the <map> as "NameOfSection", then initializes & enters it.
> > > Every time it messes with the <map> it protects it with
> > > EnterCriticalSection. The beautiful thing, is I can get a report of
> > > every critical_section and see which function 'owns' it and at what
> > > time it aquired it and also see which functions are requesting it
> > > currently... it helped me debug deadlocks in minutes.- Hide quoted text -
>
> > - Show quoted text -
>
> Thank you for all this info!
>
> Yea, we're XP/2003. That AppVerifier sounds interesting, but doesn't
> look like it works for services ? (since it asks for a file path to
> launch).
>
> I looked at the ADPlus.vbs before... then thought might be easier to
> utilize drWatson, instead of copying all the files needed for it to
> work to each systems -- but if you say it makes a better dump file
> might be worth to try... So I noticed i just need to copy just 5
> files to make it work... not too bad... two questions:
>
> 1) when running on a remote system (not the development PC) it warns
> about not having the _NT_SYMBOL_PATH defined and it'll be forced to
> use 'export' symbols -- is this a big deal ? do I need to copy the PDB
> file to each system i'm debugging ? I did perform a 'test' crash on a
> remote system, and it debugged ok on my PC and brought me to the line
> of code that caused the crash.
>
> 2) i noticed when cdb.exe is killed, it terminates the debugged
> process as well - is there any way to avoid this ? i didn't find a
> switch...
>
> btw, the other thing I like about drWatson is that it seems non-
> invasive.. it doesn't touch the process until it crashes... but with
> cdb.exe is seems to inject itself into the process... maybe that's
> what makes it better ? it definatley wouldn't be an option we can
> always leave on... i guess only leave it active during the debug
> phase (while drWatson could of always been there just in case).
>
> I tried !locks while attached to my process just for kicks, but it
> just returned "Scanned 549 critical sections" -- is it normal ? ...how
> do u make give more details ?- Hide quoted text -
>
> - Show quoted text -

btw, it just crashed again (with drWatson still doing the dump) - a
little different this time, since it's not in the addToLog function
while trying to log an exception, rather, it's just attempting to send
a log to the server file using our CLogFileManager class. The last
function in my code I can double-click on in the call stack is
AmdocsSIMS!CLogFileManager::readAsZippedB64 (which attempts to read
the log file and return a B64 string) -- when I double click it leads
me to the first line in the readAsZippedB64 function which is:

tstring sLockID =
CThreadPool::Instance().LockThreadResource(_T("LogFile-") +
m_sFilePath, _T("CLogFileManager::readAsZippedB64"));

This LockThreadResource is really that 'MyEnterCriticalSection'
function i was describing above... according to the call stack it
almost seems like it never goes into this function, but fails on some
STL string functions. Is that what you get out of it too ? Is this
log not useful ? do i need to generate those ADPlus logs instead ?

0:003> !analyze -f -v;r;~*kb
*******************************************************************************
*
*
* Exception
Analysis *
*
*
*******************************************************************************

***** OS symbols are WRONG. Please fix symbols to do analysis.

*************************************************************************
***
***
***
***
*** Your debugger is not using the correct symbols
***
***
***
*** In order for this command to work properly, your symbol path
***
*** must point to .pdb files that have full type information.
***
***
***
*** Certain .pdb files (such as the public OS symbols) do not
***
*** contain the required information. Contact the group that
***
*** provided you with these symbols if you need this command to
***
*** work.
***
***
***
*** Type referenced: ntdll!_PEB
***
***
***
*************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for advapi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for ole32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for rpcrt4.dll -
*************************************************************************
***
***
***
***
*** Your debugger is not using the correct symbols
***
***
***
*** In order for this command to work properly, your symbol path
***
*** must point to .pdb files that have full type information.
***
***
***
*** Certain .pdb files (such as the public OS symbols) do not
***
*** contain the required information. Contact the group that
***
*** provided you with these symbols if you need this command to
***
*** work.
***
***
***
*** Type referenced: ntdll!_PEB
***
***
***
*************************************************************************

FAULTING_IP:
ntdll!tan+d9
7c902f17 8b18 mov ebx,dword ptr [eax]

EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 7c902f17 (ntdll!tan+0x000000d9)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 00af6698
Attempt to read from address 00af6698

DEFAULT_BUCKET_ID: WRONG_SYMBOLS

PROCESS_NAME: AmdocsSIMS.exe

FAULTING_MODULE: 7c900000 ntdll

DEBUG_FLR_IMAGE_TIMESTAMP: 0

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx"
referenced memory at "0x%08lx". The memory could not be "%s".

READ_ADDRESS: 00af6698

DETOURED_IMAGE: 1

LAST_CONTROL_TRANSFER: from 7c91071e to 7c902f17

STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may
be wrong.
00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!tan+0xd9
00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!RtlAllocateHeap
+0x14a
00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
+0xd7
00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
visual studio 8\vc\include\xmemory @ 146]
00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 2010]
00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 1060]
00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
+<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
\program files\microsoft visual studio 8\vc\include\string @ 35]
00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 408]
00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 523]
00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 283]
00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 57]
00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
GetModuleFileNameA+0x1b4

STACK_COMMAND: ~3s; .ecxr ; kb

FOLLOWUP_IP:
AmdocsSIMS!malloc+7a [f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.c
@ 163]
00453318 8bf0 mov esi,eax

SYMBOL_STACK_INDEX: 3

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: heap_corruption

IMAGE_NAME: heap_corruption

ADDITIONAL_DEBUG_TEXT: Enable Pageheap/AutoVerifer

FAULTING_THREAD: 000021f4

PRIMARY_PROBLEM_CLASS: HEAP_CORRUPTION

BUGCHECK_STR: APPLICATION_FAULT_HEAP_CORRUPTION

SYMBOL_NAME: heap_corruption!heap_corruption

FAILURE_BUCKET_ID:
APPLICATION_FAULT_HEAP_CORRUPTION_DETOURED_heap_corruption!
heap_corruption

BUCKET_ID: APPLICATION_FAULT_HEAP_CORRUPTION_DETOURED_heap_corruption!
heap_corruption

Followup: MachineOwner
---------

eax=00af6698 ebx=00980000 ecx=398a0002 edx=398a0003 esi=00980778
edi=00000005
eip=7c902f17 esp=00f9f8c4 ebp=00980778 iopl=0 nv up ei pl nz
na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
efl=00000202
ntdll!tan+0xd9:
7c902f17 8b18 mov ebx,dword ptr [eax] ds:
0023:00af6698=????????

0 Id: f94.f70 Suspend: 1 Teb: 7ffdf000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
0012fb70 77deb3cb 00000090 0012fc3c 00000216 ntdll!KiFastSystemCallRet
0012fb9c 77deb25f 00000090 0012fc3c 00000216 advapi32!SetServiceStatus
+0x238
0012fc10 77deb568 00000090 0012fc3c 00000216 advapi32!SetServiceStatus
+0xcc
0012fe70 00431a1a 0012fe88 f29d43b1 00000007 advapi32!
StartServiceCtrlDispatcherW+0x8b
0012febc 004319b4 f29d43f9 00000a28 00000002 AmdocsSIMS!
CService::passControlToSCManager+0x4a [c:\_visual studio 2005\underdev
\sims3\sims client\service.cpp @ 131]
0012ff1c 00431245 0012fea0 0012fe84 00454976 AmdocsSIMS!CService::Init
+0x3e4 [c:\_visual studio 2005\underdev\sims3\sims client\service.cpp
@ 116]
0012ff28 00454976 00400000 00000000 00152337 AmdocsSIMS!WinMain+0x25
[c:\_visual studio 2005\underdev\sims3\sims client\service.cpp @ 26]
0012ffc0 7c816fd7 00640065 0074f158 7ffda000 AmdocsSIMS!
__tmainCRTStartup+0x177 [f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c
@ 324]
0012fff0 00000000 004549df 00000000 78746341 kernel32!
RegisterWaitForInputIdle+0x49

1 Id: f94.1b34 Suspend: 1 Teb: 7ffdd000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
00a9fdf8 7c802451 000003e8 00000000 00000000 ntdll!KiFastSystemCallRet
00a9fe08 0040b2c1 000003e8 f2264329 00000000 kernel32!Sleep+0xf
00a9fe70 0040b0f0 0049e070 f22643b1 00000007 AmdocsSIMS!
CClient::monitorForShutdownRequest+0x1c1 [c:\_visual studio
2005\underdev\sims3\sims client\client.cpp @ 1213]
00a9fea0 0043384f 0049e070 f226420d 00000000 AmdocsSIMS!CClient::Start
+0x300 [c:\_visual studio 2005\underdev\sims3\sims client\client.cpp @
1181]
00a9ff3c 00433048 f2264279 00000000 00152f80 AmdocsSIMS!
CService::ServiceStart+0x14f [c:\_visual studio 2005\underdev
\sims3\sims client\service.cpp @ 616]
00a9ff98 0043127b 0049e2a0 77deb48b 00000001 AmdocsSIMS!
CService::Service_Main+0x108 [c:\_visual studio 2005\underdev
\sims3\sims client\service.cpp @ 415]
00a9ffa0 77deb48b 00000001 00152f88 0012e758 AmdocsSIMS!service_main
+0xb [c:\_visual studio 2005\underdev\sims3\sims client\service.cpp @
45]
00a9ffb4 7c80b683 00152f80 00000000 0012e758 advapi32!
CryptVerifySignatureW+0x29
00a9ffec 00000000 77deb479 00152f80 00000000 kernel32!
GetModuleFileNameA+0x1b4

2 Id: f94.1780 Suspend: 1 Teb: 7ffdc000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
00e9fe74 7c802451 000003e8 00000000 7c802442 ntdll!KiFastSystemCallRet
00e9fe84 00420302 000003e8 f26643a5 00e9ff0c kernel32!Sleep+0xf
00e9feac 00433c7f f266423d 0015b438 00bd5a10 AmdocsSIMS!
CLogFileManager::SendLogCycle+0xb2 [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 284]
00e9ff74 004533b5 00985148 f266429d 0015b438 AmdocsSIMS!
SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 57]
00e9ffac 0045345a 00000000 7c80b683 00bd5a10 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
00e9ffb4 7c80b683 00bd5a10 0015b438 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
00e9ffec 00000000 004533db 00bd5a10 00000000 kernel32!
GetModuleFileNameA+0x1b4

# 3 Id: f94.21f4 Suspend: 1 Teb: 7ffdb000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!tan+0xd9
00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!RtlAllocateHeap
+0x14a
00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
+0xd7
00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
visual studio 8\vc\include\xmemory @ 146]
00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 2010]
00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 1060]
00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
+<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
\program files\microsoft visual studio 8\vc\include\string @ 35]
00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 408]
00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 523]
00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 283]
00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 57]
00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
GetModuleFileNameA+0x1b4

4 Id: f94.26b4 Suspend: 1 Teb: 7ffd9000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
0109fd90 7c802451 000003e8 00000000 0049e070 ntdll!KiFastSystemCallRet
0109fda0 004092e4 000003e8 00000000 00accfe8 kernel32!Sleep+0xf
0109fdb8 004280e6 0049e070 000007d0 f386430d AmdocsSIMS!
CClient::SIMSSleep+0x34 [c:\_visual studio 2005\underdev\sims3\sims
client\client.cpp @ 491]
0109feac 0043460e f386423d 00a9f74c 00ba0328 AmdocsSIMS!
CMonitorFile::ProcessPendingFileCreationsQueue+0x246 [c:\_visual
studio 2005\underdev\sims3\sims client\monitorfile.cpp @ 998]
0109ff74 004533b5 00bd53a8 f386429d 00a9f74c AmdocsSIMS!
SIMSWorkerThread+0xc3e [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 300]
0109ffac 0045345a 00000000 7c80b683 00ba0328 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
0109ffb4 7c80b683 00ba0328 00a9f74c 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
0109ffec 00000000 004533db 00ba0328 00000000 kernel32!
GetModuleFileNameA+0x1b4

5 Id: f94.25e8 Suspend: 1 Teb: 7ffd8000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
0119f9dc 7c90104b 00980608 7c911320 00980608 ntdll!KiFastSystemCallRet
0119fc10 00453318 00980000 00000000 00000020 ntdll!
RtlEnterCriticalSection+0x46
0119fc30 004511f6 00000020 0119fd08 7c910551 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
0119fc48 00404a01 00000020 00000000 00000000 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
0119fc5c 004043a3 f39641b9 0119fd44 0119fcc8 AmdocsSIMS!
std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
visual studio 8\vc\include\xmemory @ 146]
0119fc88 00403d50 0119fcc8 0000000c 00000000 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 2010]
0119fca4 00404ab0 00486260 0000000c f3964189 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 1060]
0119fcec 00435303 0119fd44 0119fd28 f3964085 AmdocsSIMS!std::operator
+<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
\program files\microsoft visual studio 8\vc\include\string @ 35]
0119fdb4 00427da1 0000004a 00c67cf0 0119fe60 AmdocsSIMS!
CThreadPool::LockThreadResource+0xf3 [c:\_visual studio 2005\underdev
\sims3\sims client\threadpool.cpp @ 64]
0119fe60 0042836b 0049de20 f3964399 00000000 AmdocsSIMS!
CMonitorFile::GetFileChangesQueueSize+0x91 [c:\_visual studio
2005\underdev\sims3\sims client\monitorfile.cpp @ 921]
0119fea8 00434584 0049de20 f396423d 00bd59b0 AmdocsSIMS!
CMonitorFile::ProcessFileChangesQueue+0x6b [c:\_visual studio
2005\underdev\sims3\sims client\monitorfile.cpp @ 1088]
0119ff74 004533b5 00ba00d0 f396429d 00bd59b0 AmdocsSIMS!
SIMSWorkerThread+0xbb4 [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 284]
0119ffac 0045345a 00a9f730 7c80b683 00ba0568 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
0119ffb4 7c80b683 00ba0568 00bd59b0 00a9f730 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
0119ffec 00000000 004533db 00ba0568 00000000 kernel32!
GetModuleFileNameA+0x1b4

6 Id: f94.920 Suspend: 1 Teb: 7ffd7000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
012bffb4 7c80b683 00000000 00a9f7f0 7c90ee18 ntdll!KiFastSystemCallRet
012bffec 00000000 5b890e71 00000000 00000000 kernel32!
GetModuleFileNameA+0x1b4

7 Id: f94.ee0 Suspend: 1 Teb: 7ffd6000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
014cff80 77e76c22 014cffa8 77e76a3b 0016beb8 ntdll!KiFastSystemCallRet
014cff88 77e76a3b 0016beb8 00a9eab8 00a9eb00 rpcrt4!I_RpcBCacheFree
+0x5ea
014cffa8 77e76c0a 001598d8 014cffec 7c80b683 rpcrt4!I_RpcBCacheFree
+0x403
014cffb4 7c80b683 0015e020 00a9eab8 00a9eb00 rpcrt4!I_RpcBCacheFree
+0x5d2
014cffec 00000000 77e76bf0 0015e020 00000000 kernel32!
GetModuleFileNameA+0x1b4

8 Id: f94.24b4 Suspend: 1 Teb: 7ffd4000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
013ccca0 00453318 00980000 00000000 00001000 ntdll!
RtlInitializeCriticalSection+0x71c
013cccc0 004511f6 00001000 00000007 00985464 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
013cccd8 00440c6a 00001000 f3b37001 00000000 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
013ccd30 00440841 013cff54 00000001 000003e8 AmdocsSIMS!
CUtils::addToMessageLog+0x3a [c:\_visual studio 2005\underdev
\sims3\sims client\utils.cpp @ 955]
013ccd98 00434b8d 013cff54 00000001 000003e8 AmdocsSIMS!
CUtils::addToLog+0xf1 [c:\_visual studio 2005\underdev\sims3\sims
client\utils.cpp @ 797]
013cff74 004533b5 00ac67b8 f3b3429d 0016ba60 AmdocsSIMS!
SIMSWorkerThread+0x11bd [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 404]
013cffac 0045345a 00000000 7c80b683 00b57dc0 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
013cffb4 7c80b683 00b57dc0 0016ba60 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
013cffec 00000000 004533db 00b57dc0 00000000 kernel32!
GetModuleFileNameA+0x1b4

9 Id: f94.fdc Suspend: 1 Teb: 7ffaf000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
016cfe74 7c802451 000003e8 00000000 7c802442 ntdll!KiFastSystemCallRet
016cfe84 00420302 000003e8 f3e343a5 016cff0c kernel32!Sleep+0xf
016cfeac 00433c7f f3e3423d 0016ba60 00ae2db0 AmdocsSIMS!
CLogFileManager::SendLogCycle+0xb2 [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 284]
016cff74 004533b5 00ac8040 f3e3429d 0016ba60 AmdocsSIMS!
SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 57]
016cffac 0045345a 00000000 7c80b683 00ae2db0 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
016cffb4 7c80b683 00ae2db0 0016ba60 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
016cffec 00000000 004533db 00ae2db0 00000000 kernel32!
GetModuleFileNameA+0x1b4

10 Id: f94.1334 Suspend: 1 Teb: 7ffae000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
017cfe74 7c802451 00001388 00000000 7e4194f4 ntdll!KiFastSystemCallRet
017cfe84 004380c3 00001388 f3f343a5 017cff34 kernel32!Sleep+0xf
017cfeac 00433f10 f3f3423d 00000000 00aa4100 AmdocsSIMS!
CUserInterface::MonitorUserInputActivity+0xa3 [c:\_visual studio
2005\underdev\sims3\sims client\userinterface.cpp @ 54]
017cff74 004533b5 00ae72e0 f3f3429d 00000000 AmdocsSIMS!
SIMSWorkerThread+0x540 [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 124]
017cffac 0045345a 00000000 7c80b683 00aa4100 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
017cffb4 7c80b683 00aa4100 00000000 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
017cffec 00000000 004533db 00aa4100 00000000 kernel32!
GetModuleFileNameA+0x1b4

11 Id: f94.1048 Suspend: 1 Teb: 7ffad000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
018cfe10 7c802451 000003e8 00000000 018cfeac ntdll!KiFastSystemCallRet
018cfe20 0040ad96 000003e8 f3034301 00000000 kernel32!Sleep+0xf
018cfeac 00434a64 f303423d 7c9106eb 00b5d6b8 AmdocsSIMS!
CClient::RunClientReport+0x1f6 [c:\_visual studio 2005\underdev
\sims3\sims client\client.cpp @ 1111]
018cff74 004533b5 00ac9e88 f303429d 7c9106eb AmdocsSIMS!
SIMSWorkerThread+0x1094 [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 378]
018cffac 0045345a 00000020 7c80b683 00b5d6b8 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
018cffb4 7c80b683 00b5d6b8 7c9106eb 00000020 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
018cffec 00000000 004533db 00b5d6b8 00000000 kernel32!
GetModuleFileNameA+0x1b4

12 Id: f94.2394 Suspend: 1 Teb: 7ffac000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
019cfe2c 7c802532 00000308 000003e8 00000000 ntdll!KiFastSystemCallRet
019cfe40 0040aa20 00000308 000003e8 f3134365 kernel32!
WaitForSingleObject+0x12
019cfea8 00433def 0049e070 f313423d 00aa40d8 AmdocsSIMS!
CClient::SecureClient+0xc0 [c:\_visual studio 2005\underdev\sims3\sims
client\client.cpp @ 880]
019cff74 004533b5 00ae72a8 f313429d 00aa40d8 AmdocsSIMS!
SIMSWorkerThread+0x41f [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 97]
019cffac 0045345a 00a9fa68 7c80b683 0098f050 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
019cffb4 7c80b683 0098f050 00aa40d8 00a9fa68 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
019cffec 00000000 004533db 0098f050 00000000 kernel32!
GetModuleFileNameA+0x1b4

13 Id: f94.10f8 Suspend: 1 Teb: 7ffab000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
01acfd44 00409c47 80000000 00000000 0047b6a8 ntdll!KiFastSystemCallRet
01acfea8 00433d4f 0049e070 f323423d 00aa40d8 AmdocsSIMS!
CClient::MonitorServiceStatus+0x437 [c:\_visual studio 2005\underdev
\sims3\sims client\client.cpp @ 603]
01acff74 004533b5 00ae76b8 f323429d 00aa40d8 AmdocsSIMS!
SIMSWorkerThread+0x37f [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 78]
01acffac 0045345a 00a9fa68 7c80b683 00aa4af0 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
01acffb4 7c80b683 00aa4af0 00aa40d8 00a9fa68 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
01acffec 00000000 004533db 00aa4af0 00000000 kernel32!
GetModuleFileNameA+0x1b4

14 Id: f94.21fc Suspend: 1 Teb: 7ffaa000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
01bcfe34 7c802451 000003e8 00000000 000001c8 ntdll!KiFastSystemCallRet
01bcfe44 00438317 000003e8 f3334365 00000000 kernel32!Sleep+0xf
01bcfeac 00433fac f333423d 00aa4668 0098e040 AmdocsSIMS!
CUserInterface::ListenToAdminRequests+0x237 [c:\_visual studio
2005\underdev\sims3\sims client\userinterface.cpp @ 119]
01bcff74 004533b5 00aa3f30 f333429d 00aa4668 AmdocsSIMS!
SIMSWorkerThread+0x5dc [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 134]
01bcffac 0045345a 00a9fa68 7c80b683 0098e040 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
01bcffb4 7c80b683 0098e040 00aa4668 00a9fa68 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
01bcffec 00000000 004533db 0098e040 00000000 kernel32!
GetModuleFileNameA+0x1b4

15 Id: f94.1ab0 Suspend: 1 Teb: 7ffa9000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
01cdfe34 7c802451 000003e8 00000000 0049e070 ntdll!KiFastSystemCallRet
01cdfe44 004092e4 000003e8 0049e3c8 01cdfe7c kernel32!Sleep+0xf
01cdfe5c 0042c70e 0049e070 00001388 f342439d AmdocsSIMS!
CClient::SIMSSleep+0x34 [c:\_visual studio 2005\underdev\sims3\sims
client\client.cpp @ 491]
01cdfeac 004341a2 f342423d 00aa4668 009881d0 AmdocsSIMS!
CMonitorProcess::MonitorNewProcesses+0xbe [c:\_visual studio
2005\underdev\sims3\sims client\monitorprocess.cpp @ 417]
01cdff74 004533b5 00ba0ac0 f342429d 00aa4668 AmdocsSIMS!
SIMSWorkerThread+0x7d2 [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 188]
01cdffac 0045345a 00a9fa68 7c80b683 009881d0 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
01cdffb4 7c80b683 009881d0 00aa4668 00a9fa68 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
01cdffec 00000000 004533db 009881d0 00000000 kernel32!
GetModuleFileNameA+0x1b4

16 Id: f94.24e0 Suspend: 1 Teb: 7ffa8000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
01ddfa30 7c90104b 00980608 7c911320 00980608 ntdll!KiFastSystemCallRet
01ddfc64 00453318 00980000 00000000 00000020 ntdll!
RtlEnterCriticalSection+0x46
01ddfc84 004511f6 00000020 00000030 01ddfd24 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
01ddfc9c 00404a01 00000020 00000030 f2c772e1 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
01ddfcb0 004043a3 f35241ed 0049e028 01ddfd08 AmdocsSIMS!
std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
visual studio 8\vc\include\xmemory @ 146]
01ddfcdc 00403d50 01ddfd08 0000000f 00000000 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 2010]
01ddfcf8 0042b41b 0047c15c 0000000f 00000026 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 1060]
01ddfe60 0042aefc f352439d 00000000 01ddff34 AmdocsSIMS!
CMonitorProcess::scanForStoppedProcs+0x8b [c:\_visual studio
2005\underdev\sims3\sims client\monitorprocess.cpp @ 139]
01ddfeac 00434331 f352423d 00aa4668 00ac4008 AmdocsSIMS!
CMonitorProcess::MonitorRunningProcesses+0x6c [c:\_visual studio
2005\underdev\sims3\sims client\monitorprocess.cpp @ 39]
01ddff74 004533b5 00ba07c0 f352429d 00aa4668 AmdocsSIMS!
SIMSWorkerThread+0x961 [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 226]
01ddffac 0045345a 00a9fa68 7c80b683 00ac4008 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
01ddffb4 7c80b683 00ac4008 00aa4668 00a9fa68 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
01ddffec 00000000 004533db 00ac4008 00000000 kernel32!
GetModuleFileNameA+0x1b4

17 Id: f94.af8 Suspend: 1 Teb: 7ffa7000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
01edfcc8 7c802451 000003e8 00000000 01edfdc4 ntdll!KiFastSystemCallRet
01edfcd8 004263d1 000003e8 f36240f5 00000000 kernel32!Sleep+0xf
01edfeac 0043469b f362423d 00aa4668 00aa53f8 AmdocsSIMS!
CMonitorFile::MonitorFileChanges+0x801 [c:\_visual studio 2005\underdev
\sims3\sims client\monitorfile.cpp @ 441]
01edff74 004533b5 00acd800 f362429d 00aa4668 AmdocsSIMS!
SIMSWorkerThread+0xccb [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 310]
01edffac 0045345a 00a9fa68 7c80b683 00aa53f8 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
01edffb4 7c80b683 00aa53f8 00aa4668 00a9fa68 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
01edffec 00000000 004533db 00aa53f8 00000000 kernel32!
GetModuleFileNameA+0x1b4

18 Id: f94.226c Suspend: 1 Teb: 7ffa6000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
01fdfe5c 7c802451 00000064 00000000 7e41929b ntdll!KiFastSystemCallRet
01fdfe6c 004398fa 00000064 f372434d 01fdff34 kernel32!Sleep+0xf
01fdfeac 00433e86 f372423d 00000000 00b55008 AmdocsSIMS!
CUserInterface::MonitorUserInterfaceMessages+0xda [c:\_visual studio
2005\underdev\sims3\sims client\userinterface.cpp @ 504]
01fdff74 004533b5 0098d880 f372429d 00000000 AmdocsSIMS!
SIMSWorkerThread+0x4b6 [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 110]
01fdffac 0045345a 01bcfa6c 7c80b683 00b55008 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
01fdffb4 7c80b683 00b55008 00000000 01bcfa6c AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
01fdffec 00000000 004533db 00b55008 00000000 kernel32!
GetModuleFileNameA+0x1b4

19 Id: f94.237c Suspend: 1 Teb: 7ffa5000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
020dfe70 7c802451 000003e8 00000000 0049e070 ntdll!KiFastSystemCallRet
020dfe80 00407b50 000003e8 f08243a1 00000000 kernel32!Sleep+0xf
020dfea8 00434106 020dfe6c f082423d 0098fee8 AmdocsSIMS!
CClient::SendHeartBeat+0xe0 [c:\_visual studio 2005\underdev
\sims3\sims client\client.cpp @ 291]
020dff74 004533b5 00ae7958 f082429d 0098fee8 AmdocsSIMS!
SIMSWorkerThread+0x736 [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 181]
020dffac 0045345a 00a9fa68 7c80b683 00b55228 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
020dffb4 7c80b683 00b55228 0098fee8 00a9fa68 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
020dffec 00000000 004533db 00b55228 00000000 kernel32!
GetModuleFileNameA+0x1b4

20 Id: f94.14a0 Suspend: 1 Teb: 7ffa4000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
021dfe2c 7c802451 000003e8 00000000 0049e070 ntdll!KiFastSystemCallRet
021dfe3c 004092e4 000003e8 7c802442 0036ee80 kernel32!Sleep+0xf
021dfe54 00413cde 0049e070 0036ee80 f0924399 AmdocsSIMS!
CClient::SIMSSleep+0x34 [c:\_visual studio 2005\underdev\sims3\sims
client\client.cpp @ 491]
021dfea8 00434269 0049dec0 f092423d 0098fe80 AmdocsSIMS!
CFilePolicyHandler::LogUsageMonitoredRunningProcesses+0xae [c:\_visual
studio 2005\underdev\sims3\sims client\filepolicyhandler.cpp @ 137]
021dff74 004533b5 00987950 f092429d 0098fe80 AmdocsSIMS!
SIMSWorkerThread+0x899 [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 207]
021dffac 0045345a 00a9fa68 7c80b683 00aa9008 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
021dffb4 7c80b683 00aa9008 0098fe80 00a9fa68 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
021dffec 00000000 004533db 00aa9008 00000000 kernel32!
GetModuleFileNameA+0x1b4

21 Id: f94.4e0 Suspend: 1 Teb: 7ffa3000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
025dff0c 7c80a075 00000002 025dff48 00000000 ntdll!KiFastSystemCallRet
025dff28 0044f743 00000002 025dff48 00000000 kernel32!
WaitForMultipleObjects+0x18
025dff4c 0044f19e f0d24245 00000000 00aa9228 AmdocsSIMS!
CQueueContainer::WaitOnElementAvailable+0x43 [c:\_visual studio
2005\underdev\sims3\sims client\processmonitor\queuecontainer.cpp @
81]
025dff74 004533b5 00aa5618 f0d2429d 00000000 AmdocsSIMS!
CCustomThread::ThreadFunc+0x4e [c:\_visual studio 2005\underdev
\sims3\sims client\processmonitor\customthread.cpp @ 162]
025dffac 0045345a 00000000 7c80b683 00aa9228 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
025dffb4 7c80b683 00aa9228 00000000 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
025dffec 00000000 004533db 00aa9228 00000000 kernel32!
GetModuleFileNameA+0x1b4

22 Id: f94.33c Suspend: 1 Teb: 7ffa2000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
026d0178 7c90104b 00980608 7c911320 00980608 ntdll!KiFastSystemCallRet
026d03ac 00453318 00980000 00000000 000001f8 ntdll!
RtlEnterCriticalSection+0x46
026d03cc 004511f6 000001f8 0000fa00 00000001 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
026d03e4 00426710 000001f8 f0e2b95d 00000000 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
026dfe8c 004347ea 0049de20 00458e20 003a0043 AmdocsSIMS!
CMonitorFile::MonitorFileChangesThread+0x330 [c:\_visual studio
2005\underdev\sims3\sims client\monitorfile.cpp @ 510]
026dff74 004533b5 0098e628 f0e2429d 00172920 AmdocsSIMS!
SIMSWorkerThread+0xe1a [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 333]
026dffac 0045345a 00000000 7c80b683 00b55550 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
026dffb4 7c80b683 00b55550 00172920 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
026dffec 00000000 004533db 00b55550 00000000 kernel32!
GetModuleFileNameA+0x1b4

23 Id: f94.1e14 Suspend: 1 Teb: 7ffa1000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
027d03c4 004269ca 0000023c 027d0488 0000fa00 ntdll!KiFastSystemCallRet
027dfe8c 0043496e 0049de20 00458e20 003a0043 AmdocsSIMS!
CMonitorFile::MonitorDirChangesThread+0x11a [c:\_visual studio
2005\underdev\sims3\sims client\monitorfile.cpp @ 634]
027dff74 004533b5 0098f628 f0f2429d 00aa4e80 AmdocsSIMS!
SIMSWorkerThread+0xf9e [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 356]
027dffac 0045345a 01edf8d0 7c80b683 00b55770 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
027dffb4 7c80b683 00b55770 00aa4e80 01edf8d0 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
027dffec 00000000 004533db 00b55770 00000000 kernel32!
GetModuleFileNameA+0x1b4

24 Id: f94.20c0 Suspend: 1 Teb: 7ffa0000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
02adfbfc 7c90104b 00980608 7c911320 00980608 ntdll!KiFastSystemCallRet
02adfe30 00453318 00980000 00000000 00000060 ntdll!
RtlEnterCriticalSection+0x46
02adfe50 004511f6 00000060 00000010 00450225 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
02adfe68 00404a01 00000060 00000000 00000000 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
02adfe7c 004043a3 f0224399 00000007 02adfef0 AmdocsSIMS!
std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
visual studio 8\vc\include\xmemory @ 146]
02adfea8 00403d50 02adfef0 00000029 00000000 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 2010]
02adfec4 0044fecd 0048b620 00000029 f02243e9 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 1060]
02adff4c 0044f19e f0224245 01cdfdc0 00abfcd8 AmdocsSIMS!
CProcessThreadMonitor::Run+0x1ad [c:\_visual studio 2005\underdev
\sims3\sims client\processmonitor\threadmonitor.cpp @ 97]
02adff74 004533b5 00abfa80 f022429d 01cdfdc0 AmdocsSIMS!
CCustomThread::ThreadFunc+0x4e [c:\_visual studio 2005\underdev
\sims3\sims client\processmonitor\customthread.cpp @ 162]
02adffac 0045345a 00000008 7c80b683 00abfcd8 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
02adffb4 7c80b683 00abfcd8 01cdfdc0 00000008 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
02adffec 00000000 004533db 00abfcd8 00000000 kernel32!
GetModuleFileNameA+0x1b4

25 Id: f94.fcc Suspend: 1 Teb: 7ff9f000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
029dffb4 7c80b683 00000000 00000000 00000000 ntdll!KiFastSystemCallRet
029dffec 00000000 7c92798d 00000000 00000000 kernel32!
GetModuleFileNameA+0x1b4

26 Id: f94.624 Suspend: 1 Teb: 7ff9c000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
02e6ff80 77e76c22 02e6ffa8 77e76a3b 0016beb8 ntdll!KiFastSystemCallRet
02e6ff88 77e76a3b 0016beb8 004cfac8 014cfac8 rpcrt4!I_RpcBCacheFree
+0x5ea
02e6ffa8 77e76c0a 001598d8 02e6ffec 7c80b683 rpcrt4!I_RpcBCacheFree
+0x403
02e6ffb4 7c80b683 00174350 004cfac8 014cfac8 rpcrt4!I_RpcBCacheFree
+0x5d2
02e6ffec 00000000 77e76bf0 00174350 00000000 kernel32!
GetModuleFileNameA+0x1b4

27 Id: f94.28a0 Suspend: 1 Teb: 7ffde000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
02d6ff8c 774fe407 0000060c 00007530 00000000 ntdll!KiFastSystemCallRet
02d6ffb4 7c80b683 00195e88 013ceb24 00000010 ole32!
StringFromGUID2+0x605
02d6ffec 00000000 774fe429 00195e88 00000000 kernel32!
GetModuleFileNameA+0x1b4

On Tue, 25 Sep 2007 21:59:36 -0700, "Ivan Brugiolo [MSFT]" <...@online.microsoft.com> wrote:

I'm reporting only the information that is relevant.
First, you should learn how to set-up the public symbols server to get
the symbols for the OS components
You don't have any Critical Section problem, but, a more classic heap
corruption.

Theread #5, #8, #16, #24 are waiting for thread #3 to release the C-Runtime
heap lock.
You have a few threads that are `waiting` in a Sleep.
I'm not sure about your synchronization design,
but, anything that requires a Sleep() to work looks always terribly fishy to
me.

For the specify crash:
It smells either as a heap overrun, or a heap contamination.
Can you run `!address 00af6698` and, then `!heap -p -a 00af6698`.
Or, if things comes to worse, take a look at `!heap -p -h 00980000`.
It should tell you the first corruption encountered.

To diagnose this, the brute force method requires running under
full-pageheap
(gflags.exe -p /enable <image_name.exe> /full),
and try to repro again. Some clues might be extracted from the previous
commands.
Good luck with your hunt

eax=00af6698 ebx=00980000 ecx=398a0002 edx=398a0003 esi=00980778
edi=00000005
eip=7c902f17 esp=00f9f8c4 ebp=00980778 iopl=0 nv up ei pl nz
na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
efl=00000202
ntdll!tan+0xd9:
7c902f17 8b18 mov ebx,dword ptr [eax] ds:
0023:00af6698=????????

# 3 Id: f94.21f4 Suspend: 1 Teb: 7ffdb000 Unfrozen
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may
be wrong.
00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!tan+0xd9
00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!RtlAllocateHeap
+0x14a
00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
+0xd7
00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
visual studio 8\vc\include\xmemory @ 146]
00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 2010]
00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 1060]
00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
+<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
\program files\microsoft visual studio 8\vc\include\string @ 35]
00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 408]
00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 523]
00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 283]
00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 57]
00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
GetModuleFileNameA+0x1b4

--

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm


On Wed, 26 Sep 2007 14:30:38 -0000, Ben <...@gmail.com> wrote:

On Sep 25, 11:59 pm, "Ivan Brugiolo [MSFT]"
<...@online.microsoft.com> wrote:
> I'm reporting only the information that is relevant.
> First, you should learn how to set-up the public symbols server to get
> the symbols for the OS components
> You don't have any Critical Section problem, but, a more classic heap
> corruption.
>
> Theread #5, #8, #16, #24 are waiting for thread #3 to release the C-Runtime
> heap lock.
> You have a few threads that are `waiting` in a Sleep.
> I'm not sure about your synchronization design,
> but, anything that requires a Sleep() to work looks always terribly fishy to
> me.
>
> For the specify crash:
> It smells either as a heap overrun, or a heap contamination.
> Can you run `!address 00af6698` and, then `!heap -p -a 00af6698`.
> Or, if things comes to worse, take a look at `!heap -p -h 00980000`.
> It should tell you the first corruption encountered.
>
> To diagnose this, the brute force method requires running under
> full-pageheap
> (gflags.exe -p /enable <image_name.exe> /full),
> and try to repro again. Some clues might be extracted from the previous
> commands.
> Good luck with your hunt
>
> eax=00af6698 ebx=00980000 ecx=398a0002 edx=398a0003 esi=00980778
> edi=00000005
> eip=7c902f17 esp=00f9f8c4 ebp=00980778 iopl=0 nv up ei pl nz
> na po nc
> cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
> efl=00000202
> ntdll!tan+0xd9:
> 7c902f17 8b18 mov ebx,dword ptr [eax] ds:
> 0023:00af6698=????????
>
> # 3 Id: f94.21f4 Suspend: 1 Teb: 7ffdb000 Unfrozen
> ChildEBP RetAddr Args to Child
> WARNING: Stack unwind information not available. Following frames may
> be wrong.
> 00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!tan+0xd9
> 00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!RtlAllocateHeap
> +0x14a
> 00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
> +0xd7
> 00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
> \sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
> 00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
> +0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
> 00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
> std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
> visual studio 8\vc\include\xmemory @ 146]
> 00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
> std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
>
> \xstring @ 2010]
> 00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
> std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
>
> \xstring @ 1060]
> 00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
> +<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
> \program files\microsoft visual studio 8\vc\include\string @ 35]
> 00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
> CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 408]
> 00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
> CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 523]
> 00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
> CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 283]
> 00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
> SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
> client\thread.cpp @ 57]
> 00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
> _callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
> \threadex.c @ 348]
> 00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
> +0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
> 00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
> GetModuleFileNameA+0x1b4
>
> --
>
> --
> This posting is provided "AS IS" with no warranties, and confers no rights.
> Use of any included script samples are subject to the terms specified athttp://www.microsoft.com/info/cpyright.htm

I guess I forgot to point to the symbols in the analyze i posted
above. When I did it again, the beginning changed a bit, and instead
of the DEFAULT_BUCKET_ID showing WRONG_SYMBOLS, it now shows
HEAP_CORRUPTION... see snippet at bottom.

So to analyze what causes u say i need to run "gflags.exe -p /enable
<image_name.exe> /full" -- what's this command do exactly ? do i need
to run it in all my test pilot group ? or it's something i can do
after i get the drwatson log ? ...should I just try to increase the
heap size in the compiler options ? it's set to 0 now, which I
understood is the 1mb default ?!?

I ran those commands u specified, does this output mean anything to
you ?

0:003> !address 00af6698
00aef000 : 00aef000 - 0000d000
Type 00000000
Protect 00000001 PAGE_NOACCESS
State 00010000 MEM_FREE
Usage RegionUsageFree

0:003> !heap 00af6698
Index Address Name Debugging options enabled

0:003> !heap -p -h 00980000
_HEAP @ 980000
_HEAP_LOOKASIDE @ 980688
ReadMemory error for address 00e621f8
Use `!address 00e621f8' to check validity of the address.

0:003> !address 00e621f8
00d6b000 : 00d6b000 - 00134000
Type 00000000
Protect 00000001 PAGE_NOACCESS
State 00010000 MEM_FREE
Usage RegionUsageFree

0:003> !analyze -f -v;r;~*kb
*******************************************************************************
*
*
* Exception
Analysis *
*
*
*******************************************************************************

*** ERROR: Symbol file could not be found. Defaulted to export
symbols for kernel32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for ole32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for user32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export
symbols for netapi32.dll -

FAULTING_IP:
ntdll!ExpInterlockedPopEntrySListFault+0
7c902f17 8b18 mov ebx,dword ptr [eax]

EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 7c902f17 (ntdll!ExpInterlockedPopEntrySListFault)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 00af6698
Attempt to read from address 00af6698

DEFAULT_BUCKET_ID: HEAP_CORRUPTION

PROCESS_NAME: AmdocsSIMS.exe

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx"
referenced memory at "0x%08lx". The memory could not be "%s".

READ_ADDRESS: 00af6698

DETOURED_IMAGE: 1

NTGLOBALFLAG: 0

APPLICATION_VERIFIER_FLAGS: 0

LAST_CONTROL_TRANSFER: from 7c91071e to 7c902f17

STACK_TEXT:
00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!
ExpInterlockedPopEntrySListFault
00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!
RtlpAllocateFromHeapLookaside+0x1d
00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
+0x1c2
00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
\sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
+0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
visual studio 8\vc\include\xmemory @ 146]
00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 2010]
00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
\xstring @ 1060]
00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
+<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
\program files\microsoft visual studio 8\vc\include\string @ 35]
00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 408]
00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 523]
00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
\sims3\sims client\logfilemanager.cpp @ 283]
00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
client\thread.cpp @ 57]
00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
\threadex.c @ 348]
00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
WARNING: Stack unwind information not available. Following frames may
be wrong.
00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
GetModuleFileNameA+0x1b4

On Wed, 26 Sep 2007 12:04:08 -0700, "Ivan Brugiolo [MSFT]" <...@online.microsoft.com> wrote:

You need to run gflags.exe before you start your executable
in your test bed enviroment (or even in produciton, if are brave enough).

The commands below tells me that the C-Runtime heap
has, in the LookAside list, an element coming from a
decommitted or free-ed region.
This could be a double-delete, or a heap contamination.

Some of the concept illustrated here are explained in this book
http://www.amazon.com/Advanced-Debugging-Addison-Wesley-Microsoft-Technology/dp /0321374460/ref=sr_1_1/103-6290135-4835827?ie=UTF8&s=books&qid=1190833412&sr=8-1

--

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

"Ben" <...@gmail.com> wrote in message
news...@19g2000hsx.googlegroups.com...
> On Sep 25, 11:59 pm, "Ivan Brugiolo [MSFT]"
> <...@online.microsoft.com> wrote:
>> I'm reporting only the information that is relevant.
>> First, you should learn how to set-up the public symbols server to get
>> the symbols for the OS components
>> You don't have any Critical Section problem, but, a more classic heap
>> corruption.
>>
>> Theread #5, #8, #16, #24 are waiting for thread #3 to release the
>> C-Runtime
>> heap lock.
>> You have a few threads that are `waiting` in a Sleep.
>> I'm not sure about your synchronization design,
>> but, anything that requires a Sleep() to work looks always terribly fishy
>> to
>> me.
>>
>> For the specify crash:
>> It smells either as a heap overrun, or a heap contamination.
>> Can you run `!address 00af6698` and, then `!heap -p -a 00af6698`.
>> Or, if things comes to worse, take a look at `!heap -p -h 00980000`.
>> It should tell you the first corruption encountered.
>>
>> To diagnose this, the brute force method requires running under
>> full-pageheap
>> (gflags.exe -p /enable <image_name.exe> /full),
>> and try to repro again. Some clues might be extracted from the previous
>> commands.
>> Good luck with your hunt
>>
>> eax=00af6698 ebx=00980000 ecx=398a0002 edx=398a0003 esi=00980778
>> edi=00000005
>> eip=7c902f17 esp=00f9f8c4 ebp=00980778 iopl=0 nv up ei pl nz
>> na po nc
>> cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
>> efl=00000202
>> ntdll!tan+0xd9:
>> 7c902f17 8b18 mov ebx,dword ptr [eax] ds:
>> 0023:00af6698=????????
>>
>> # 3 Id: f94.21f4 Suspend: 1 Teb: 7ffdb000 Unfrozen
>> ChildEBP RetAddr Args to Child
>> WARNING: Stack unwind information not available. Following frames may
>> be wrong.
>> 00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!tan+0xd9
>> 00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!RtlAllocateHeap
>> +0x14a
>> 00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
>> +0xd7
>> 00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
>> \sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
>> 00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
>> +0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
>> 00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
>> std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
>> visual studio 8\vc\include\xmemory @ 146]
>> 00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
>> std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>>::_Copy+0x73
>> [c:\program files\microsoft visual studio 8\vc\include
>>
>> \xstring @ 2010]
>> 00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
>> std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>>::assign+0x70
>> [c:\program files\microsoft visual studio 8\vc\include
>>
>> \xstring @ 1060]
>> 00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
>> +<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
>> \program files\microsoft visual studio 8\vc\include\string @ 35]
>> 00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
>> CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
>> \sims3\sims client\logfilemanager.cpp @ 408]
>> 00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
>> CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
>> \sims3\sims client\logfilemanager.cpp @ 523]
>> 00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
>> CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
>> \sims3\sims client\logfilemanager.cpp @ 283]
>> 00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
>> SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
>> client\thread.cpp @ 57]
>> 00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
>> _callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
>> \threadex.c @ 348]
>> 00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
>> +0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
>> 00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
>> GetModuleFileNameA+0x1b4
>>
>> --
>>
>> --
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>> Use of any included script samples are subject to the terms specified
>> athttp://www.microsoft.com/info/cpyright.htm
>
> I guess I forgot to point to the symbols in the analyze i posted
> above. When I did it again, the beginning changed a bit, and instead
> of the DEFAULT_BUCKET_ID showing WRONG_SYMBOLS, it now shows
> HEAP_CORRUPTION... see snippet at bottom.
>
> So to analyze what causes u say i need to run "gflags.exe -p /enable
> <image_name.exe> /full" -- what's this command do exactly ? do i need
> to run it in all my test pilot group ? or it's something i can do
> after i get the drwatson log ? ...should I just try to increase the
> heap size in the compiler options ? it's set to 0 now, which I
> understood is the 1mb default ?!?
>
> I ran those commands u specified, does this output mean anything to
> you ?
>
> 0:003> !address 00af6698
> 00aef000 : 00aef000 - 0000d000
> Type 00000000
> Protect 00000001 PAGE_NOACCESS
> State 00010000 MEM_FREE
> Usage RegionUsageFree
>
> 0:003> !heap 00af6698
> Index Address Name Debugging options enabled
>
> 0:003> !heap -p -h 00980000
> _HEAP @ 980000
> _HEAP_LOOKASIDE @ 980688
> ReadMemory error for address 00e621f8
> Use `!address 00e621f8' to check validity of the address.
>
> 0:003> !address 00e621f8
> 00d6b000 : 00d6b000 - 00134000
> Type 00000000
> Protect 00000001 PAGE_NOACCESS
> State 00010000 MEM_FREE
> Usage RegionUsageFree
>
>
> 0:003> !analyze -f -v;r;~*kb
> *******************************************************************************
> *
> *
> * Exception
> Analysis *
> *
> *
> *******************************************************************************
>
> *** ERROR: Symbol file could not be found. Defaulted to export
> symbols for kernel32.dll -
> *** ERROR: Symbol file could not be found. Defaulted to export
> symbols for ole32.dll -
> *** ERROR: Symbol file could not be found. Defaulted to export
> symbols for user32.dll -
> *** ERROR: Symbol file could not be found. Defaulted to export
> symbols for netapi32.dll -
>
> FAULTING_IP:
> ntdll!ExpInterlockedPopEntrySListFault+0
> 7c902f17 8b18 mov ebx,dword ptr [eax]
>
> EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
> ExceptionAddress: 7c902f17 (ntdll!ExpInterlockedPopEntrySListFault)
> ExceptionCode: c0000005 (Access violation)
> ExceptionFlags: 00000000
> NumberParameters: 2
> Parameter[0]: 00000000
> Parameter[1]: 00af6698
> Attempt to read from address 00af6698
>
> DEFAULT_BUCKET_ID: HEAP_CORRUPTION
>
> PROCESS_NAME: AmdocsSIMS.exe
>
> ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx"
> referenced memory at "0x%08lx". The memory could not be "%s".
>
> READ_ADDRESS: 00af6698
>
> DETOURED_IMAGE: 1
>
> NTGLOBALFLAG: 0
>
> APPLICATION_VERIFIER_FLAGS: 0
>
> LAST_CONTROL_TRANSFER: from 7c91071e to 7c902f17
>
> STACK_TEXT:
> 00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!
> ExpInterlockedPopEntrySListFault
> 00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!
> RtlpAllocateFromHeapLookaside+0x1d
> 00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
> +0x1c2
> 00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
> \sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
> 00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
> +0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
> 00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
> std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
> visual studio 8\vc\include\xmemory @ 146]
> 00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
> std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
> \xstring @ 2010]
> 00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
> std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>
>>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
> \xstring @ 1060]
> 00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
> +<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
> \program files\microsoft visual studio 8\vc\include\string @ 35]
> 00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
> CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 408]
> 00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
> CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 523]
> 00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
> CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 283]
> 00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
> SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
> client\thread.cpp @ 57]
> 00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
> _callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
> \threadex.c @ 348]
> 00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
> +0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
> WARNING: Stack unwind information not available. Following frames may
> be wrong.
> 00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
> GetModuleFileNameA+0x1b4
>


On Wed, 26 Sep 2007 14:38:25 -0000, Ben <...@gmail.com> wrote:

On Sep 26, 9:30 am, Ben <...@gmail.com> wrote:
> On Sep 25, 11:59 pm, "Ivan Brugiolo [MSFT]"
>
>
>
>
>
> <...@online.microsoft.com> wrote:
> > I'm reporting only the information that is relevant.
> > First, you should learn how to set-up the public symbols server to get
> > the symbols for the OS components
> > You don't have any Critical Section problem, but, a more classic heap
> > corruption.
>
> > Theread #5, #8, #16, #24 are waiting for thread #3 to release the C-Run=time
> > heap lock.
> > You have a few threads that are `waiting` in a Sleep.
> > I'm not sure about your synchronization design,
> > but, anything that requires a Sleep() to work looks always terribly fis=hy to
> > me.
>
> > For the specify crash:
> > It smells either as a heap overrun, or a heap contamination.
> > Can you run `!address 00af6698` and, then `!heap -p -a 00af6698`.
> > Or, if things comes to worse, take a look at `!heap -p -h 00980000`.
> > It should tell you the first corruption encountered.
>
> > To diagnose this, the brute force method requires running under
> > full-pageheap
> > (gflags.exe -p /enable <image_name.exe> /full),
> > and try to repro again. Some clues might be extracted from the previous
> > commands.
> > Good luck with your hunt
>
> > eax=00af6698 ebx=00980000 ecx=398a0002 edx=398a0003 esi=00980w8
> > edi=00000005
> > eip=7c902f17 esp=00f9f8c4 ebp=00980778 iopl=0 nv up ei =pl nz
> > na po nc
> > cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
> > efl=00000202
> > ntdll!tan+0xd9:
> > 7c902f17 8b18 mov ebx,dword ptr [eax] ds:
> > 0023:00af6698=????????
>
> > # 3 Id: f94.21f4 Suspend: 1 Teb: 7ffdb000 Unfrozen
> > ChildEBP RetAddr Args to Child
> > WARNING: Stack unwind information not available. Following frames may
> > be wrong.
> > 00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!tan+0xd9
> > 00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!RtlAllocateHeap
> > +0x14a
> > 00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
> > +0xd7
> > 00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
> > \sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
> > 00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
> > +0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
> > 00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
> > std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
> > visual studio 8\vc\include\xmemory @ 146]
> > 00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
> > std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
>
> > \xstring @ 2010]
> > 00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
> > std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
>
> > \xstring @ 1060]
> > 00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
> > +<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
> > \program files\microsoft visual studio 8\vc\include\string @ 35]
> > 00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
> > CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
> > \sims3\sims client\logfilemanager.cpp @ 408]
> > 00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
> > CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
> > \sims3\sims client\logfilemanager.cpp @ 523]
> > 00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
> > CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
> > \sims3\sims client\logfilemanager.cpp @ 283]
> > 00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
> > SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
> > client\thread.cpp @ 57]
> > 00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
> > _callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
> > \threadex.c @ 348]
> > 00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
> > +0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
> > 00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
> > GetModuleFileNameA+0x1b4
>
> > --
>
> > --
> > This posting is provided "AS IS" with no warranties, and confers no rig=hts.
> > Use of any included script samples are subject to the terms specified athttp://www.microsoft.com/info/cpyright.htm
>
> I guess I forgot to point to the symbols in the analyze i posted
> above. When I did it again, the beginning changed a bit, and instead
> of the DEFAULT_BUCKET_ID showing WRONG_SYMBOLS, it now shows
> HEAP_CORRUPTION... see snippet at bottom.
>
> So to analyze what causes u say i need to run "gflags.exe -p /enable
> <image_name.exe> /full" -- what's this command do exactly ? do i need
> to run it in all my test pilot group ? or it's something i can do
> after i get the drwatson log ? ...should I just try to increase the
> heap size in the compiler options ? it's set to 0 now, which I
> understood is the 1mb default ?!?
>
> I ran those commands u specified, does this output mean anything to
> you ?
>
> 0:003> !address 00af6698
> 00aef000 : 00aef000 - 0000d000
> Type 00000000
> Protect 00000001 PAGE_NOACCESS
> State 00010000 MEM_FREE
> Usage RegionUsageFree
>
> 0:003> !heap 00af6698
> Index Address Name Debugging options enabled
>
> 0:003> !heap -p -h 00980000
> _HEAP @ 980000
> _HEAP_LOOKASIDE @ 980688
> ReadMemory error for address 00e621f8
> Use `!address 00e621f8' to check validity of the address.
>
> 0:003> !address 00e621f8
> 00d6b000 : 00d6b000 - 00134000
> Type 00000000
> Protect 00000001 PAGE_NOACCESS
> State 00010000 MEM_FREE
> Usage RegionUsageFree
>
> 0:003> !analyze -f -v;r;~*kb
> *******************************************************************************
> *
> *
> * Exception
> Analysis *
> *
> *
> *******************************************************************************
>
> *** ERROR: Symbol file could not be found. Defaulted to export
> symbols for kernel32.dll -
> *** ERROR: Symbol file could not be found. Defaulted to export
> symbols for ole32.dll -
> *** ERROR: Symbol file could not be found. Defaulted to export
> symbols for user32.dll -
> *** ERROR: Symbol file could not be found. Defaulted to export
> symbols for netapi32.dll -
>
> FAULTING_IP:
> ntdll!ExpInterlockedPopEntrySListFault+0
> 7c902f17 8b18 mov ebx,dword ptr [eax]
>
> EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
> ExceptionAddress: 7c902f17 (ntdll!ExpInterlockedPopEntrySListFault)
> ExceptionCode: c0000005 (Access violation)
> ExceptionFlags: 00000000
> NumberParameters: 2
> Parameter[0]: 00000000
> Parameter[1]: 00af6698
> Attempt to read from address 00af6698
>
> DEFAULT_BUCKET_ID: HEAP_CORRUPTION
>
> PROCESS_NAME: AmdocsSIMS.exe
>
> ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx"
> referenced memory at "0x%08lx". The memory could not be "%s".
>
> READ_ADDRESS: 00af6698
>
> DETOURED_IMAGE: 1
>
> NTGLOBALFLAG: 0
>
> APPLICATION_VERIFIER_FLAGS: 0
>
> LAST_CONTROL_TRANSFER: from 7c91071e to 7c902f17
>
> STACK_TEXT:
> 00f9f8c8 7c91071e 00000005 00980778 00980000 ntdll!
> ExpInterlockedPopEntrySListFault
> 00f9f8f8 7c9106ab 00980778 00000020 00000000 ntdll!
> RtlpAllocateFromHeapLookaside+0x1d
> 00f9fb24 00453318 00980000 00000000 00000020 ntdll!RtlAllocateHeap
> +0x1c2
> 00f9fb44 004511f6 00000020 00000000 00000000 AmdocsSIMS!malloc+0x7a [f:
> \sp\vctools\crt_bld\self_x86\crt\src\malloc.c @ 163]
> 00f9fb5c 00404a01 00000020 0000fcb8 00980000 AmdocsSIMS!operator new
> +0x1d [f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp @ 59]
> 00f9fb70 004043a3 f27646ad 00f9fc10 00f9fbdc AmdocsSIMS!
> std::allocator<wchar_t>::allocate+0x11 [c:\program files\microsoft
> visual studio 8\vc\include\xmemory @ 146]
> 00f9fb9c 00403d50 00f9fbdc 00000008 00000000 AmdocsSIMS!
> std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>>::_Copy+0x73 [c:\program files\microsoft visual studio 8\vc\include
>
> \xstring @ 2010]
> 00f9fbb8 00404ab0 0047ed7c 00000008 f27646fd AmdocsSIMS!
> std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<w char_t>>::assign+0x70 [c:\program files\microsoft visual studio 8\vc\include
>
> \xstring @ 1060]
> 00f9fc00 0042091c 00f9fc10 00984750 00000040 AmdocsSIMS!std::operator
> +<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x60 [c:
> \program files\microsoft visual studio 8\vc\include\string @ 35]
> 00f9fdac 0042109f 00f9fe38 f27643b5 00485590 AmdocsSIMS!
> CLogFileManager::readAsZippedB64+0x8c [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 408]
> 00f9fe84 004202fb 00000000 f27643a5 00f9ff0c AmdocsSIMS!
> CLogFileManager::Send+0x11f [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 523]
> 00f9feac 00433c7f f276423d 0015b438 00ba0108 AmdocsSIMS!
> CLogFileManager::SendLogCycle+0xab [c:\_visual studio 2005\underdev
> \sims3\sims client\logfilemanager.cpp @ 283]
> 00f9ff74 004533b5 00bd5e10 f276429d 0015b438 AmdocsSIMS!
> SIMSWorkerThread+0x2af [c:\_visual studio 2005\underdev\sims3\sims
> client\thread.cpp @ 57]
> 00f9ffac 0045345a 00000000 7c80b683 00ba0108 AmdocsSIMS!
> _callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src
> \threadex.c @ 348]
> 00f9ffb4 7c80b683 00ba0108 0015b438 00000000 AmdocsSIMS!_threadstartex
> +0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
> WARNING: Stack unwind information not available. Following frames may
> be wrong.
> 00f9ffec 00000000 004533db 00ba0108 00000000 kernel32!
> GetModuleFileNameA+0x1b4- Hide quoted text -
>
> - Show quoted text -

btw, the Sleep() is used since various threads we start have a while
loop going forever that checks something periodically, and the Sleep()
is used at the end to pause between cycles. Is this not a safe/good
practice method to use ?

On Wed, 26 Sep 2007 12:06:45 -0700, "Ivan Brugiolo [MSFT]" <...@online.microsoft.com> wrote:

>btw, the Sleep() is used since various threads we start have a while
>loop going forever that checks something periodically, and the Sleep()
>is used at the end to pause between cycles. Is this not a safe/good
>practice method to use ?

WaitForSingleObject(hEvent,TIMEOUT);
and
CreateTimerQueueTimer()
are better alternatives, for a starter.

--

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm


On Thu, 27 Sep 2007 00:15:43 -0000, Ben <...@gmail.com> wrote:

On Sep 26, 2:06 pm, "Ivan Brugiolo [MSFT]"
<...@online.microsoft.com> wrote:
> >btw, the Sleep() is used since various threads we start have a while
> >loop going forever that checks something periodically, and the Sleep()
> >is used at the end to pause between cycles. Is this not a safe/good
> >practice method to use ?
>
> WaitForSingleObject(hEvent,TIMEOUT);
> and
> CreateTimerQueueTimer()
> are better alternatives, for a starter.
>
> --
>
> --
> This posting is provided "AS IS" with no warranties, and confers no rights.
> Use of any included script samples are subject to the terms specified athttp://www.microsoft.com/info/cpyright.htm

I will try to get that book when it's available, it sounds really
good... but looks like it's not released yet. I now understand the
function of gflags, and I will run it on our test group and hope the
next crash dump will reveal more info... I'd put it just on my machine
if the crash was often... but it rarley happens (just 5 times in a
month from 90 machines, and on random PCs).

Thank you very much Ivan -- you're really giving me some good
direction !

Discussion Title: Need Help Debugging
Title Keywords: Need  Help  Debugging