This is a complex error! You may want to open an SR on metalink:http://metalink.oracle.com
It's a semaphore (mutex) issue, an exclusive lock . . .
Check out V$MUTEX_SLEEP and V$MUTEX_SLEEP_HISTORY for more details . . .
The Oracle docs note:
cursor: pin S wait on X
A session waits for this event when it is requesting a shared mutex pin and another session is holding an exclusive mutex pin on the same cursor object.
Wait Time: Microseconds
P1 Hash value of cursor
P2 Mutex value (top 2 bytes contains SID holding mutex in exclusive mode, and bottom two bytes usually hold the value 0)
P3 Mutex where (an internal code locator) OR'd with Mutex Sleeps