I am not surprised the bullet freezes if you put an extra "if" in the Fire behavior. It appears that the value of the direction attribute is never getting set.
Your fix in Edit2 sounds like the right thing to do; it's hard to say why the value of "direction" is not getting set. One thing I think you should do is to give the direction attribute an initial value. Do this in the "when created" block in the Fire behavior. Set direction to whatever the starting direction the player is in. I doubt this will fix your problem, but at least it will let you control which way the bullet goes, so it won't just freeze.
If you still can't get it to work, the next thing I would do is check the console to see what's going on. If you hit ~ in the flash player, the console messages will appear. If there is an error about a null reference, something is going wrong with your behaviors and we'll have to figure out where the problem is. You can also print the value of the direction attribute to the console using the "print" block. It's under Debug under Flow.
Edit: Actually, looking at your screenshot, it looks like your "direction" attribute is in the 4-way movement behavior, but you're trying to use it as if it's in the Fire behavior. Make sure you have a "direction" attribute in the Fire behavior.