Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


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


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 reaperrar   Members   -  Reputation: 134

Like
0Likes
Like

Posted 26 January 2013 - 08:31 PM

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 */

Edited by reaperrar, 26 January 2013 - 10:49 PM.


Sponsor:

#2 Cornstalks   Crossbones+   -  Reputation: 6991

Like
3Likes
Like

Posted 26 January 2013 - 08:51 PM

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.


[ 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 ]

#3 Servant of the Lord   Crossbones+   -  Reputation: 20384

Like
1Likes
Like

Posted 26 January 2013 - 09:46 PM

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).


It's perfectly fine to abbreviate my username to 'Servant' rather than copy+pasting it all the time.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal

[Fly with me on Twitter] [Google+] [My broken website]

[Need web hosting? I personally like A Small Orange]


#4 reaperrar   Members   -  Reputation: 134

Like
0Likes
Like

Posted 26 January 2013 - 10:49 PM

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.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS