There are redundant close() calls in:
`winscard_svc.c`MSGCleanupClient()
`winscard_msg_svc.c`SHMProcessEventsContext()
Those are both called by `winscard_svc`ContextThread() when the client dies,
such as when SCardReleaseContext() is called.
The problem is that as soon as the first close() occurs, the fd # is
available to be
re-used immediately by the next accept() or open(), ioctl (I_RECVFD), etc...
If SCardEstablishContext() occurs at a certain time, it gets that fd as
the context
I/O channel. Then the 2nd redundant close() in MSGCleanupClient() comes in
right in behind it and closes the fd, after it has been reincarnated,
putting the daemon, client & apps in a world of hurt.
It may have been nailing users on and off for awhile, but been so rare
and elusive
and hard to nail down that people chalked it up to other layers, or had
to re-start
or re-try things.
It became a significant problem in the Sun Ray development project as we
have scaled things up and hit PCSClite with heavy traffic.
Paul
_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle