This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
Device driver incompatible with Cygwin
- To: <cygwin at cygwin dot com>
- Subject: Device driver incompatible with Cygwin
- From: "Barubary" <barubary at home dot com>
- Date: Wed, 23 May 2001 15:35:00 -0700
My strange problems involving fork() and Win2000 have been found. It is
actually caused by the presence of a device driver I wrote called totalio.
Totalio is a driver which grants direct access to x86 I/O ports to user mode
programs. It is different from other such drivers in that it only grants
access to *specific* I/O ports (PSX comm link / dreamcast serial card).
Thus, it does not compromise system security, for access to these ports is
harmless. How it does this is by setting a "create process" hook in kernel
mode which sets the new process's I/O access bitmap.
I believe that the problem is in the undocumented NTOSKRNL function
Ke386IoSetAccessProcess. I think a memory leak is occurring. Cygwin isn't
doing anything that would cause this specifically - it just creates
processes far more often than normal Windows programs would. Running make
on GCC creates thousands of processes, which could easily exhaust the
non-paged pool if there is a memory leak in Ke386IoSetAccessProcess where
the memory isn't freed when a process terminates.
I think this is a bug in Win2000, but since the function is undocumented, I
doubt Microsoft would do anything to fix it. Any ideas?
-- Barubary
--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple