ID:1937666
 
(See the best response by Lummox JR.)
Code:
obj
Crossed()
world << length(players)

This results in 0 no matter how many things get added.

Yet..
mob
verb
check()
world << length(players)

Will result in the amount of things that were added to the list.
Is this a bug?

This is literally all the code involved... Aside from the code that adds the objects into the list.

One possibility is that you have multiple players lists. It's hard to say without seeing the full code.
Best response
Yeah, I'd have to say it seems like either /obj, /atom/movable, /atom, or /datum has a players list defined. That would take precedence over the global one.

You'll want to be sure also that the non-global list is /tmp. If you have actual mobs in that list, this is a tremendously easy way to accidentally save other people's mobs in a savefile, and you'll soon start running across the dreaded "rollback" issue.
oh my, the terrible days when that happen xD
Oh, yup that was the problem. Thank you!