For a bit of background you might want to read
ATmega328 with Optiboot not compatible with Arduino?
But I will summarize anyway. I have some Atmega328 chips that shipped with the optiboot bootloader burnt onto them that appeared corrupted, To get the chips to work I purchased and used a USBASP and re-burnt the bootloader. The process works OK and the chips reboot and run the blinky sketch without issue but when I pull the reset pin to ground the chip does not appear to reset and run the Arduino loader. While the reset pin is held to ground the sketch will stop running and when released the blinky sketch will start without delay.
If connecting the Reset pin to DTR of my USB-TTL the sketch will stop running when trying to upload a sketch via the Arduino IDE then fail the upload with a not connected error. Using the USBASP I can re-burn the bootloader and it appears to reset correctly
The reset worked before reburning the boot loader, The reset circuits I use work on the atmega168 chips I have.
For the bootloaders I have tried flashing chip to use the internal clock http://arduino.cc/en/Tutorial/ArduinoToBreadboard and as a lilypad and duemilanove but the reset pin still does not appear to work correctly.
I have also used the software that came with the USPASP and read the Fuse&lock bits and the High/Low fuses look ok, not sure about the extended and lock bits.
Chip reads; Low= E2, High= DA, Ext= FD, Lock=CF
board.txt reads;
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F