È responsabilità dell'utente in un'applicazione multithread serializzare l'accesso ai descrittori di file. In tutti i processi puoi usare flock(2)
syscall per sincronizzare l'accesso allo stesso file.
Il kernel non andrà in crash se accedi allo stesso file da due processi/thread diversi, ma potrebbe sovrascrivere o corrompere la posizione del file e i dati del file in un modo indefinito.
Linux non utilizza alcun meccanismo di blocco per proteggere la scrittura multithread su un file.
Devi usare il tuo mutex per proteggere il tuo file.