At 06:20 PM 7/18/2006 +0200, you wrote: >There is a bug left in the FD-Himem.exe memory manager.
Nope. But see further... >When a program that had allocated several XMS blocks doesn't release these >blocks in the order FD-Himem likes it, it will report a too small "largest >free block". Luckily the memory is not "permanently" lost, FD-Himem is >able to >regenerate if certain conditions are met. > >This is a snapshot of the FD-XMS handle table after DOOM was launched and >terminated: > >---------------------------------------------------------------------- >XMS version: 0300h >XMS3+ largest free block (kB): 702036 <-------- BAD No, "GOOD". Or, actually, "CORRECT", but not terribly "GOOD". Is there a "BARELY COMPETENT" choice? Again, we have a situation where there is a bug label for what is merely suboptimal behavior. Besides suboptimal, programmers also refer to this type of code as "dumb", "idiotic", and "so bad my 90-year-old blind grandmother could code it better by typing with a pencil clenched between her butt cheeks". (That would be a number 2 pencil, naturally). Wow, two butt reference e-mails in a row. I must be anal. Okay, I'm having way too much fun with that, time to move on. What is happening is that the handles are associated with memory that is fragmented into separate chunks. To the best of my knowledge, under FreeDOS a memory report does not force blocks to coalesce, so FreeDOS is correctly reporting the largest (allocatable) block. In its defense, I believe that contiguous XMS blocks will be merged on allocation if there is insufficient memory contained in a single block, although I might be remembering that wrong. In other words, if my memory is correct, block merges are done on allocation, but not on release or reports. You could argue that FreeDOS HIMEM should be more intelligent about coalescing contiguous blocks on memory reports. And you would be right. It should. That particular code function is hardly the smartest memory management in the DOS world. That title would be reserved for how EMM386 shares XMS memory with EMS and VCPI (well, maybe not, but it IS pretty damn smart there). Suboptimal behavior which acts in a well-defined manner, however rude that manner may be, does not rise to the level of a "bug". Should I "fix" it? Yup. Should I fix it before FreeDOS 1.0 is released? I'm not convinced it's time to go in and start ripping around the code with less than two weeks to go. Particularly since the actual benefits for almost everyone using FreeDOS would be nonexistent. Later tonight as time presents itself, I'll look at the actual offending code and see what would be involved in upgrading HIMEM's IQ points in that area without any possibility of my introducing potential nasty bugs at the last minute. Uhh, not me introducing bugs, I mean that Sith Lord. But to be honest, there's a good chance this one won't make the FreeDOS 1.0 cut. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Freedos-user mailing list Freedos-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-user