This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Device driver incompatible with Cygwin


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]