Raintung is correct. In fact, deleteInstanceDir seems to be completely broken unless you specify an absolute dir.
Here's a reworked patch because it seems like the trap here (CoreContainer.getInstanceDir()) is just laying in wait for the unwary. I've added a new method getRawInstanceDir and refactored the uses of getInstanceDir to use the right one. I wouldn't dare return the new getInstanceDir to, say, the snapshooter code, and the code that writes solr.xml back out would also be broken if it used the (new) getInstanceDir().
If there are no objections, I'll commit this tomorrow.
Thanks Raintung! Your patch provided me a much easier time tackling this!