This is boggling me as well as most of the time the application works, but every now and then I find this error occurs leading to a unusable openSL engine, but I only noted this on Android 2.3.
The SL_RESULT_RESOURCE_ERROR can be thrown by a varitude of reasons, for instance a pthread error, out-of-memory etc. But these would return appropriate error codes.
It's more likely it boils down to application architecture, are there multiple bits of code that create an engine object or is there just one entry point ? You can't actually retrieve active engine objects from OpenSL, so you must store all pointers/references to the engine objects you pass to the slCreateEngine-method. It might be a good idea to check their status (and close engines) prior to running the create engine method, as it is possible that it is firing multiple times (for instance, your Activity's onCreate / onPause / onResume-methods might by triggering a new creation).