Actually reviewing my notes, we went straight to 5.1.2, so I never did verify it was fixed in 4.3.4. I seem to remember this problem being limited to Trident cards only. Is that what you are using?
I have a case from April that had a similar behavior. 4.3.4 and 5.1.2 solved it for us. The 3 ddts's on my case are CSCuo36365,CSCui95200,CSCui53902. The workaround was static mac entries.
Make sure your config register isn't set to ignore the config on boot up (such as if you were doing a password recover). 0x102 should work for you. "show version" will display the config register, and you can change it with...conf t config-reg 0x10...