I came across this while implementing pause functionality into a game. I store looping audio sources in a weak table in order to pause or resume those sounds when the user hits the pause button. Some audio sources had already been garbage collected, yet while looping over the weak table I could access those (invalid) objects, causing segmentation faults.
To be sure I printed the address of the source in its destructor as well as its pause method. and they matched.