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 >
Text File  |  1996-01-08  |  5KB  |  106 lines

  1.  
  2. Changes since CLIB.NLM 3.12h up through CLIB.NLM 3.12j
  3. ==========================================================================
  4.  
  5. Symptom : 20th call to AdvertiseService() returns (-1) as it should, but
  6.       NetWareErrno contains a 0 when it should contain an error
  7.       code.  Also, it seems that even though the AdvertiseService()
  8.       function failed, it still allocated some resources.  The result is
  9.       that if an NLM attempts to call AdvertiseService more than
  10.       19 times, when the NLM terminates, NetWare gives a message
  11.       on the system console about resources not being freed.
  12.  
  13. Solution: ERR_SERVER_OUT_OF_MEMORY has been added to 'NetWareErrno' 
  14.       in AdvertiseService() in appropriate places per
  15.       documentation. Previously, only 'errno' had been set to
  16.       ENOMEM.
  17.  
  18. Symptom : Server Abends when an NLM calls printf, printing a string variable,
  19.       with a precision option, such as, printf("%.6s",varStr). While debugging
  20.       it was discovered that printf() searches for a null at the end of
  21.       the string parameter. For instance, in the above example, the
  22.       varStr variable must have a terminating null, even though only
  23.       6 characters are going to be printed, but the varStr does not have 
  24.       the mentioned binary zero at the end. When running this NLM 
  25.       in Netware 4.10, the string was near an invalid address 
  26.       causing the server to abend.
  27.  
  28. Solution: In the ANSI specs, a null at the end of the string does not need
  29.       to be present when a length specification is used for a string. 
  30.       Fixed case 's' such that null-terminated strings will not be
  31.       required for pronouns like "%.6s".
  32.  
  33. Symptom : NCP Extension services APIs are 'leaking' memory, under NetWare
  34.       3.11. Memory loss occurs when an ENCP reply is resent 
  35.       (because, perhaps, the original reply was lost and not  
  36.       received by the client). It only seems to happen when the reply 
  37.       packet is GREATER THAN 100 bytes. The problem
  38.       was detected using a LANalyzer as well as other debugging
  39.       methods such as printing out a count of the number of times the
  40.       ENCP handler was called twice for the same request (which
  41.       seemed to correspond with the amount of memory lost).
  42.  
  43. Solution: Fixed a problem where it could loose memory under v3.12.  If
  44.       the initial frag request generated an immediate frag reply w/
  45.       >100 bytes in first packet, and the initial request was received
  46.       again by the NCP Extension Handler in CLIB (due to packet
  47.       lost or equiv.), CLIB would allocate a new frag data structure and
  48.       the previous one would remain unused. It's memory would not
  49.       be freed until the NCP Extension was de-registered.
  50.  
  51. Symptom : A bug in the outpd() function was found in CLIB.NLM
  52.       v3.12g, May 19,1994.  The same bug is present in the
  53.       CLIB.NLM v3.12 which was shipped along with NetWare v3.12
  54.       also.
  55.  
  56. Solution: Removed pragmas outpd() and inpd(). which fixes the incorrect
  57.       assembly.
  58.  
  59. Symptom : When NWstrnum() is called with negative numbers (like, -1)
  60.       passed into the parameter Value, the call returns a '/' for the
  61.       return code and also in the buffer. 
  62.  
  63. Solution: NWstrnum() was not handling negative values correctly, we
  64.       added a check to handle negative numbers via the localization
  65.       tables.
  66.  
  67. Symptom : When running Advantage Xbase Server on a 3.12 system, the
  68.       connection between the client and the Xbase server will hang. 
  69.       If you attempt to clear the connection by MONITOR, monitor
  70.       will also hang.
  71.  
  72. Solution: The problem appears to be a timing issue. When the timing is
  73.       just right we have a deadlock situation. Here is what is
  74.       happening. A certain thread will call EnterCritSec twice before
  75.       calling ExitCritSec. This disables all other threads in the NLM.
  76.       This thread will continue to call EnterCritSec and ExitCritSec
  77.       until it calls DisableConnection.  Now after Disable connection
  78.       it calls open which blocks. Once the thread blocks it will notice
  79.       that its nested count for the critsec is up one (because of the
  80.       two in a row) . It will then put itself to sleep until another
  81.       ExitCritSec is called. This never happens and the connection
  82.       stays disabled.
  83.  
  84. Symptom:  An EnterCritSection problem was observed.
  85.  
  86. Solution: There was a problem in the way we susended or stopped
  87.       within an NCP request. 
  88.  
  89. Symptom:  If a value larger than 255 was passed in with isalpha
  90.       the server would abend.
  91.  
  92. Solution: Corrected a problem with isalpha were we would look at a
  93.       table using the value passed in.
  94.  
  95. Symptom:  A file server could abend with various error messages, because
  96.       of conflicts between the DHANDFIX.NLM Operating System patch
  97.       and a clib hook commonly used by virus scanners..
  98.  
  99. Solution: (HOOK311.386) we now dynamically find and save off the 
  100.       local variable size of the stack "sub esp, 314" so we can 
  101.       reset it to the correct size when we clean out the hooks 
  102.       and so we can correctly execute the correct "sub esp, xxx" 
  103.       when we call the actual OS entry point.
  104.  
  105. ====================================================================
  106.