It is strange. I should print the error stack info.
From your pasted log, it seems that the thread, may be rendering thread or UI thread, is blocked by the spin lock.
If the process is terminated all the memory hold by the process is freed. Therefore no memory leak does occur if you don’t call SimpleAudioEngine::end() when you app will quit.
The problem may be resources like file descriptors that could leak. Another thing that may need explicit cleanup are audio resources held by the audio engine (like audio tracks). But I don’t know what is held by the audio engine at that time.
If you don’t have any audio problems after several restarts of your app (say 30-60 starts, without restarting the device) you are probably fine.
The freeze has been solved and nothing appear in the logcat, I only use the end() method before exit the game, so the initData() call I think is unnecessary. There is some possible danger if I remove this line using the method only before exit?