It appears to get upset whilst traversing a linked list, where it comes across an unititialised pointer.

Code:
        // MEMBER FUNCTIONS FOR _Container_base12
inline void _Container_base12::_Orphan_all()
    {    // orphan all iterators
 #if _ITERATOR_DEBUG_LEVEL == 2
    if (_Myproxy != 0)
        {    // proxy allocated, drain it
        _Lockit _Lock(_LOCK_DEBUG);

        for (_Iterator_base12 **_Pnext = &_Myproxy->_Myfirstiter;
            *_Pnext != 0; *_Pnext = (*_Pnext)->_Mynextiter)
            (*_Pnext)->_Myproxy = 0;
        _Myproxy->_Myfirstiter = 0; <<<< Here
        }
 #endif /* _ITERATOR_DEBUG_LEVEL == 2 */
    }
In this case, the allocator has been applied to a std::vector. The exception occurs when calling 'reserve'.

Code:
vector<int, ArrayAllocator<int, 10>> test;

int main()
{
    test.reserve(2);
}
I'll give allocator_traits a look.