slog problem

There seems to be a minor problem in slogsend(), the internal workhorse
of the slog family. When MsgSendv() fails with ENOSYS (as it always
does on the first call) or EBADF (as it does if slogger has gone away),
slogsend calls open("/dev/slog", …) without closing _slogfd, resulting
in the use of another file descriptor. If you slay and restart slogger,
you’ll notice that all the apps that use it have one open file
descriptor for slogger, and another for the pid that used to be
slogger. This same problem manifests itself in a slightly different
manner if several threads in an app make their first call to slogf() at
approximately the same time: all of the calls to MsgSendv() fail with
ENOSYS, and each thread calls open() without first closing _slogfd,
resulting in multiple open file descriptors.

Murf

John A. Murphy <murf@perftech.com> wrote:

There seems to be a minor problem in slogsend(), the internal workhorse
of the slog family. When MsgSendv() fails with ENOSYS (as it always
does on the first call) or EBADF (as it does if slogger has gone away),
slogsend calls open("/dev/slog", …) without closing _slogfd, resulting
in the use of another file descriptor.

Thanks, it’ll be fixed in 6.3.0.


Brian Stecher (bstecher@qnx.com) QNX Software Systems, Ltd.
phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr.
+1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M 1W8