Я, к сожалению, не работаю над программой, разработанной мной полностью.
Недавно я заметил фатальную ошибку Visual Studio для оператора - unordered_set, которая была вызвана простой вставкой указателя на unordered_set. Изучив местных жителей, я заметил, что в наборе есть только 2 элемента, последний из которых равен NULL (так что, я полагаю, это то, на чем он упал). Теперь к вопросу: как (теоретически) unordered_set (или любой другой контейнер STL) может получить указатель NULL в качестве одного из своих элементов. Программа многопоточная, но, по моим отзывам, доступ к этой части кода возможен только из одного потока. Спасибо.
Стек вызовов и части исходного кода для тех, кому интересно:
http://privatepaste.com/c8e7f35a4e (PushToProcessed вызывается из самого объекта, он передает ссылку на себя, поэтому не может быть NULL)