Troubleshooting
"thread constructor failed: Resource temporarily unavailable"
The WASM thread pool hit the browser's Web Worker limit. This can happen when loading many avatars rapidly. The ThreadManager queues excess tasks, but if thread creation itself fails, the counter self-corrects. Reduce concurrent avatar loads or increase the browser's worker limit.
"memory access out of bounds" on controller.update()
A controller's native C++ object was freed but JS still holds a reference. Ensure you null controller references after dispose() or unload(). Never call methods on a disposed controller.
Silhouette appears but avatar never loads
Check the browser console for WASM errors. Common causes:
- Missing or expired bearer token (setBearerToken())
- Network errors fetching assets
- Asset definition has invalid asset IDs
Shaders not applying
Ensure mgr.setTarget(mesh) is called before enabling effects. For multi-avatar, make sure you're not calling detachTarget() without reattachTarget().
SharedArrayBuffer not available
Your server must send COOP/COEP headers:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp