My solution:
Boot into XP from my internal disk. Open VMware and create a virtual machine using the whole usb stick as its hard disk. The usb stick boots successfully in VMware because it is recognized as a HD rather than a usb stick in the virtual environment. Then update ubuntu. The bug's fixed by updating and the usb stick can boot a real machine now.
This only happens on a usb stick.
My solution:
Boot into XP from my internal disk. Open VMware and create a virtual machine using the whole usb stick as its hard disk. The usb stick boots successfully in VMware because it is recognized as a HD rather than a usb stick in the virtual environment. Then update ubuntu. The bug's fixed by updating and the usb stick can boot a real machine now.