Which is the right way to start a one-shot timer?

I don’t know about intended behavior, but it is explainable behavior that xTimerStartFromIsr() and xTimerResetFromIsr() behave as you observed in tickless idle.

The forum has a couple of different threads that explain. Here is a good one where I managed to save all of humanity: