Hi LI
What is the actual document status of the PurchReq? I'm assuming for now that the workflow batch job is running successfully as the new Instance gets kicked off only once the original is fully cancelled by the batch process. It sounds like there is a bug in your system, possibly caused by a customisation.
You can check the following
1. No customizations exist on the PurchReqWFTypeEventHandler (class) - Canceled (Method) - This is responsible for initiating a new workflow instance.
2. No customizations exist on the PurchReqWorkflow (Class) - reSubmitPurchReqTable (Method) - This is responsible for marking that the new workflow instance should be kicked off