As a quick test, I made pthread_cond_wait call to pthread_sem_take with the last argument to true (which then use the interruptible version) and it now cancels the wait. So it would seem that this is a bug right?nxsem_wait_uninterruptible() should have no effect on thread cancellation (i.e., it should still return ECANCELED). This only effects signal interrupts (EINTR).
So at this superficial level of analysis, nxsem_wait_uninterruptible() should be correct. There is something else going on.