Access Violations or Memory Leak May Occur with Tracing Enabled (164913)
The information in this article applies to:
This article was previously published under Q164913
This article describes the following problems that were found in SNA
Server 3.0 and corrected:
- Enabling SNA Server tracing may cause a process to encounter an access
violation.
- A memory leak may occur when SNA Server tracing is enabled.
- Link service internal tracing is not fully implemented.
SYMPTOMS- Enabling SNA Server tracing may cause a process to encounter an access
violation.
SYMPTOMS
When you have enabled SNA Server tracing using the SNATRACE tool, the
process that is being traced (for example, SNA Server, SNA Print Service,
SnaBase, or link services) may encounter an access violation (AV). If you
generate a Drwtsn32.log file, the following failures may occur:
Exception number: c0000005 (access violation)
Function: MSVCRT!rmtmp
FAULT ->779f8bc7 803f00 cmp byte ptr [edi],0x0
Exception number: c0000005 (access violation)
Function: MSVCRT!_vsnprintf+0x34
Exception number: 80000003 (hardcoded breakpoint)
function: DbgBreakPoint
FAULT ->77f75d64 cc int 3
CAUSE
The tracing code incorrectly handles a string buffer, which may lead to an
access violation. Also, under some timing conditions, if two processes
attempt to initialize tracing at the same time, an access violation may
occur.
- A memory leak may occur when SNA Server tracing is enabled.
SYMPTOMS
Enabling SNA Server tracing may lead to an internal memory leak, causing
the server to eventually run out of virtual memory. This was observed by
setting the trace file size to 10 MB and enabling full tracing on SNA
Server, the SNA Print Service, and SNA Application APPC API tracing.
CAUSE
This problem may occur when the disk I/O cannot keep up with trace
creation. Memory keeps growing until the system runs out of virtual
memory. The solution is to limit the maximum size of the trace buffer
pool, which by default is the same size as the multiple of the trace file
size chosen in SNATRACE. For example, if the trace file size is 1 MB,
(1,000,000, the default), with internal, message and API tracing enabled,
the maximum trace buffer pool is 3 x 1 MB = 3 MB.
You can use the following registry setting to define the maximum trace
buffer pool size:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/SnaServer/CurrentVersion/Traces/
MemoryBufferSize: REG_DWORD: <value>
NOTE: The MemoryBufferSize value must be manually created. It is not
created by Setup when SNA Server is installed.
-
Link service tracing is not fully implemented.
SYMPTOMS
When enabling link service full internal tracing using SNATRACE, third-
party link trace statements that use the TRACEx macros are not traced
to the trace files.
CAUSE
The TRACEx macro statements were not converted to use the new SNA Server
3.0 tracing functions.
RESOLUTION
To resolve these problems, obtain the hotfix mentioned below. The
updated modules are:
<Snaroot>\System\Snatrc.dll<BR/>
<Snaroot>\System\Dbgtrace.dll<BR/>
<Snaroot>\System\Snalink.dll STATUS
Microsoft has confirmed this to be a problem in SNA Server version 3.0.
This problem was corrected in the latest Microsoft SNA Server 3.0 U.S.
Service Pack. For information on obtaining the service pack, query on
the following word in the Microsoft Knowledge Base (without the spaces):
Modification Type: | Major | Last Reviewed: | 10/22/2003 |
---|
Keywords: | kbbug kbfix kbnetwork KB164913 kbAudDeveloper |
---|
|