home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703B.ISO
/
driver
/
novell
/
nwpatch
/
server
/
common
/
libup8j.exe
/
CHANGES.312
next >
Wrap
Text File
|
1996-01-08
|
5KB
|
106 lines
Changes since CLIB.NLM 3.12h up through CLIB.NLM 3.12j
==========================================================================
Symptom : 20th call to AdvertiseService() returns (-1) as it should, but
NetWareErrno contains a 0 when it should contain an error
code. Also, it seems that even though the AdvertiseService()
function failed, it still allocated some resources. The result is
that if an NLM attempts to call AdvertiseService more than
19 times, when the NLM terminates, NetWare gives a message
on the system console about resources not being freed.
Solution: ERR_SERVER_OUT_OF_MEMORY has been added to 'NetWareErrno'
in AdvertiseService() in appropriate places per
documentation. Previously, only 'errno' had been set to
ENOMEM.
Symptom : Server Abends when an NLM calls printf, printing a string variable,
with a precision option, such as, printf("%.6s",varStr). While debugging
it was discovered that printf() searches for a null at the end of
the string parameter. For instance, in the above example, the
varStr variable must have a terminating null, even though only
6 characters are going to be printed, but the varStr does not have
the mentioned binary zero at the end. When running this NLM
in Netware 4.10, the string was near an invalid address
causing the server to abend.
Solution: In the ANSI specs, a null at the end of the string does not need
to be present when a length specification is used for a string.
Fixed case 's' such that null-terminated strings will not be
required for pronouns like "%.6s".
Symptom : NCP Extension services APIs are 'leaking' memory, under NetWare
3.11. Memory loss occurs when an ENCP reply is resent
(because, perhaps, the original reply was lost and not
received by the client). It only seems to happen when the reply
packet is GREATER THAN 100 bytes. The problem
was detected using a LANalyzer as well as other debugging
methods such as printing out a count of the number of times the
ENCP handler was called twice for the same request (which
seemed to correspond with the amount of memory lost).
Solution: Fixed a problem where it could loose memory under v3.12. If
the initial frag request generated an immediate frag reply w/
>100 bytes in first packet, and the initial request was received
again by the NCP Extension Handler in CLIB (due to packet
lost or equiv.), CLIB would allocate a new frag data structure and
the previous one would remain unused. It's memory would not
be freed until the NCP Extension was de-registered.
Symptom : A bug in the outpd() function was found in CLIB.NLM
v3.12g, May 19,1994. The same bug is present in the
CLIB.NLM v3.12 which was shipped along with NetWare v3.12
also.
Solution: Removed pragmas outpd() and inpd(). which fixes the incorrect
assembly.
Symptom : When NWstrnum() is called with negative numbers (like, -1)
passed into the parameter Value, the call returns a '/' for the
return code and also in the buffer.
Solution: NWstrnum() was not handling negative values correctly, we
added a check to handle negative numbers via the localization
tables.
Symptom : When running Advantage Xbase Server on a 3.12 system, the
connection between the client and the Xbase server will hang.
If you attempt to clear the connection by MONITOR, monitor
will also hang.
Solution: The problem appears to be a timing issue. When the timing is
just right we have a deadlock situation. Here is what is
happening. A certain thread will call EnterCritSec twice before
calling ExitCritSec. This disables all other threads in the NLM.
This thread will continue to call EnterCritSec and ExitCritSec
until it calls DisableConnection. Now after Disable connection
it calls open which blocks. Once the thread blocks it will notice
that its nested count for the critsec is up one (because of the
two in a row) . It will then put itself to sleep until another
ExitCritSec is called. This never happens and the connection
stays disabled.
Symptom: An EnterCritSection problem was observed.
Solution: There was a problem in the way we susended or stopped
within an NCP request.
Symptom: If a value larger than 255 was passed in with isalpha
the server would abend.
Solution: Corrected a problem with isalpha were we would look at a
table using the value passed in.
Symptom: A file server could abend with various error messages, because
of conflicts between the DHANDFIX.NLM Operating System patch
and a clib hook commonly used by virus scanners..
Solution: (HOOK311.386) we now dynamically find and save off the
local variable size of the stack "sub esp, 314" so we can
reset it to the correct size when we clean out the hooks
and so we can correctly execute the correct "sub esp, xxx"
when we call the actual OS entry point.
====================================================================