Hello,
I noticed some bug, suuposedly in DosEmu. The problem:
I tried some database program, and it was sometimes hanging.
With some work I found it attempts to open some file, it
fails, and it was repeated. During this, size of memory used
by DosEmu was growing until it filled all available memory
and causes Linux to crash. The open was by INT 21h, AX=3D41h
(write-only deny-none), on normal DOS it succeed, on DosEmu
it failed. I wrote simple TSR which converted the open code
to 3D42h (read/write deny-none), and then the application
signalled error - the file it attempted to open previously
was errlog. I wrote TSR to trace DOS calls (previous error
I diagnosed using dosdebug, it was easy since it was in loop,
just I started dosdebug and asked what the application does)
and found it uses INT 21h AX=3D22, it fails in case other
terminal runs the application using same data - it is OK,
since 3D22 is open read/write deny-write, and the other copy
opens the same file read/write deny-none - accesses conflict,
then the application tries 3D20 (open read-only deny-write),
and it SUCCEEDS (in spite other has write access and write
by others is denied in open function code) - the application
assumes file is non-writable and refuses any modification.
Summary: INT 21h function DosEmu DOS
3d41h Fails OK
3d20h OK Fails when other has write access
I don't know, of course, which program works incorrectly:
DosEmu or Linux filesystem, but at least the second is wrong.
Jerzy Tarasiuk