This issue is documented in Cisco bug ID CSCeb72009.
It is seen that when IP phones are upgraded to Cisco CallManager version 3.3(3) they randomly reset. This may happen due to phones operating in LAN with lot of broadcast or multicast traffic. Under heavy broadcast or multicast traffic, the phone's interrupt stack can grow more than 64 bytes to 128 bytes.
The main problem behind IP phones getting reset is that the Interrupt Request (IRQ) stack overflows in the phone. The fix below is an increase of the IRQ stack size to 128 to prevent the stack from overflowing. The problem is that the IRQ buffer is not large enough, and can overflow causing the phone to go dead. By increasing its size, the overflow is prevented from stepping on another part of the phone's memory space and the phone does not go dead.
To resolve the resetting issue, upgrade the Cisco IP Phone load to P00305000200.bin and P00405000200.bin from the Software Download page.
Use this procedure to download a new Cisco IP phone load into the Cisco IP phone:
Copy P00303020300.bin to the C:\Program Files\Cisco\TFTPPath directory on the TFTP server.
Open the Cisco CallManager Administration page and enter the username and password.
Select System > Device Defaults.
Change the default load of the device in question to P00305000200.
Reset the devices in question so they get the new load.