wailsapp/wails · error
CoInitializeEx failed with E_UNEXPECTED
Error message
CoInitializeEx failed with E_UNEXPECTED
What it means
Error "CoInitializeEx failed with E_UNEXPECTED" thrown in wailsapp/wails.
Source
Thrown at v3/pkg/w32/ole32.go:40
procCoUninitialize = modole32.NewProc("CoUninitialize")
procCoCreateInstance = modole32.NewProc("CoCreateInstance")
procCreateStreamOnHGlobal = modole32.NewProc("CreateStreamOnHGlobal")
procRegisterDragDrop = modole32.NewProc("RegisterDragDrop")
procRevokeDragDrop = modole32.NewProc("RevokeDragDrop")
)
func CoInitializeEx(coInit uintptr) HRESULT {
ret, _, _ := procCoInitializeEx.Call(
0,
coInit)
switch uint32(ret) {
case E_INVALIDARG:
panic("CoInitializeEx failed with E_INVALIDARG")
case E_OUTOFMEMORY:
panic("CoInitializeEx failed with E_OUTOFMEMORY")
case E_UNEXPECTED:
panic("CoInitializeEx failed with E_UNEXPECTED")
}
return HRESULT(ret)
}
func CoInitialize() {
procCoInitialize.Call(0)
}
func CoUninitialize() {
procCoUninitialize.Call()
}
func CoCreateInstance(clsid *syscall.GUID, dwClsContext uintptr, riid *syscall.GUID, ppv uintptr) HRESULT {
ret, _, _ := procCoCreateInstance.Call(
uintptr(unsafe.Pointer(clsid)),
0,
uintptr(dwClsContext),View on GitHub (pinned to 0e754b1b40)
Solutions
- Treat E_UNEXPECTED from CoInitializeEx as a fatal, non-recoverable initialization error; check for mismatched CoUninitialize calls or a corrupted COM state on the thread.
- Ensure CoInitializeEx is called on the same thread that will use COM and is paired with CoUninitialize when done.
When it happens
Trigger: Occurs when CoInitializeEx returns E_UNEXPECTED, indicating a catastrophic COM failure during initialization.
Common situations: See trigger scenarios.
AI-assisted analysis of wailsapp/wails@0e754b1b40 (2026-08-15).
Data as JSON: /api/errors/38c55d03a28533a5.
Report an issue: GitHub.