GNOME Bugzilla – Bug 348447
Crashes when fetching headers
Last modified: 2006-07-26 04:40:28 UTC
When Pan fetches headers in a large group, it crashes after a while. Backtrace: Program received signal SIGSEGV, Segmentation fault. std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find (this=0x2c1d8b0, __k=@0x22f2f0) at quark.h:141 (gdb) bt #0 std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find (this=0x2c1d8b0, __k=@0x22f2f0) at quark.h:141
+ Trace 69546
Also, insight shows this: quark.h std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&) - 0x5c69e0 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)>: push %ebp - 0x5c69e1 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+1>: mov %esp,%ebp - 0x5c69e3 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+3>: push %esi - 0x5c69e4 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+4>: push %ebx - 0x5c69e5 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+5>: mov 0x8(%ebp),%esi - 0x5c69e8 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+8>: mov 0xc(%ebp),%ebx - 0x5c69eb <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+11>: mov 0x8(%esi),%edx - 0x5c69ee <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+14>: lea 0x4(%esi),%ecx - 0x5c69f1 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+17>: test %edx,%edx - 0x5c69f3 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+19>: je 0x5c6a0a <_ZNSt8_Rb_treeIN3pan5QuarkESt4pairIKS1_PNS0_8DataImpl11ArticleNodeEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE4findERS3_+42> - 0x5c69f5 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+21>: mov 0x10(%edx),%eax - 0x5c69f8 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+24>: cmp (%ebx),%eax - 0x5c69fa <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+26>: jb 0x5c6a03 <_ZNSt8_Rb_treeIN3pan5QuarkESt4pairIKS1_PNS0_8DataImpl11ArticleNodeEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE4findERS3_+35> - 0x5c69fc <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+28>: mov %edx,%ecx - 0x5c69fe <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+30>: mov 0x8(%edx),%edx - 0x5c6a01 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+33>: jmp 0x5c6a06 <_ZNSt8_Rb_treeIN3pan5QuarkESt4pairIKS1_PNS0_8DataImpl11ArticleNodeEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE4findERS3_+38> - 0x5c6a03 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+35>: mov 0xc(%edx),%edx - 0x5c6a06 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+38>: test %edx,%edx - 0x5c6a08 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+40>: jne 0x5c69f5 <_ZNSt8_Rb_treeIN3pan5QuarkESt4pairIKS1_PNS0_8DataImpl11ArticleNodeEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE4findERS3_+21> - 0x5c6a0a <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+42>: lea 0x4(%esi),%eax - 0x5c6a0d <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+45>: cmp %eax,%ecx - 0x5c6a0f <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+47>: je 0x5c6a18 <_ZNSt8_Rb_treeIN3pan5QuarkESt4pairIKS1_PNS0_8DataImpl11ArticleNodeEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE4findERS3_+56> - 0x5c6a11 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+49>: mov (%ebx),%eax - 0x5c6a13 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+51>: cmp 0x10(%ecx),%eax - 0x5c6a16 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+54>: jae 0x5c6a1b <_ZNSt8_Rb_treeIN3pan5QuarkESt4pairIKS1_PNS0_8DataImpl11ArticleNodeEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE4findERS3_+59> - 0x5c6a18 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+56>: lea 0x4(%esi),%ecx - 0x5c6a1b <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+59>: mov %ecx,%eax - 0x5c6a1d <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+61>: pop %ebx - 0x5c6a1e <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+62>: pop %esi - 0x5c6a1f <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+63>: pop %ebp - 0x5c6a20 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+64>: ret - 0x5c6a21 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+65>: nop - 0x5c6a22 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+66>: nop - 0x5c6a23 <std::_Rb_tree<pan::Quark, std::pair<pan::Quark const, pan::DataImpl::ArticleNode*>, std::_Select1st<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> >, std::less<pan::Quark>, std::allocator<std::pair<pan::Quark const, pan::DataImpl::ArticleNode*> > >::find(pan::Quark const&)+67>: nop
It always crashes around 65000 headers.
As I'm sure you're aware, that's a very suspicious number. :) Could you try this patch and see how it goes?
Created attachment 69447 [details] [review] test patch
The patch fixed it.
*** Bug 348577 has been marked as a duplicate of this bug. ***
*** Bug 348615 has been marked as a duplicate of this bug. ***
*** Bug 348719 has been marked as a duplicate of this bug. ***