One of the primary job responsibilities of the Scrum Master is to remove impediments. Working at several different places, I have yet to grasp what kind of impediments they are supposed to be removing. Here are the typical impediments I see most developers having:
Technical (I can't figure out how to write this, this isn't working as I expect, what's the best way to do this, etc). This seems to be the most frequent and common impediment that developers run into. Scrum Masters are generally non-technical, so they can almost never address these problems. The best they can typically do is ask the question "Who can help you with this?" and then make sure that you are following up with them.
Team-Member (my teammate isn't working well with me, my teammate is writing bad code, etc). Since a separate management chain usually exists, most developers will often bring up these concerns to their manager instead of a scrum master.
Other Teams (the other team I need something from isn't getting back to me, etc). Like #2, since a separate management chain usually exists, a scrum master typically doesn't have any real management authority or political influence. The best they can do is typically act as an additional person to bug the other team. When working with another team is really impacted, I generally see management escalations being the most common (and most direct) way to solve the problem.
So what other impediments are they supposed to be removing?