Index: /trunk/src/VBox/Runtime/common/dbg/dbgmodcontainer.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/dbg/dbgmodcontainer.cpp	(revision 75481)
+++ /trunk/src/VBox/Runtime/common/dbg/dbgmodcontainer.cpp	(revision 75482)
@@ -29,4 +29,5 @@
 *   Header Files                                                                                                                 *
 *********************************************************************************************************************************/
+#define LOG_GROUP RTLOGGROUP_DBG
 #include <iprt/dbg.h>
 #include "internal/iprt.h"
@@ -34,4 +35,5 @@
 #include <iprt/avl.h>
 #include <iprt/err.h>
+#include <iprt/log.h>
 #include <iprt/mem.h>
 #define RTDBGMODCNT_WITH_MEM_CACHE
@@ -410,4 +412,7 @@
 static void rtDbgModContainer_SymbolReplace(PRTDBGMODCTN pThis, PAVLRUINTPTRTREE pAddrTree, PRTDBGMODCTNSYMBOL pToRemove)
 {
+    RTLogPrintf("rtDbgModContainer_SymbolReplace: pToRemove=%p ordinal=%u %04x:%08RX64 %s\n",
+         pToRemove, pToRemove->OrdinalCore.Key, pToRemove->iSeg, pToRemove->AddrCore.Key, pToRemove->NameCore.pszString);
+
     /* Unlink it. */
     PRTSTRSPACECORE pRemovedName = RTStrSpaceRemove(&pThis->Names, pToRemove->NameCore.pszString);
@@ -426,12 +431,17 @@
     RTMemFree(pToRemove);
 
-    /* Jump the last symbol ordinal to take its place. */
-    PAVLU32NODECORE pLastOrdinal = RTAvlU32Remove(&pThis->SymbolOrdinalTree, pThis->iNextSymbolOrdinal - 1);
-    AssertReturnVoid(pLastOrdinal);
-
-    pThis->iNextSymbolOrdinal -= 1;
-    pLastOrdinal->Key = iOrdinal;
-    bool fInsert = RTAvlU32Insert(&pThis->SymbolOrdinalTree, pLastOrdinal);
-    Assert(fInsert); RT_NOREF_PV(fInsert);
+    /* Jump the last symbol ordinal to take its place, unless pToRemove is the last one. */
+    if (iOrdinal >= pThis->iNextSymbolOrdinal - 1)
+        pThis->iNextSymbolOrdinal -= 1;
+    else
+    {
+        PAVLU32NODECORE pLastOrdinal = RTAvlU32Remove(&pThis->SymbolOrdinalTree, pThis->iNextSymbolOrdinal - 1);
+        AssertReturnVoid(pLastOrdinal);
+
+        pThis->iNextSymbolOrdinal -= 1;
+        pLastOrdinal->Key = iOrdinal;
+        bool fInsert = RTAvlU32Insert(&pThis->SymbolOrdinalTree, pLastOrdinal);
+        Assert(fInsert); RT_NOREF_PV(fInsert);
+    }
 }
 
@@ -494,4 +504,6 @@
                     if (piOrdinal)
                         *piOrdinal = pThis->iNextSymbolOrdinal;
+                    RTLogPrintf("rtDbgModContainer_SymbolAdd: ordinal=%u %04x:%08RX64 LB %#RX64 %s\n",
+                           pThis->iNextSymbolOrdinal, iSeg, off, cb, pSymbol->NameCore.pszString);
                     pThis->iNextSymbolOrdinal++;
                     return rc;
@@ -559,4 +571,6 @@
                                 *piOrdinal = pThis->iNextSymbolOrdinal;
                             pThis->iNextSymbolOrdinal++;
+                            RTLogPrintf("rtDbgModContainer_SymbolAdd: ordinal=%u %04x:%08RX64 LB %#RX64 %s [replace codepath]\n",
+                                   pThis->iNextSymbolOrdinal, iSeg, off, cb, pSymbol->NameCore.pszString);
                             return rc;
                         }
