I didn't hit your specific error, but it would have been hard to tell if I had based on your description. In the future, you should post your stack trace with line exceptions.
What I did find was that you had an infinite loop in your code. This part:
while True:
next2 = raw_input("> ")
if next2 == "take honey":
# snip
Never would have exited. True will always be True, so it just keeps prompting you with the raw_input. By changing the rest of that function to look like this...
while True:
next2 = raw_input("> ")
if next2 == "take honey":
dead("The bear looks at you then pimp slaps your face off.")
elif next2 == "taunt bear" and not bear_moved:
print "The bear has moved from the door. You can go through it now."
bear_moved = True
elif next2 == "taunt bear" and bear_moved:
dead("The bear gets pissed off and chews your crotch off.")
elif next2 == "open door" and bear_moved:
gold_room()
else:
print "I got no idea what that means."
...we are telling Python to take the results of the prompt stored in next2 and evaluate the rest of the checks. This way, it will exit the function by calling other functions such as dead(), or gold_room(). This will exit the bear_room() function even though the while True condition has never exited. While loops are exited when the condition evaluates to False. Because True will never equal False, we have to exit some other way, such as calling another function like dead() which will terminate by calling exit().