diff --git a/plugins/org.eclipse.mat.dtfj/src/org/eclipse/mat/dtfj/DTFJIndexBuilder.java b/plugins/org.eclipse.mat.dtfj/src/org/eclipse/mat/dtfj/DTFJIndexBuilder.java
index 9d693f2..e988be8 100644
--- a/plugins/org.eclipse.mat.dtfj/src/org/eclipse/mat/dtfj/DTFJIndexBuilder.java
+++ b/plugins/org.eclipse.mat.dtfj/src/org/eclipse/mat/dtfj/DTFJIndexBuilder.java
@@ -6918,6 +6918,19 @@
                                 Messages.DTFJIndexBuilder_UnableToFindClassLoader, name, format(claddr)), null);
             }
             loader = getLoaderAddress(load, bootLoaderAddress);
+            
+            int loaderId = indexToAddress.reverse(loader);
+            
+            if (loaderId < 0)
+            {
+                // If we can't find the loader ID, then we'll run into issues later
+                // in GarbageCleaner (see bug 464199), so we'll just raise an error
+                // and set the classloader to the bootloader.
+                listener.sendUserMessage(Severity.ERROR, MessageFormat.format(
+                                Messages.DTFJIndexBuilder_ClassLoaderAtAddressNotFound, format(loader), loaderId,
+                                format(claddr), indexToAddress.reverse(claddr), name), null);
+                loader = fixBootLoaderAddress(bootLoaderAddress, bootLoaderAddress);
+            }
         }
         catch (CorruptDataException e)
         {
diff --git a/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/Messages.java b/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/Messages.java
index 23ee997..4226ba7 100644
--- a/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/Messages.java
+++ b/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/Messages.java
@@ -123,6 +123,8 @@
 	public static String OQLParser_Encountered_X_at_line_X_column_X_Was_expecting_one_of_X;
 	public static String OQLParser_Missing_return_statement_in_function;
 	
+	public static String ThreadStackHelper_InvalidThread;
+	
     static
     {
         // initialize resource bundle
diff --git a/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/ThreadStackHelper.java b/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/ThreadStackHelper.java
index 42116a1..ce96844 100644
--- a/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/ThreadStackHelper.java
+++ b/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/ThreadStackHelper.java
@@ -18,15 +18,18 @@
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.logging.Logger;
 
 import org.eclipse.mat.SnapshotException;
 import org.eclipse.mat.collect.ArrayInt;
 import org.eclipse.mat.collect.HashMapIntObject;
 import org.eclipse.mat.snapshot.ISnapshot;
 import org.eclipse.mat.snapshot.model.IThreadStack;
+import org.eclipse.mat.util.MessageUtil;
 
 /* package */class ThreadStackHelper
 {
+    private static final Logger logger = Logger.getLogger(ThreadStackHelper.class.getCanonicalName());
 
     /* package */static HashMapIntObject<IThreadStack> loadThreadsData(ISnapshot snapshot) throws SnapshotException
     {
@@ -83,9 +86,19 @@
 
                     if (threadAddress != -1)
                     {
-                        int threadId = snapshot.mapAddressToId(threadAddress);
-                        IThreadStack stack = new ThreadStackImpl(threadId, buildFrames(lines, line2locals));
-                        threadId2stack.put(threadId, stack);
+                        try
+                        {
+                            int threadId = snapshot.mapAddressToId(threadAddress);
+                            IThreadStack stack = new ThreadStackImpl(threadId, buildFrames(lines, line2locals));
+                            threadId2stack.put(threadId, stack);
+                        }
+                        catch (SnapshotException se)
+                        {
+                            // See
+                            // https://bugs.eclipse.org/bugs/show_bug.cgi?id=520908
+                            logger.severe(MessageUtil.format(Messages.ThreadStackHelper_InvalidThread,
+                                            "0x" + Long.toHexString(threadAddress), se.getLocalizedMessage())); //$NON-NLS-1$
+                        }
                     }
                 }
 
diff --git a/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/messages.properties b/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/messages.properties
index 904514b..9ef08a2 100644
--- a/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/messages.properties
+++ b/plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/internal/messages.properties
@@ -117,3 +117,4 @@
 OQLParser_Encountered_X_at_line_X_column_X_Was_expecting_one_of_X=Encountered "{0}" at line {1}, column {2}.\nWas expecting one of: {3}
 OQLParser_Missing_return_statement_in_function=Missing return statement in function
 
+ThreadStackHelper_InvalidThread=Invalid thread {0}: {1}
\ No newline at end of file
