We have some perfectly good explanations for why the dinosaurs suddenly vanished 65 million years ago, and indeed that's kind of the problem — there are too many explanations for the dinosaur extinction, assuming there was only one extinction event.
A giant impact is the most famous explanation for the K-T extinction event, so named because it happened at the boundary of the Cretaceous (K) and Tertiary (T) periods (although the use of the term "tertiary" is actually discouraged these days). We even know where the massive asteroid made landfall, as Mexico's Chixculub crater is precisely the right age and size to be the main culprit in wiping out the dinosaurs. Such an impact would have devastated global ecosystems, kicking up massive amounts of dust and debris that would have effectively choked the dinosaurs to death beneath the shroud.
But that isn't the only available explanation - and I say "available" instead of "possible" because both of these scenarios are fairly well-substantiated. About 100,000 years before the asteroid hit Chixculub, ancient India was rocked by a series of devastating volcanic eruptions that could also have kicked off cataclysmic climate change. Such eruptions could easily have driven a good chunk of dinosaur species extinct, but proving that the volcanoes were actually a key cause is difficult because there simply isn't enough precision in the fossil record to say for sure that it was a factor.
We might now have the evidence to say for sure. A research team from the University of Washington led by Thomas Tobin has discovered sedimentary rocks at remote Seymour Island just off the coast of Antarctica. The rocks tell the clearest story yet of what happened 65 million years ago, and it appears the volcanoes and the asteroid each took care of wiping out different parts of the biosphere. New Scientist has the report:
Tobin found two layers in the rocks, which formed in a shallow sea, where several species of shelled animals went extinct. One of the layers dates to the time of the impact, but the other layer is 40 metres below. Dating showed that the lower extinction occurred some 150,000 years before the meteorite hit – at the peak of the Indian eruptions. Tobin's team looked at isotopic ratios in the rock to work out the temperatures at the time: the first extinction followed a 7 °C rise in polar ocean temperatures – probably a result of global warming triggered by the Indian volcanism. Comparable numbers of species in the region went extinct in each event. Surprisingly, though, the types of animals affected differed strikingly.
It seems that the volcanoes triggered a process that, after a brief burst of increased biological activity, actually depleted the ocean depths of oxygen. This caused a mass extinction of the species deeper down, but those closer to the surface lived on until Chixculub. This is the clearest evidence yet that the K-T extinction event — which, it should be pointed out, wiped out more than just the dinosaurs — was in fact two separate events, and it's likely that some dinosaur species perished in the first wave, particularly those in the regions around India, while the rest died out in the wake of the asteroid impact. For more on this story, check out New Scientist.