[Resolved] std::list clear() - Unhandled Exception

Started by
2 comments, last by reaperrar 11 years, 2 months ago

What are some common causes for unhandled exceptions from a std::list's Clear() call? Given...

*The list does not contain pointers, the resource is never released manually e.g std::list<int>

*It breaks here (inside list)


 #if _ITERATOR_DEBUG_LEVEL == 2
	void _Orphan_ptr(_Myt& _Cont, _Nodeptr _Ptr) const
		{	// orphan iterators with specified node pointers
		_Lockit _Lock(_LOCK_DEBUG);
		const_iterator **_Pnext = (const_iterator **)_Cont._Getpfirst();
		if (_Pnext != 0)
			while (*_Pnext != 0)
				if ((*_Pnext)->_Ptr == this->_Myhead
					|| _Ptr != 0 && (*_Pnext)->_Ptr != _Ptr) //!!BREAKS HERE - On second pass through loop (while (*_Pnext != 0)) )
					_Pnext = (const_iterator **)(*_Pnext)->_Getpnext();
				else
					{	// orphan the iterator
					(*_Pnext)->_Clrcont();
					*_Pnext = *(const_iterator **)(*_Pnext)->_Getpnext();
					}
		}
 #endif /* _ITERATOR_DEBUG_LEVEL == 2 */
Advertisement

Invoking undefined behavior earlier in the program?

Without seeing your own code, it's hard to say. std::list<int>::clear() should only crash if you've already ruined your program's state. You're likely doing something earlier in your program that is corrupting your memory. Perhaps accessing invalid or deleted memory, or double deleting something.

[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]

Usually the first thing I try when I get an "impossible" crash is to Rebuild Entire Project (takes my project only 5-10 minutes, so it's not as bad as some other projects with multi-hour build times). The reason? I can't count the number of times that a change made to some part of the project somehow affected other unrelated parts of the project simply because the generated object files somehow didn't properly line up. No, it (surprisingly) wasn't a mistake on my end, no there wasn't corrupt memory, and no the two portions of the project weren't even aware of each others' existence.

Once a proper Rebuild Entire Project completes, if something is still going wrong, even if it seems "impossible", then it's obviously my fault - that's when I start really cracking down with the debugger. (Though obviously I am using the debugger before calling something 'impossible' and doing the complete rebuild, but at this point I start checking everything that seems evenly remotely related to the problem area).

Ty for the help. The problem was in fact somewhere unrelated though not too far fortunately. Stopped looking at the list itself though thx to your replies.

This topic is closed to new replies.

Advertisement