Index: /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c	(revision 52552)
+++ /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c	(revision 52553)
@@ -201,5 +201,7 @@
 int _init(void)
 {
+#if 0    /* No IPRT logging before RTR0Init() is done! */
     LogFlowFunc(("vboxdrv:_init\n"));
+#endif
 
     /*
@@ -210,5 +212,5 @@
         pModCtl->mod_loadflags |= MOD_NOAUTOUNLOAD;
     else
-        LogRel(("vboxdrv: failed to disable autounloading!\n"));
+        cmn_err(CE_NOTE, "vboxdrv: failed to disable autounloading!\n");
 
     /*
@@ -300,5 +302,7 @@
 int _info(struct modinfo *pModInfo)
 {
-    LogFlowFunc(("vboxdrv:_info\n"));
+#if 0    /* No IPRT logging before RTR0Init() is done! And yes this is called before _init()!*/
+    LogFlowFunc(("vboxdrv:_init\n"));
+#endif
     int e = mod_info(&g_VBoxDrvSolarisModLinkage, pModInfo);
     return e;
Index: /trunk/src/VBox/Runtime/r0drv/initterm-r0drv.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/initterm-r0drv.cpp	(revision 52552)
+++ /trunk/src/VBox/Runtime/r0drv/initterm-r0drv.cpp	(revision 52553)
@@ -67,5 +67,7 @@
     uint32_t cNewUsers;
     Assert(fReserved == 0);
+#ifndef RT_OS_SOLARIS       /* On Solaris our thread preemption information is only obtained in rtR0InitNative().*/
     RT_ASSERT_PREEMPTIBLE();
+#endif
 
     /*
Index: /trunk/src/VBox/Runtime/r0drv/solaris/dbgkrnlinfo-r0drv-solaris.c
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/solaris/dbgkrnlinfo-r0drv-solaris.c	(revision 52552)
+++ /trunk/src/VBox/Runtime/r0drv/solaris/dbgkrnlinfo-r0drv-solaris.c	(revision 52553)
@@ -139,5 +139,7 @@
     AssertReturn(fFlags == 0, VERR_INVALID_PARAMETER);
     AssertPtrReturn(phKrnlInfo, VERR_INVALID_POINTER);
-    RT_ASSERT_PREEMPTIBLE();
+    /* This can be called as part of IPRT init, in which case we have no thread preempt information yet. */
+    if (g_frtSolInitDone)
+        RT_ASSERT_PREEMPTIBLE();
 
     *phKrnlInfo = NIL_RTDBGKRNLINFO;
@@ -182,5 +184,6 @@
     AssertPtrReturn(pThis, UINT32_MAX);
     AssertMsgReturn(pThis->u32Magic == RTDBGKRNLINFO_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), UINT32_MAX);
-    RT_ASSERT_PREEMPTIBLE();
+    if (g_frtSolInitDone)
+        RT_ASSERT_PREEMPTIBLE();
 
     uint32_t cRefs = ASMAtomicDecU32(&pThis->cRefs);
@@ -204,5 +207,6 @@
     AssertPtrReturn(pszStructure, VERR_INVALID_PARAMETER);
     AssertPtrReturn(poffMember, VERR_INVALID_PARAMETER);
-    RT_ASSERT_PREEMPTIBLE();
+    if (g_frtSolInitDone)
+        RT_ASSERT_PREEMPTIBLE();
 
     int rc = VERR_NOT_FOUND;
@@ -232,5 +236,6 @@
     AssertPtrNullReturn(ppvSymbol, VERR_INVALID_PARAMETER);
     AssertReturn(!pszModule, VERR_MODULE_NOT_FOUND);
-    RT_ASSERT_PREEMPTIBLE();
+    if (g_frtSolInitDone)
+        RT_ASSERT_PREEMPTIBLE();
 
     uintptr_t uValue = kobj_getsymvalue((char *)pszSymbol, 1 /* only kernel */);
