home *** CD-ROM | disk | FTP | other *** search
/ CICA 1993 August / CICA.cdr / cis_libs / mswin32 / 17 / marbug.txt < prev    next >
Encoding:
Text File  |  1993-04-12  |  41.0 KB  |  1,226 lines

  1. ==============================================================================
  2. Known Problems With March Win32 SDK
  3. ==============================================================================
  4.  
  5. Microsoft is committed to providing quality products and
  6. encouraging software development. In response to developer
  7. demand we have prepared the following list of bugs. This list
  8. reflects all of the known problems with the March Win32 SDK
  9. utilities, documentation, headers, libraries and APIs as of the
  10. day it was released to manufacturing. It does not include any
  11. system utilities bugs or end-user related bugs.
  12.  
  13. This list is provided for reference only. It is intended to
  14. prevent programmers from losing valuable time debugging their
  15. Win32 code if, for example, an API is behaving in an unexpected
  16. way. If you are experiencing problems with any of the SDK
  17. components, please consult this list.
  18.  
  19. While Microsoft clearly wants to release a system with as few
  20. bugs as possible, the appearance of a bug on this list does not
  21. guarantee that it will necessarily be fixed in the next release.
  22. We will continue to post updated lists with each release. These
  23. lists only reflect known bugs at the time of that release. If a
  24. bug no longer appears on the following updated list, then it has
  25. been fixed.  There is no plan to provide interim status
  26. information on these bugs.
  27.  
  28. Please continue to submit bugs that we have not included on
  29. this list as you discover them. Your feedback is essential to
  30. ensure that Windows NT is a quality product which meets both the
  31. end-user's and the programmer's needs.
  32.  
  33. Thank you for your feedback and for investing time in testing
  34. and reporting problems.
  35.  
  36.  
  37. ==============================================================================
  38. Table of Contents:
  39.  
  40.    Section I - API - User
  41.   Section II - API - GDI
  42.  Section III - API - BASE
  43.   Section IV - Win32 SDK Tools
  44.    Section V - Compiler/ C Run-time
  45.   Section VI - RPC
  46.  Section VII - Winnet/ Winsock
  47. Section VIII - POSIX
  48.  
  49. ==============================================================================
  50. Section I:  API - User
  51.  
  52.  1. mciSetYieldProc() Always Returns Failure Under WOW
  53.  
  54.  2. The Call to mciSendString() Succeeds, but the Command Sent is Ignored.
  55.  
  56.  3. SetAudio() Should Only Allow Volume to 1001; However, Volume Up to 65535
  57.     Are Being Allowed.
  58.  
  59.  4. Seeking For Data on a CD Containing Data and Audio Will Fail After
  60.     Listening to Audio on the CD
  61.  
  62.  5. Calling waveOutWrite() with 0 Buffer Length Does Not Post Message
  63.  
  64.     When waveOutWrite() is called with a header containing a valid Buffer but
  65.     a dwBufferLength of 0, it does not post a MM_WOM_DONE message when a
  66.     callback window is used. This occurs with the MIPSSND and JazzSnd drivers.
  67.  
  68.  6. Calling SetCaretBlinkTime() Works, but the API Returns FALSE
  69.  
  70.  7. DDESPY Randomly Returns A Bad Atom
  71.  
  72.  8. There is a Problem With Unadvising When Multiple Formats Are Used For
  73.     the Same Item
  74.  
  75.  9. Running Multiple Threads May Cause DDEML Shutdown to Hit an Exception
  76.  
  77. 10. WM_HOTKEYEVENT Is Not Used in the System and Is Mistakenly Included in
  78.     the Header Files.
  79.  
  80. 11. Extended Characters Can Only Be Entered From the Numeric Pad
  81.  
  82.     Holding down the ALT key to enter extended characters only works if the
  83.     NUM LOCK is on, and the number keypad is used. Without the NUM LOCK on,
  84.     attempting to use the standard numeral keys doesn't work. The machine
  85.     just beeps.
  86.  
  87. 12. CheckMenuItem() & EnableMenuItem() Return Wrong Error Code
  88.  
  89.     When a menu handle of 0xFFFFFFFF is passed into CheckMenuItem or
  90.     EnableMenuItem, the return from GetLastError() is not
  91.     ERROR_INVALID_MENU_HANDLE (1401L). It is ERROR_INVALID_HANDLE instead.
  92.  
  93. 13. WM_NCLBUTTONUP Message Missing From Double-click
  94.  
  95.     Under Windows 3.x, the results of double clicking on a menu item are:
  96.  
  97.         WM_SETCURSOR (lParam==WM_LBUTTONDOWN)
  98.         WM_NCLBUTTONDOWN
  99.         WM_SETCURSOR (lParam==WM_LBUTTONDOWN)
  100.         WM_NCLBUTTONDBLCLK
  101.         WM_NCLBUTTONUP
  102.  
  103.     Running a Win16 or Win32 binary under Win32 results in the same as above
  104.     less the final WM_NCLBUTTONUP
  105.  
  106. 14. Caret Can Move Outside of Multi-line Edit Controls With Horz Scroll Bars
  107.  
  108.     To demonstrate the behavior follow these steps:
  109.  
  110.         1) Run generic and bring up the About box
  111.         2) Enter characters (> 3) in the edit controls
  112.         3) Press <Home> to bring the caret to the beginning of the edit
  113.            control
  114.         4) Now press the right arrow in the horz scrollbar. The caret will
  115.            move outside of the left edge of the control. To make this more
  116.            noticeable, try 10 or more characters.
  117.  
  118. 15. GetWindowLong( NULL, 0 ) Causes the Calling App to Hit a Client-side
  119.     Access Violation if it is the First USER API Called
  120.  
  121. 16. CreateBitmap() Doesn't Work Unless the Device and Icon Color Depth Match
  122.  
  123. 17. CreateIconFromResource() Doesn't Work Correctly for Color ver2 Icons
  124.  
  125. 18. Combo-box Listboxes Are Never Being Freed
  126.  
  127. 19. If a Call is Made to MessageBox() With Parent = NULL Doing an Alt-tab
  128.     Causes a Fault.
  129.  
  130. 20. Passing a NULL HICON to DrawIcon() Should Return FALSE. It Currently
  131.     Returns TRUE.
  132.  
  133. ==============================================================================
  134. Section II:  API - GDI
  135.  
  136.  1. DEVMODE Structure's DM_INTERLACED Field Not Expandable in Helpfile
  137.  
  138.  2. Print Manager Device Color/Halftone Properties, Pixel Diameter Incorrect
  139.  
  140.  3. Halftone Fails When Source is 16-bit DIB
  141.  
  142.  4. MaskBlt() Fails to Apply Mask When Printing on PSCRIPT
  143.  
  144.  5. Printer Drivers Report Incorrect wcFirst, Last, Break, Default to GDI
  145.  
  146.  6. StretchDIBits() With RLE Bitmaps Broken
  147.  
  148.  7. GetDIBits() Does Not Fill Bits in For RLE For 8 bpp
  149.  
  150.  8. Patterned Pens Fail With 4 bpp VGA Modes
  151.  
  152.  9. StretchDIBits() Monochrome Puts is Off By One in the y-axis
  153.  
  154. 10. ArcTo() With an Empty Bounding Box Produces Inconsistent Output When
  155.     A Transform is Applied.
  156.  
  157. 11. Bitmap w/palette Fails to Output Text With Compatible DIB
  158.  
  159. 12. Access Violation From CreateDC( NULL, ...)
  160.  
  161. 13. StretchBlt/PlgBlt() Do Not Appear Properly for Non-zero Origin
  162.  
  163. 14. Blt() is Slow for ROPS(6666,cc66,e2e2)
  164.  
  165. 15. FONTS: FS_ERROR using Stencil font
  166.  
  167. 16. GetTextMetricsW() Returns Wrong tmLast For TT, Vector Fonts
  168.  
  169. 17. Access Violation If FO_HGLYPH is Returned By PSCRIPT Driver
  170.  
  171. 18. Rasterizer Error: 0x1201, POINT_MIGRATION_ERR, Printing to Laserjet IID
  172.  
  173. 19. SetDIBitsToDevice() Causes Exception in WOW on x86
  174.  
  175. 20. ulPalReserved in GDIINFO is Ignored
  176.  
  177. 21. DeviceCapabilitiesEx() Does Not Work
  178.  
  179. 22. BITMAP Structure Field bmWidthBytes Should Be WORD Aligned
  180.  
  181. 23. 16 bpp Output Does Not Map Colors Correctly When Printing
  182.  
  183. 24. StretchDIBits() Ignores Clipping Region When Printing If Either x or y
  184.     Extent is Negative
  185.  
  186. 25. MaskBlt() With Color Palette Broke in PSCRIPT
  187.  
  188. 26. PaintJet Will Not Output MaskBlt() Correctly for 16 bpp
  189.  
  190. 27. PolyTextOutA/W() Are Not Deallocating Memory Properly
  191.  
  192. 28. METAFILE32: MaskBlt()/Negative Extents Fails With Scaling or Rotation
  193.  
  194. ==============================================================================
  195. Section III:  API - Base
  196.  
  197.  1. GET_PARTITION_INFO IOCtl May Return Bad Info in the Boot Indicator,
  198.     Recognized Partition, and Rewrite Partition Fields
  199.  
  200.     You can get the correct information from the GET_DRIVE_LAYOUT IOCtl.
  201.  
  202.  2. Wrong Error For Opens That Fail Due to Sharing Violations on NTFS
  203.     Partitions
  204.  
  205.     The error code returned is for Path Not Found instead of the error code
  206.     for Access Denied.
  207.  
  208.  3. Read-only File On NTFS May Be Overwritten
  209.  
  210.     If CreateFile() is called with CREATE_ALWAYS specified, and the name of an
  211.     existing, read-only file on NTFS, the file will be overwritten.
  212.  
  213.  4. Debug Privilege Is Not Enforced
  214.  
  215.  5. Some Events Are Incorrectly Audited
  216.  
  217.     This includes invalid password, taking ownership, local group
  218.     creation/deletion.)
  219.  
  220.  6. Some Connections to a Windows NT Machine Are Left Around Forever
  221.  
  222.     This happens when the client is verified as who it claims to be, but the
  223.     policies are set up on the server to not allow that person on.
  224.  
  225.  7. MEP Does Not Accept Extended Characters Entered Using Numeric Keypad
  226.  
  227.  8. The Redirector Does Not Yet Support the Alternate Data Streams of NTFS
  228.  
  229.  9. MoveFile() Will Not Move Files to a Directory That is Marked as Read-only
  230.  
  231. 10. MoveFileEx(... MOVEFILE_DELAY_UNTIL_REBOOT | MOVEFILE_REPLACE_EXISTING)
  232.     Will Not Work If the Destination File Exists
  233.  
  234.     This only is a problem with HPFS partitions on MIPS machines.
  235.  
  236. 11. HeapCreate() Called With cbMax=0 Will Fail If 1 < cbInitial < 192
  237.  
  238. 12. GlobalSize() May Fail If It Is Called With a Non-memory Handle
  239.  
  240.     GetlastError() reports ERROR_INSUFFICIENT_BUFFER (122).
  241.  
  242. 13. HeapAlloc APIs Are Prototyped as LPSTR and Not LPVOID
  243.  
  244.     Affeccted APIs include: HeapAlloc(), HeapReAlloc(), HeapSize() and
  245.     HeapFree().
  246.  
  247. 14. FormatMessage() Word-wraps Incorrectly, Resulting in Lines That Are Too
  248.     Long
  249.  
  250. 15. LockResource() On Handle Returned by FindResource() Works as Expected, Not
  251.     As Documented
  252.  
  253.     This may be a doc bug, but it may be an API bug.
  254.  
  255. 16. WideCharToMultiByte() May Improperly Convert Strings That Begin With a
  256.     Non-spacing Character
  257.  
  258. 17. Two Processes Can Successfully Open the Same Tape Device
  259.  
  260.     This happens even if the sharing flags are set to exclusive access.
  261.  
  262. 18. GetFileVersionInfoSize() May Fail Without Properly Setting the Last Error
  263.  
  264. 19. GetFileVersionInfo() Does Not Honor the Buffer Size That is Passed In
  265.  
  266.     It is possible that the API will overwrite some of the data if the buffer
  267.     that is passed in is too small.
  268.  
  269. ==============================================================================
  270. Section IV:  Win32 SDK Tools
  271.  
  272.  1. WinDbg Should Check If DLL Has Changed When Reloading
  273.  
  274.     Symbols are not actually reloaded, therefore the DLL should be checked to
  275.     see if it has changed and the symbols reloaded.
  276.  
  277.  2. WinDbg Does Not Support 64-bit integers in MIPS Expression Evaluator
  278.  
  279.  3. WinDbg DM Gets Wrong Exe Name For Non-root Processes
  280.  
  281.  4. WinDbg Does Not Allow Editing in Locals, Watch, and FP Windows
  282.  
  283.  5. Expanding Item in WinDbg Locals Window Causes Shift
  284.  
  285.     Open the Locals window, size so that a vertical scroll bar appears.
  286.     Scroll so that the last expandable item is in view. Expand the item.
  287.     The view shifts to the top of the list of locals.
  288.  
  289.  6. Update In One Memory Window Does Not Similarly Change Second Window
  290.  
  291.     Open two Memory windows in WinDbg. Changes to data in one window
  292.     are not reflected in the other window until it gets the focus.
  293.  
  294.  7. Problems Paging in WinDbg in 10-byte Real Format on x86
  295.  
  296.     Do the following:
  297.  
  298.         windbg generic
  299.         p
  300.         Select Window.Memory
  301.         Enter "eip" for address.
  302.         Select 10-byte real format
  303.         Page down
  304.  
  305.     The address originally at the bottom should be up at top, but this
  306.     address is well off the top of the screen.
  307.  
  308.  8. WinDbg Expression Evaluator Fails With (float)**fPtr and (double)**dPtr
  309.  
  310.     The values are displayed as integers, not as reals.
  311.  
  312.  9. Radices Under WinDbg
  313.  
  314.     Only radix 16 overrides are acceptable when the default radix is 10. All
  315.     radix overrides (0o, 0x, 0t) should be accepted.
  316.  
  317. 10. WinDbg Incorrectly Displays 10-byte Floating Point Variables
  318.  
  319. 11. Local Symbols Not Available in Exception Filters under MIPS WinDbg
  320.  
  321. 12. MIPS WinDbg Stack Traces Fail
  322.  
  323.     The argument values and stack offsets vary widely.
  324.  
  325. 13. MIPS WinDbg Status Register Bits In Register Window Not Complete
  326.  
  327.     imsk components are displayed as int0-int5, int6&int7 are missing
  328.     rp, fr, re, ds (and components) and ie are not displayed
  329.     kuo, ieo, kup, iep, kuc, iec are defined for R2000, R3000, and R6000,
  330.         but not the R4000
  331.     There are other coprocessor 0 registers that should be added
  332.  
  333. 14. Maximum State of WinDbg Not Restored When Using Workspace
  334.  
  335. 15. WinDbg Breakpoints in Workspace Are Not Highlighted, but Appear With bl
  336.  
  337. 16. WinDbg Breakpoint Not Highlighted if Breakpoint Is Set On Unopened File
  338.  
  339. 17. Default Display Format for Doubles in WinDbg Not Precise
  340.  
  341. 18. WinDbg Remote Options.Transport DLLs.Change Should Be Grayed Until A
  342.     Change Is Made in an Edit Field
  343.  
  344. 19. WinDbg ed Command Takes Negative Numbers, eb and ew Do Not
  345.  
  346. 20. Problems With WinDbg Conditional Breakpoints
  347.  
  348.     After stepping over a function which has a conditional breakpoint which
  349.     fails (i.e. continues), the breakpoint set to end the step is cleared, so
  350.     this behaves like a Go.
  351.  
  352. 21. WinDbg Breakpoint Highlight Not Removed By bc or Unresolved bp Dialog
  353.  
  354. 22. WinDbg Locals Windows Collapses Expanded Structs On Scope Change
  355.  
  356. 23. Stack Overflow Missing from WinDbg Exception List
  357.  
  358. 24. Executable Cannot Be Overwritten After WinDbg Run.Stop Debugging,
  359.  
  360. 25. Field Outside WinDbg Locals Window Will Not Get Change Highlight Color
  361.  
  362. 26. WinDbg Watch Window Backtab Does Not Work Properly
  363.  
  364. 27. Hitting Breakpoint During Step Does Not Work Correctly
  365.  
  366. 28. WinDbg Assertion
  367.  
  368.     Assertion failed - Line:280, File:D:\nt\private\windbg\windbg\apisupp.c
  369.     Condition:LppdCur
  370.  
  371. 29. WinDbg Assertion
  372.  
  373.     Assertion Failed - Line:1061, File:D:\nt\private\windbg\windbg\codemgr.c
  374.     Condition:FindDoc(SrcFname, &doc, TRUE)
  375.  
  376. 30. WinDbg Message "error loading DLL" Can Be Misleading
  377.  
  378.     This message may occur when a bad name is read from the registry.
  379.  
  380. 31. Disasm Window Gets Incorrect Starting Offset
  381.  
  382.     Open the disasm window. Step. Open the disasm window. The address for a
  383.     dump of the disasm is 0:0, not the program counter.
  384.  
  385. 32. Boolean Expressions Containing Registers May Be Evaluated Incorrectly
  386.  
  387. 33. Results of Boolean Expressions Should Be int, Not short
  388.  
  389. 34. WinDbg Exit Differs Using File.Exit and q (in Command Window)
  390.  
  391. 35. Starting WinDbg Under Checked Build Results in "Invalid Window Handle"
  392.  
  393. 36. Can Not Change the Value of Array Members Under WinDbg
  394.  
  395. 37. WinDbg File.Open Dialog Does Not Remember Previous File Type
  396.  
  397. 38. Breakpoint Highlight Not Shown In WinDbg
  398.  
  399.     Open a source file, scroll down and set a breakpoint. Close the file. Open
  400.     the file and scroll down. The breakpoint is not visible, but it is
  401.     correctly set.
  402.  
  403. 39. WinDbg Locks Up After CXX0002: Error: error accessing user memory
  404.  
  405.     Due to a problem that the expression evaluator has with static function
  406.     calls.
  407.  
  408. 40. WM_CANCELJOURNAL Message Missing From WinDbg Breakpoint Message List
  409.  
  410. 41. ? func() and ? MyClass::Func() Do Not Behave the Same
  411.  
  412.     For the former, the address and prototype are dumped. For the latter, the
  413.     expression is evaluated.
  414.  
  415. 42. dc func and dc MyClass::Func Do Not Behave the Same
  416.  
  417.     For the former, the function is disassembled from its beginning. For the
  418.     latter, disassembly begins at address 0.
  419.  
  420. 43. Text Selection Does Not Work in WinDbg Watch Window
  421.  
  422. 44. Text Selection in WinDbg QuickWatch Window Leaves Caret in Odd Location
  423.  
  424. 45. WinDbg Windows.Arrange Icons Not Activated For Certain Icons
  425.  
  426.     These icons are namely for minimized Watch, Register, or Locals windows.
  427.  
  428. 46. WinDbg Can Not Debug an App Compiled with -Gy and Linked With -order
  429.  
  430.     This is actually a bug in the linker.
  431.  
  432. 47. WinDbg Remote Disconnect Does Not Unload Transport
  433.  
  434. 48. Incorrect Scrolling For End Key In WinDbg Watch Window
  435.  
  436. 49. WinDbg Does Not Properly Handle WinDbg Remote Breaking the Connection
  437.  
  438. 50. OK Button in WinDbg Run.Set Process Dialog Should Be Gray Unless Process
  439.     is Selected
  440.  
  441. 51. WinDbg Breakpoints Resolved After Module Load Are Not Colored
  442.  
  443. 52. Horz. Scrollbars in WinDbg Locals, Watch, Registers Windows Can Scroll
  444.     Too Far
  445.  
  446. 53. WinDbg dc Command Should Only Disassemble 8 Instructions
  447.  
  448. 54. Problems With WinDbg QuickWatch Window
  449.  
  450.     After opening the window, both the Change and Add buttons are marked as
  451.     selected. The Watch Expression box is not selected. It may contain a
  452.     garbage character left over from the last window in focus.
  453.  
  454.     The button labeled "Add" should be qualified as "Add to Watch Window". To
  455.     enter into QuickWatch List, hit enter.
  456.  
  457. 55. WinDbg Issues Bad Message When Changing Focus With New Untitled Window
  458.  
  459.     To reproduce, open a new file, focus away from WinDbg, restore focus to
  460.     WinDbg. WinDbg says "UNTITLED 1 No longer exists on disk, use
  461.     File.Save to restore it".
  462.  
  463. 56. LPSTR Array Elements Not Displayed in Watch Windows in MIPS WinDbg
  464.  
  465. 57. WinDbg Does Not Find Source If the Executable Name is Fully Qualified
  466.  
  467. 58. Format Specifiers Should Not Be Allowed on Structures in WinDbg Watch
  468.     and Locals Windows
  469.  
  470. 59. Problem With WinDbg Exception Names that Contain a Slash
  471.  
  472.     Go to the Options Menu and choose Debug. Go to Exceptions, select
  473.     "I/O Error in Paging". The data is not copied into the proper edit boxes.
  474.     Press the Enable button, the text associated with the exception changes
  475.     to "Unknown".
  476.  
  477. 60. WinDbg Cannot Set Message Breakpoint if WndProc Is In a DLL
  478.  
  479. 61. WinDbg Caret Not Placed After Command Prompt On Startup
  480.  
  481. 62. WinDbg attach Command Does Not Accept Radix Overrides
  482.  
  483. 63. WinDbg Disassembly Window Not Updated After Tracing Into DLL With No
  484.     Symbolic Information
  485.  
  486. 64. Changing Symbol Load State of USER DLLs Requires Debuggee Unload
  487.  
  488. 65. WinDbg Run.Toggle Source/Asm Mode Only Goes From Asm Mode To Source
  489.  
  490. 66. WinDbg ln Command Outputs Import Data
  491.  
  492. 67. Access Violation From WinDbg When Terminating After Failed Connection
  493.  
  494. 68. Cannot Re-Add Deleted Exceptions In WinDbg Exception Dialog
  495.  
  496. 69. ListBox in WinDbg Edit.Find Does Not Retain History
  497.  
  498. 70. WinDbg Ctrl-] Does Not Ignore Characters Inside Quoted Strings
  499.  
  500. 71. WinDbg Locals Window Does Not Display Variables After Run.Stop Debugging
  501.  
  502.     Do Run.Stop Debugging, overwrite the executable, then go back to WinDbg.
  503.     The Locals windows will not display anything until it is closed and
  504.     re-opened.
  505.  
  506. 72. WinDbg Does Not Use Access Token of Original Primary Thread
  507.  
  508. 73. WinDbg Asserts When Attempting to Copy A Large Amount of Text from
  509.     Disasm Window
  510.  
  511.     Assertion Failed - 2522 edit.c
  512.     YL <= YR && YR < Docs[v->Doc].NbLines
  513.  
  514. 74. WinDbg Disasm Window Not Always Autoscrolled When Selecting Text With
  515.     Mouse and the Mouse is Below the Window
  516.  
  517. 75. Files Cannot Be Saved in WinDbg When Iconized
  518.  
  519. 76. Cannot Always See Last Line Of WinDbg Command Window
  520.  
  521. 77. WinDbg Scrolls Horizontally When Selecting Block
  522.  
  523. 78. WinDbg May Confuse Source Files
  524.  
  525.     For example, suppose an app has two source files that have the same name
  526.     (but live in different directories). You may not be able to set
  527.     breakpoints in the files.
  528.  
  529. 79. WinDbg Wants to Instantiate Breakpoint in More Than One Location
  530.  
  531.     This can happen with functions defined in C++ header files included in
  532.     more than one source file.
  533.  
  534. 80. WinDbg Remote on Win32s Should Only Allow One Instance To Be Run
  535.  
  536.     This is because WinDbg's DLL uses instance global data, which is not
  537.     supported on win32s.
  538.  
  539. 81. WinDbg Should Be Able to Disambiguate Functions that Can Be Thunks
  540.  
  541.     Take GetMessageA(). dc GetMessageA disassembles memory starting at the
  542.     thunk for GetMessageA(). bp GetMessageA() sets a breakpoint at the start
  543.     of the function GetMessageA() in USER32.DLL.
  544.  
  545. 82. Inconsistent Thread/Process State When Thread is Blocked
  546.  
  547.     The thread is Running but the process is Not Running.
  548.  
  549. 83. WinDbg Cannot Disassemble cmpxchg, invd, invlpg, and wbinvd
  550.  
  551. 84. WinDbg DOC Errors
  552.  
  553.     Debug.Breakpoints Dialog:
  554.     Under Status, V should indicate that the address for the breakpoint has
  555.         been obtained, but the breakpoint has not been set in memory
  556.     No mention of Process or Thread fields
  557.     No mention of Message or Modify buttons
  558.     Breakpoints types in help do not match those in the combobox
  559.     Options.Debug.User DLLs dialog:
  560.     DLL List contains DLL Name, Loaded, Not Loaded, Suppress, Suppressed,
  561.         Local
  562.     To enable/suppress the loading of debug info for a DLL in the DLL list,
  563.         select the DLL, click Load/Suppress, then click Modify
  564.     No mention of Defaults or Browse buttons
  565.     Search Path field can be found in the User DLLs.Defaults dialog
  566.     Options.Debug.Debugger DLLs dialog help is outdated
  567.     Dialogs which have no help:
  568.     Debug.Breakpoint.Message
  569.     Options.Debug.User DLLs.Defaults
  570.     Help.Contents.Quick Look.Key to the Toolbar.Go has a description of Source
  571.         files. This is left-over from QCWIN. It is not possible to build the
  572.         project using WinDbg.
  573.     Options.Watch.Help brings up help for Debug.Watch Expression
  574.     Additions to Debug.Quickwatch help
  575.     In order to do the quickwatch, the item must be in scope
  576.     A carriage return is required after editing the expression box
  577.     Expressions can be added to the watch window
  578.     Edit.Find popup box for Find Options lists these non-existent options
  579.     Wrap on Search
  580.     Prompt on Wrap
  581.     Contents.Quick Look.Shortcut Keys for Debugging gives Ctrl-F9 as the
  582.         accelerator for Modify Variable, which does not exist
  583.     Options.Environment.Help maps to Debugger Options help
  584.     No help exists for Toggle Source/Asm mode
  585.     Assemble command listed in Command Window Reference is not supported
  586.     Display Memory in Command Window Reference contains self-referential link
  587.     Go command does not support g=startaddress syntax
  588.  
  589. 85. Certain STATUS Codes Should Be Defined As Exceptions in WINBASE.H
  590.  
  591.     STATUS_ILLEGAL_INSTRUCTION
  592.     STATUS_NONCONTINUABLE_EXCEPTION
  593.     STATUS_INVALID_DISPOSITION
  594.     STATUS_STACK_OVERFLOW
  595.  
  596. 86. Symbolic Constant Needed for WaitForSingleObject() Error Return
  597.  
  598. 87. RC Incorrectly Processes Extra Zero-containing Strings
  599.  
  600.     The result is that VerQueryValue() returns an incorrect length.
  601.  
  602. 88. RC Cannot Compile An Empty Accelerator Table
  603.  
  604. 89. RC Should Remove Temporary Files If Terminated
  605.  
  606. 90. SPY Should Report That You Cannot Spy on Console Windows
  607.  
  608. 91. Windiff Does Not Report Error When Printing With No Printer Installed
  609.  
  610. 92. CAP Fails on COFF.EXE
  611.  
  612. 93. CAP Profiler Does Not Support Dynamically Loaded DLLs
  613.  
  614. 94. CAP Does Not Work Properly With Multi-threaded Apps
  615.  
  616.     The data for threads that are terminated is not separated from that of new
  617.     threads with the same ID.
  618.  
  619. 95. CAP Does Not Report Accurate Times for Routines With No Return
  620.  
  621. 96. MS-TEST: WButtonExists() Does Not Find Button
  622.  
  623. 97. MS-TEST: ComboSelText() Cause GP Fault With App Being Tested
  624.  
  625. 98. MS-TEST: Ctrl+Esc Does Not Stop Execution of Script
  626.  
  627. 99. Message Compiler Mishandles Null Entries
  628.  
  629. ==============================================================================
  630. Section V:  Compiler/ C Run-time
  631.  
  632.  1. C Run-time Errors Cause GUI Apps To Die Without Explanation
  633.  
  634.     The mechanism for reporting C Run-time errors is currently console-based
  635.     only. For example, an integer divide-by-zero in a console app causes the
  636.     C-runtime to print "runtime error R6003 - integer divide by 0" on the
  637.     console, but a divide-by-zero in a GUI app simply kills the app with no
  638.     indication of what caused the failure.
  639.  
  640.  2. SETJMP.H Lacks extern "C" Declaration
  641.  
  642.  3. CRT signal() Does Not Always Detect FP Overflow
  643.  
  644.  4. MIPS: fscanf() Data Must Be Aligned on 32-bit Boundaries
  645.  
  646.  5. ERRNO.H Has Missing/Conflicting Error Codes
  647.  
  648.     ENAMETOOLONG and ENOTEMPTY conflict with defines in WINSOCK.H.
  649.  
  650.     ERRNO.H no longer defines:
  651.  
  652.         EZERO
  653.         ENOTBLK
  654.         ETXTBSY
  655.         EUCLEAN
  656.  
  657. 6.  -Gr and -Gz Can Cause An Internal Compiler Error
  658.  
  659. 7.  Invalid Syntax and /Gz Can Cause Internal Compiler Error
  660.  
  661. 8.  C1001: codegen.c, line 2453 With _asm loop $
  662.  
  663.     void main()
  664.     {
  665.       _asm loop $
  666.     }
  667.  
  668.     Generates: C1001: internal compiler error, compiler file codegen.c,
  669.     line 2453
  670.  
  671. 9.  Static Member Function May Not Be Emitted As COMDAT
  672.  
  673. 10. MIPS: Warning Levels Differ Between cl386 & mcl
  674.  
  675. 11. Bad Line Numbers If Image Contains Multiple Code Sections
  676.  
  677. 12. Page 247 of Tools Manual Should Show 0x4000 as 16K
  678.  
  679. 13. Bad Module Address Generated When a Static Function is Multiply Defined
  680.  
  681. 14. Redirection in Console Via C-runtime Fails
  682.  
  683. 15. Assert Macro Works, but Differs From Microsoft C/C++ 7.0
  684.  
  685. 16. _chdir() Not Only Changes Working Directory, but Also Current Drive
  686.  
  687. 17. MIPS Compiler Flips Order of Bytes of a Denormalized Double
  688.  
  689. 18. Typedef Causes Compiler Error
  690.  
  691.     typedef  struct rng_struct
  692.     {
  693.        char   *pch;
  694.        short  a;
  695.     } volatile RNGBUF, * volatile RNGBUFP;
  696.  
  697.     The work-around is to redefine the structure so that it is volatile
  698.  
  699.     typedef volatile struct rng_struct
  700.     {
  701.        char   *pch;
  702.        short  a;
  703.     } RGNBUF, *RNGBUFP;
  704.  
  705. 19. C1001: Internal Compiler Error, msc1.cpp, line 564
  706.  
  707.     Can be caused by incorrect code, like the following
  708.  
  709.     static int
  710.     foo(c)
  711.        char *c
  712.     );
  713.  
  714.     static int
  715.     foo(c)
  716.     char *c;
  717.     {
  718.        ;
  719.     }
  720.  
  721. ==============================================================================
  722. Section VI: RPC
  723.  
  724.  1. MIDL: Encapsulated Unions Do Not Check Case Range
  725.  
  726.     union This switch(boolean b) that
  727.     {
  728.         case 1024:
  729.             short s;
  730.     };
  731.  
  732.  2. MIDL: No Array Bounds Checks In the Following Cases:
  733.  
  734.     first_is value < min_is (zero) value
  735.     last_is value > max_is value
  736.  
  737.  3. MIDL: Embedded Open Array of Strings Not Marshalled Correctly
  738.  
  739.     typedef [string] char FS[80];
  740.     typedef struct _A {
  741.       short s;
  742.       [size_is(s), length_is(s)] FS array[];
  743.       } A;
  744.  
  745.     void f([in] A *pa);
  746.  
  747.  4. MIDL: NULL Arrays May Be Incompatible.
  748.  
  749.     This may not interoperate with other DCE hosts
  750.  
  751.        void f([in, unique, size_is(*psize)] char array[],[in, out, ref]
  752.            unsigned long *psize);
  753.  
  754.  5. MIDL: Fixed 2D Array of Fixed String Incompatible
  755.  
  756.     The following may not interoperate with other DCE hosts
  757.  
  758.        typedef [string] char FIXED_STRING[80];
  759.        void f( [in, out] FIXED_STRING array[5][5] );
  760.  
  761.  6. MIDL: Doesn't Compile Implicit_Handle If Type Not Defined
  762.  
  763.  7. MIDL: Unsigned/signed Warnings For MIDL_ascii_strlen()
  764.  
  765.  8. MIDL: Error Generated For Pointers to Conformant Arrays
  766.  
  767.     typedef [string] char array[];
  768.  
  769.     void proc([in] array *parray);
  770.  
  771.  9. MIDL: Encapsulated Union Doesn't Check Case 1
  772.  
  773.     typedef union EUA switch(small sw) A
  774.     {
  775.         case 0:
  776.             long l;
  777.         case 1:
  778.             long al[2];
  779.     } ENCAP_UNION_A;
  780.  
  781. 10. MIDL: MIPS Version of MIDL Doesn't Spawn MCL By Default
  782.  
  783. 11. MIDL: Stubs Infinite Loop/GPF For Arrays > 65535 Elements
  784.  
  785.     A fixed or conformant array using size_is(), or a varying array using
  786.     last_is() which has > 65535 elements on NT clients will loop forever.
  787.  
  788. 12. MIDL: Problem With Import Mode, Structures and Callbacks.
  789.  
  790.     If import mode is not OSF (i.e. defined_single), and the interface has at
  791.     least one callback, then the fgs routines are not produced if a structure
  792.     which needs them is in a RPC.
  793.  
  794. 13. MIDL: When No Disk Space Left, MIDL Ignores.
  795.  
  796. 14. MIDL: MIDL Keeps Half-completed File After Errors
  797.  
  798.     After errors in writing to the stub files occur, the MIDL compiler
  799.     doesn't remove affected files, even though they are half done and cannot
  800.     C compile.
  801.  
  802. 15. MIDL: Wrong Code Generated For Array Types
  803.  
  804.         typedef unsigned short LINEBUF[ MAX_BIFSIZE ];
  805.         LPVOID psBuf;
  806.         Func(<other arguments>, (LINEBUF *) psBuf );
  807.  
  808.     Generates:
  809.  
  810.         Func(<other arguments>, &psBuf );
  811.  
  812.     Which should generate psBuf, or &psBuf[0].
  813.  
  814. 16. MIDL: No Error Given For Union of Unions
  815.  
  816.     typedef [switch_type(short)] union _U1 {
  817.         [case(1)] char c;
  818.         [default] short s;
  819.     } U1;
  820.  
  821.     typedef [switch_type(long)] union _U2 {
  822.         [case(1)] short s;
  823.         [default] [switch_is(s)] U1 u1;
  824.     } U2;
  825.  
  826. 17. MIDL: Array Pointers Allowed to Non-encapsulated Unions
  827.  
  828. 18. MIDL: _far Not Given in allocate(all_nodes) Under Small Model
  829.  
  830.     Client stubs on 16-bit platforms using the small memory model GP-faults.
  831.  
  832. 19. MIDL: No warning for ptr attributes on embedded arrays
  833.  
  834.     typedef [ref] char CHAR_ARRAY[80];
  835.  
  836.     typedef struct A
  837.      {
  838.      [unique] char array1[90];
  839.      CHAR_ARRAY array2, array3;
  840.      } A_STRUCT;
  841.  
  842.     MIDL should produce a warning for each of array1, array2 and array3.
  843.  
  844. 20. MIDL: "typedef [trasmit_as(long)] void XMIT_VOID" Accepted
  845.  
  846. 21. MIDL: Double Error Messages When Context Handle, transmit_as
  847.  
  848.     typedef [transmit_as(long)] void * XMIT_TYPE;
  849.     void foo( [in, context_handle] XMIT_TYPE cht );
  850.  
  851. 22. MIDL: Arrays of Presented Type Elements Not Implemented
  852.  
  853.     typedef [transmit_as(long)] ENUM_DAYS XMIT_DAYS;
  854.     foo( [ length_is( len )] XMIT_DAYS  axd[10], long len );
  855.  
  856. 23. MIDL: transmit_as(): Cannot Embed in Structs or Unions
  857.  
  858. 24. MIDL: transmit_as() Accepted When User Cannot Translate Back
  859.  
  860.     Following cases are accepted by the MIDL compiler in place of FOO
  861.     typedef [transmit_as(whatever)] FOO bar;
  862.  
  863.         1) a struct with varying fixed-sized array
  864.  
  865.     this goes against MIDL and IDL specs (although the idl compiler passes the
  866.     varying case without complaining, and of course the stub code seems to
  867.     have appropriate calls.
  868.  
  869.         2) a struct with a member being a pointer decorated with array
  870.            attributes like:
  871.  
  872.     [size_is(foo), length_is(bar)] long * pL;
  873.  
  874.     The point is that when translating from the transmitted type to the
  875.     presented type, the user may/does not have enough information to translate
  876.     things correctly back to the presented type. In this respect, it is quite
  877.     similar to the problem of translating a struct with an open array (and
  878.     open arrays are forbidden).
  879.  
  880.     The IDL compiler accepts this again and issues calls to the translating
  881.     routine as usual.
  882.  
  883. 25. MIDL: Problems With transmit_as Code Generation
  884.  
  885.     typedef [transmit_as (long) ] short SHORT;
  886.  
  887.     typedef struct foo
  888.      {
  889.       SHORT s;
  890.       long l;
  891.      } FOO;
  892.  
  893.     The sns routines increment the marshalling buffer by 4 rather than
  894.     the actual transmitted size which is 2 + 4 = 6.
  895.  
  896. 26. MIDL: No Error For [transmit_as(handle_t)]
  897.  
  898. 27. MIDL: Presented Types Should Be Black Box
  899.  
  900.     When dealing with straight types such as:
  901.  
  902.         typedef long LARR[100];
  903.  
  904.     We can easily see what the meaning of the following is:
  905.  
  906.         void foo([in, length_is(len)] LARR arr, [in] long len );
  907.  
  908.     However the following presents difficulties in interpretation and should
  909.     be forbidden by the compiler.
  910.  
  911.         typedef [transmit_as(FOO)] long * XMIT_PLONG;
  912.  
  913.         void foo( [in, size_is(size)] XMIT_PLONG xl, long size );
  914.  
  915.     or
  916.  
  917.         void foo( [in, length_is(len)] XMIT_PLONG xl, long len );
  918.  
  919.     Currently the compiler accepts the first signature and rejects the second
  920.     on the ground that the bounds are not defined. Apparently the
  921.     interpretation is that there is a stream of longs being sent. This is at
  922.     best very misleading. The user is supposed to pass a XMIT_PLONG argument
  923.     (i.e. long *) for translation, the stub would transmit a series of longs
  924.     instead of foos.
  925.  
  926.     The compiler should issue an error when using array attributes would imply
  927.     going into the black box of the presented type.
  928.  
  929.     The examples given above considered signatures. The same situations can be
  930.     generated with structs.
  931.  
  932. 28. MIDL: No Error When Unsupported Idempotent Attribute Used
  933.  
  934. 29. MIDL: No Error When Unsupported Shape Attribute Used
  935.  
  936. 30. MIDL: [byte_count] Can Only be Applied to Out Pointer Parms
  937.  
  938.     /* IDL file */
  939.     void foo([in]      unsigned short  length,
  940.              [in, out] struct foo      *pFoo);
  941.  
  942.     /* ACF file */
  943.     foo([byte_count(length)] pFoo);
  944.  
  945.     MIDL didn't generate any error about the [in, out] parameter that
  946.     [byte_count] is applied to.
  947.  
  948. 31. MIDL: No Error For Using error_status_t In An Array
  949.  
  950. 32. MIDL: Unclear Error Messages Given for Hybrid Unions.
  951.  
  952.     // case 1: Straight C style union.
  953.     typedef union _union_hybrid1 {
  954.         case 1:  short     s;
  955.         case 2:  long      l;
  956.         default: char      c;
  957.     } union_hybrid1;
  958.  
  959.     // case 2: Non-encapsulated union with encapsulated union arms.
  960.     typedef [switch_type(short)] union _union_hybrid2 {
  961.         case 1:  short     s;
  962.         case 2:  long      l;
  963.         default: char      c;
  964.     } union_hybrid2;
  965.  
  966.     // case 3: Both non-encapsulated and encapsulated union header
  967.     //         with encapsulated union arms.
  968.     typedef [switch_type(short)] union _union_hybrid3 switch(short s) un {
  969.         case 1:  short     s;
  970.         case 2:  long      l;
  971.         default: char      c;
  972.     } union_hybrid3;
  973.  
  974.     // case 4: Encapsulated union with non-encapsulated union arms.
  975.     typedef union _union_hybrid4 switch(short s) {
  976.         [case(1)] short     s;
  977.         [case(2)] long      l;
  978.         [default] char      c;
  979.     } union_hybrid4;
  980.  
  981.  
  982. 33. MIDL: Encapsulated Union Gets [switch_type] Not Defined Error
  983.  
  984. 34. MIDL: 0,1,2,... Out of Short Range Warnings
  985.  
  986.     typedef [switch_type(short)] _un{
  987.        [case(0,1)] short s;
  988.        [case(2,3)] char c;
  989.     }
  990.  
  991. 35. MIDL: Expression Must Be of Integral Type
  992.  
  993.     void foo([in, size_is(16)] char *p)
  994.     {
  995.     }
  996.  
  997. 36. MIDL: Case Out of Range For switch_type Not Being Reported
  998.  
  999.     LONG_MAX is clearly out of range for a short switch_type, but no error or
  1000.     warning is reported.
  1001.  
  1002.     // case 2: switch_type(short) with case(LONG_MAX)
  1003.     typedef [switch_type(short)] union _union_max {
  1004.         [case(1)]        short     s;
  1005.         [case(LONG_MAX)] long      l;
  1006.         [default]        char      c;
  1007.     } union_max;
  1008.  
  1009.     void MaxMatch([in, switch_is(s)] union_max unmx, [in] short s);
  1010.  
  1011. 37. MIDL: Negative size_is Not Caught on [out] Conformant Arrays
  1012.  
  1013. 38. MIDL: long, short, etc Not Recognized as Types With allocate()
  1014.  
  1015.     Improper usage of the allocate attribute in the ACF file:
  1016.  
  1017.         typedef  [allocate(single_node)] short;
  1018.  
  1019.     gives extremely inelegant (and fatal) error message:
  1020.  
  1021.     "... syntax error: expecting a type name or identifier"
  1022.  
  1023. 39. MIDL: allocate() Accepted With void *
  1024.  
  1025. 40. RpcEpResolveBinding() Problems With NULL IfSpec.
  1026.  
  1027. 41. Invalid Entry Error (1751) on RPC Server
  1028.  
  1029.     After stopping an RPC server, via Ctrl-C several times, error 6d7 (1751),
  1030.     EPT_S_INVALID_ENTRY occurs on a call to RpcEpRegisterNoReplace().
  1031.  
  1032. 42. RpcNsMgmtSetExpAge(0) Problems
  1033.  
  1034.     Setting the expiration age to 0 causes the results of subsequent broadcasts
  1035.     to be immediately aged off, before they can be passed to the client. Thus
  1036.     NO_MORE_BINDINGS unless the server is on the same machine as the client.
  1037.  
  1038. 43. Error Codes Wrong
  1039.  
  1040.     RPC_S_SERVER_NOT_LISTENING --> RPC_S_NOT_LISTENING
  1041.     RPC_S_CANNOT_BIND remove
  1042.     RPC_S_SERVER_OUT_OF_MEMORY --> ERROR_NOT_ENOUGH_SERVER_MEMORY
  1043.  
  1044. 44. RpcSeverUseProtseqEp() Bad Return Code
  1045.  
  1046.     If a protocol sequence is not supported, CANT_CREATE_ENDPOINT is
  1047.     erroneously returned.
  1048.  
  1049. 45. Wrong Error Code Returned to Client After Server Re-listen
  1050.  
  1051.     The server calls RpcServerListen(2,2,*), then stops, then calls
  1052.     RpcServerListen(1,1,*). One client makes a call and holds while another
  1053.     tries to call. The second one should receive RPC_S_TOO_BUSY, but actually
  1054.     receives RPC_S_CALL_FAILED.
  1055.  
  1056. 46. Division By Zero Value Not Correct
  1057.  
  1058.     Client:
  1059.     RpcTryExcept
  1060.     {
  1061.     RaiseDivideByZero();
  1062.     }
  1063.     RpcExcept(RpcStatusCode() == RPC_S_ZERO_DIVIDE)
  1064.     {
  1065.     ..
  1066.     }
  1067.     RpcEndExcept
  1068.  
  1069.     Server:
  1070.     int _GetZero() { return 0; }
  1071.  
  1072.     void RaiseDivideByZero()
  1073.     {
  1074.       int i = 1000;
  1075.  
  1076.       i = i / _GetZero();
  1077.     }
  1078.  
  1079.     When run on NT locally, exception 0xC0000094 gets raised. This is the
  1080.     "true" division by zero exception value. It doesn't get mapped to 1767
  1081.     (RPC_S_ZERO_DIVIDE).
  1082.  
  1083.     Similar problems occurs for FP underflow exceptions.
  1084.  
  1085. 47. DOS/Win16 DLL Names Need to Match
  1086.  
  1087.     The RPC client DLLs for Win16 and for DOS should match except for the
  1088.     extension. This is the model we recommend for developing new transport
  1089.     DLLs, and it is required for NetBIOS over something other than NetBeui
  1090.     to work.
  1091.  
  1092.     This is because the DLL name in the registry is
  1093.     "...\ClientProtocols\ncacn_nb_xyz=rpcltc5"
  1094.  
  1095.     The Run-time knows to add .DLL or .RPC to the entry value to get the name
  1096.     of the DLL to use.  This doesn't work if the Win16 DLL is named
  1097.     rpcwltc5.dll.
  1098.  
  1099.     Since NT uses two system directories (system and system32) there is no
  1100.     name collision between the Win16 and Win32 DLL names.
  1101.  
  1102. 48. RpcServerListen() Returns Prematurely
  1103.  
  1104.     If a client issues a call to a server that causes the server to call
  1105.     RpcMgmtStopServerListening(), the client's call can fail. This is because
  1106.     there's a race condition in which RpcServerListen() doesn't really wait
  1107.     for all in-progress calls to complete. If the server app exits shortly
  1108.     after RcpServerListen() returns, the RPC transport's response to the
  1109.     client may not occur, in which case the client gets a RPC_S_CALL_FAILED
  1110.     error.
  1111.  
  1112. 49. LRPC Clients Can Hang When Connecting to Server
  1113.  
  1114.     1) Start a server listening to an LRPC endpoint.
  1115.     2) Quickly start a client to the same endpoint.
  1116.  
  1117.     When a server first starts there is a short period of time during which it
  1118.     will return 1723 (RPC_S_SERVER_TOO_BUSY). If the client gets this error it
  1119.     will then hang during the next call. (The next call should connect..)
  1120.  
  1121.     If the client come up to fast it will the 1722 (RPC_S_SERVER_UNAVALIABLE)
  1122.     and not hang. If the client takes to long to come up, it will connect and
  1123.     everything will run okay.
  1124.  
  1125. 50. LRPC Server Cannot Call Itself
  1126.  
  1127. ==============================================================================
  1128. Section VII:  Winnet/Winsock
  1129.  
  1130.  1. UDP Can Send on Broadcast Address Without SO_BROADCAST
  1131.  
  1132.  2. SYN ACK Not Sent Until Application Executes an accept()
  1133.  
  1134.  3. Windows Sockets Needs to Abort Connection if Data Received After Shutdown
  1135.  
  1136.     If an application shuts down the receive side, then data arrives, Windows
  1137.     Socket should abort the connection.  Currently it just throws out the data.
  1138.  
  1139.  4. No Error Code is Given with FD_CLOSE if Connection is Aborted
  1140.  
  1141.  5. TCP Does not Handle Out of Band Data Correctly
  1142.  
  1143.     The scenario is the server sends 10 bytes OOB followed by 100 bytes in
  1144.     band. The client does an in band receive and gets the 100 bytes and then
  1145.     does an OOB recv which blocks and never completes. The OOB data is
  1146.     indicated to Windows Sockets.
  1147.  
  1148.  6. Windows Sockets Does not Support Connect Data, Disconnect Data
  1149.  
  1150.  7. Windows Sockets Should Define Flags/Codes for Message Mode Sockets
  1151.  
  1152.  8. TCP_NODELAY Not Accepted by setsockopt()
  1153.  
  1154.  9. -1 accepted as valid buffer length to gethostname()
  1155.  
  1156. 10. WSAStartup() Returns Incorrect Number as the Maximum Datagram Size
  1157.  
  1158. 11. recvfrom() - from and fromlen Consistency Problem
  1159.  
  1160.     unconnected UDP socket
  1161.     recvfrom (from = $addr, fromlen = NULL)       => succeeds
  1162.     recvfrom (from = $addr, fromlen = ptr to 0)   => succeeds
  1163.     recvfrom (from = $addr, fromlen = ptr to -1)  => succeeds/fills $addr
  1164.     recvfrom (from = $addr, fromlen = ptr to 15)  => fails
  1165.     recvfrom (from = NULL, fromlen =  ptr to 16)  => fails
  1166.  
  1167. 12. UDP sendto() Accepts Invalid Options (MSG_PEEK, MSG_OOB)
  1168.  
  1169. 13. Assert Killing Windows Sockets Application While Getting Connection
  1170.  
  1171.     If a server terminates abnormally (GP fault, etc), with clients still
  1172.     running attempting to connect, an error can occur.
  1173.  
  1174. 14. TCP/IP Uses First DNS to Resolve Host; Ignores Others in List
  1175.  
  1176. 15. CallNamedPipe() Documentation Error
  1177.  
  1178.     When CallNamedPipe() is used by a client, the server transition the pipe
  1179.     from a closed state to a listening state. The client can overrun the
  1180.     server if no delays are between calls.
  1181.  
  1182. ==============================================================================
  1183. Section VIII:  POSIX
  1184.  
  1185.  1. time() Does Not Adjust for Daylight Savings Time Properly
  1186.  
  1187.  2. localtime() Does Not Adjust for Daylight Savings Time Properly
  1188.  
  1189.  3. Calling fclose() on STDIO May Fail.
  1190.  
  1191.  4. Calling abort() Does Not Call raise(), So There is No Signal
  1192.  
  1193.  5. File Opened With fopen( "test.bat", "a" ) Will Hand on fprintf()
  1194.  
  1195.  6. fclose() Incorrectly Returns EISPIPE When There is Not Enough Space to
  1196.     Flush Buffered Data
  1197.  
  1198.  7. fflush() Ought to Fail When File Descriptor Is Closed, But it Does Not
  1199.  
  1200.  8. fputc() Ought to Fail When File Descriptor Is Closed, but it Does Not
  1201.  
  1202.  9. fopen() Creates Files With Incorrect Mode (0644 rather than 0666)
  1203.  
  1204. 10. fopen() Does Not Recognize "b" Mode
  1205.  
  1206. The problem occurs when the mode is "rb+" and the file is a directory.
  1207.  
  1208. 11. gmtime() Returns NULL For Dates Before 1980 (MIPS only)
  1209.  
  1210. 12. printf() Does Not Return EINTR In Cases Where First Character Fails
  1211.  
  1212. 13. remove() Is Not Provided
  1213.  
  1214. 14. asctime() Should Return Days Space Padded, Not Zero Padded
  1215.  
  1216. 15. There are Multiple Bugs in the tzset(), _isindst() Routines
  1217.  
  1218. 16. mktime() May Cause An Exception
  1219.  
  1220. 17. limits.h Should Not Define LINK_MAX nor CHILD_MAX, But it Does
  1221.  
  1222. 18. Apps Attempting to longjump() Out of Signal Handlers Hang (x86 only)
  1223.  
  1224. ==============================================================================
  1225.  
  1226.