Unable to to self-deactivate plugin using deactivate_plugins()

Activation hook is fired while the plugin is being activated, at best it is a dangerous assumption to make that at that point it is already active, and if it is not active, obviously you can not deactivate it.

If you are looking for a way to fail the activation, the best way is probably to die()