ramana polamarasetti wrote:
Hi,
Recently we hit a problem with one of our file
systems where 2 kernel threads were killed holding
a kmutex. Due to this all the applications which use
the fs blocked waiting for the kmutex.
I am wondering why there is no synchronization type
equivalent to USYNC_PROCESS_ROBUST (which esse
ntially releases the pthread_mutex if the owner dies)
for kmutex.
I am sure many must have had this kind of problem,
will there be any issue if the mutex held by a
dead thread be released after some time?
kthreads don't die; if a mutex is held forever,
there's a bug.
You need to break out mdb/kmdb and find out who holds
the lock.
Its actually the user thread that got killed but the corresponding kthread held
the mutex for ever.
It sounds like a system call returned with kernel locks held.
Whenever a thread returns to userland from the kernel, all locks
taken in the kernel must be released.
Dave
_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code