diff --git a/dlls/ole32/tests/marshal.c b/dlls/ole32/tests/marshal.c
index a1be2c3152699570bc640fa31f67f736619e394c..24f926856149f704c4cd74fe50fdf12fe65c9c0d 100644
--- a/dlls/ole32/tests/marshal.c
+++ b/dlls/ole32/tests/marshal.c
@@ -26,6 +26,7 @@
 #include "windef.h"
 #include "winbase.h"
 #include "objbase.h"
+#include "shlguid.h"
 
 #include "wine/test.h"
 
@@ -59,6 +60,26 @@ static void test_CoGetPSClsid(void)
 	   hr);
 }
 
+static void test_cocreateinstance_proxy(void)
+{
+    IUnknown *pProxy;
+    IMultiQI *pMQI;
+    HRESULT hr;
+
+    pCoInitializeEx(NULL, COINIT_MULTITHREADED);
+
+    hr = CoCreateInstance(&CLSID_ShellDesktop, NULL, CLSCTX_INPROC, &IID_IUnknown, (void **)&pProxy);
+    ok_ole_success(hr, CoCreateInstance);
+    hr = IUnknown_QueryInterface(pProxy, &IID_IMultiQI, (void **)&pMQI);
+    todo_wine
+    ok(hr == S_OK, "created object is not a proxy, so was created in the wrong apartment\n");
+    if (hr == S_OK)
+        IMultiQI_Release(pMQI);
+    IUnknown_Release(pProxy);
+
+    CoUninitialize();
+}
+
 static const LARGE_INTEGER ullZero;
 static LONG cLocks;
 
@@ -2214,6 +2235,8 @@ START_TEST(marshal)
     wndclass.lpszClassName = "WineCOMTest";
     RegisterClass(&wndclass);
 
+    test_cocreateinstance_proxy();
+
     pCoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
 
     /* FIXME: test CoCreateInstanceEx */