Attention those vendors who are shipping kernels with older versions of perfmon2. (SiCortex, Cray, Bull, IBM, Broadcom, etc..)
There is a significant bug in perfmon_file.c in __pfm_close() that can result in a recursive spinlock. The problem was that __pfm_fasync() was being called inside of a spin_lock_irqsave(), which could renable interrupts. The bug would manifest itself via a spinlock recursion when using multiplexing and a process was forced to exit with a Control-C. It's pretty hard to force it to happen with pfm_close() directly. The recursion happened when you got a timer interrupt which put you into pfm_handle_switch_timeout just as the exit path was happening... You can't make this happen with pfmon because third party monitoring has a slightly different control flow. It only has shown up with multiplexing and first person monitoring. So look at your __pfm_close(). If you see this: if (filp->f_flags & FASYNC) __pfm_fasync (-1, filp, ctx, 0); spin_lock_irqsave(&ctx->lock, flags); Then you are ok. If it's in the other order, you are vulnerable to the bug and should update. Thanks to Peter Watkins at SiCortex for tracking down the fix to this. Phil ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel