O comando w
usa uma heurística para decidir qual processo será exibido como o processo atual. A página man do Linux não explica como isso funciona, mas no meu sistema OS X diz:
The notion of the "current process" is muddy. The current algorithm is "the highest numbered process on the terminal that is not ignoring interrupts, or, if there is none, the highest numbered process on the terminal". This fails, for example, in critical sections of programs like the shell and editor, or when faulty programs running in the background fork and fail to ignore interrupts. (In cases where no process can be found, w prints
-
.)
Os modos de falha descritos ali podem explicar o comportamento inconsistente que você vê.