A RaceCondition is a Synchronisation bug in which the results of some computation or action depend in an unsafe way upon the the actions of other threads or processes. RaceConditions are a particularly challenging when writing any code in the LinuxKernel as it is fully re-entrant or SignalHandlers in applications.
Many security-related RaceConditions have been found where programs would check file properties (such as existence, permissions, and/or ownership) before operating on a file. The obvious implementation of this is a RaceCondition, because these file properties can be changed between the check and operation. File operations should if at all possible be Atomic.
A DeadLock is perfered to a RaceCondition, because with a DeadLock, something is obviously wrong, whereas a RaceCondition can give no indication of a problem until someone notices corrupt data or a security breach.