Stateful singletons are much more difficult to unit test.
I use stateless singletons which I don't see a problem with.
Since singletons can implement interfaces, they can be passed using dependency injection (and should be passed as such where possible)