PWM channels motor control question

Hi everybody... I've been working recently on making an H-Bridge that is able to drive a dc motor that works on 12 volts and has 3.3 amperes as a stall current. I designed the PCB of the H bridge circuit and I implemented it successfully. However, there is one severe problem: when it works for a while, it overheats!

The strange thing is that if i operate the dc motor and try to get the motor to stall manually (so it sucks a lot of current) the h bridge works normally and it does''t over heat (it is made of mosfets that can withstand high values of current, much higher than the motors stall current), but when i put the h bridge in my robot and start to move the robot back and forth, the mosfets on the h bridge overheat quickly without any obvious reason.

I thought about it and i made a guess about the reason and i am not sure if it is right. The PCB i designed needs two PWM signal inputs from the arduino, say channel 5 and 6, so when the motor rotates clock wise, channel 5 for example carries the required PWM signal and 6 is set to analogWrite(0), and when it rotates counter clockwise, the exact opposite is done. I guessed that may be these two channels work on different frequencies and this may be the reason that the mosfets overheat when i change the directions and start moving the robot back and forth.

One final question. I noticed that whenever i give the h bridge the order to stop, the motors stop abruptly, with no inertia i mean. Is this a bad thing? i mean may this be a reason for the mosfets to overheat?

Thank you in advance.