Jan 082018
Bug report for HIMEM.SYS, the version shipped with Windows 3.0. Included is a XMS memory tester to reset memory properly. | |||
---|---|---|---|
File Name | File Size | Zip Size | Zip Type |
HIMEM.TXT | 1671 | 785 | deflated |
XMSTEST.EXE | 8544 | 5188 | deflated |
Download File HIMEMBUG.ZIP Here
Contents of the HIMEM.TXT file
I have found three bugs in himem.sys 2.60 that I will outline in this
article. They are (1) himem.sys 2.60 doesn't correctly support the
resize function which will cause it to incorrectly assign handles, (2)
it doesn't correctly preserve the 32-bit AX register which can cause problems
on 386 machines, and (3) the interrupt 15 handler incorrectly assumes
the state of interrupts which can cause conflicts between himem.sys
and the keyboard controller chip. I think that himem.sys does an
iret instead of a far ret. It either incorrectly assumes the
interrupts are always off or on. I think that it assumes that they
are off.
The information below is about the handles bug and the xmstest.exe program.
Note that the first handle is numbered 2848 with himem.sys 2.60 and that
since the handles take 6 bytes of memory that the handle numbers increase
by 6 I.E. 2848, 2854, 2860, .... Use xmstest.exe menu selection 1 to
allocate all of your xms memory. For this example lets say that you have
3456 K of xms like I do. Then use menu selection 5 to resize handle 2848
down to 3436 K. Then use menu selection 1 to allocate the 20 K that you
freeed up by resizing the 3456 K block down to 3436 K. Repeat this procedure
and note that the handle numbers start incrementing by 12 instead of 6 after
the second or third resize. Note that himem.sys will go ahead and use the
handles it skips after it has run out of handles if it doesn't have to do
a resize to use them. Note that the first handle number is only 2848 on
my machine it might very on others. Maybe if enough people are made aware
of these bugs then Microsoft will fix them.
January 8, 2018
Add comments