After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 348447 - Crashes when fetching headers
Crashes when fetching headers
Status: RESOLVED FIXED
Product: Pan
Classification: Other
Component: general
pre-1.0 betas
Other Windows
: Normal critical
: ---
Assigned To: Charles Kerr
Pan QA Team
: 348577 348615 348719 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2006-07-23 20:58 UTC by Artur Jachacy
Modified: 2006-07-26 04:40 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
test patch (1.31 KB, patch)
2006-07-24 02:08 UTC, Charles Kerr
none Details | Review

Description Artur Jachacy 2006-07-23 20:58:47 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
  • #1 pan::DataImpl::GroupHeaders::find_node
    at stl_map.h line 498
  • #2 pan::DataImpl::GroupHeaders::find_article
    at headers.cc line 115
  • #3 pan::DataImpl::xover_add
    at xover.cc line 266
  • #4 pan::TaskXOver::on_nntp_line
    at string-view.h line 83
  • #5 pan::NNTP::onSocketResponse
    at nntp.cc line 148
  • #6 pan::GIOChannelSocket::do_read
    at string-view.h line 84
  • #7 pan::GIOChannelSocket::gio_func
    at socket-impl-gio.cc line 438
  • #8 ??
  • #9 ??
  • #10 ??
  • #11 ??
  • #12 ??
  • #13 ??
  • #14 ??
  • #15 ??
  • #16 ??
  • #17 ??
  • #18 ??


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
Comment 1 Artur Jachacy 2006-07-23 21:09:48 UTC
It always crashes around 65000 headers.
Comment 2 Charles Kerr 2006-07-24 02:07:33 UTC
As I'm sure you're aware, that's a very suspicious number. :)

Could you try this patch and see how it goes?
Comment 3 Charles Kerr 2006-07-24 02:08:25 UTC
Created attachment 69447 [details] [review]
test patch
Comment 4 Artur Jachacy 2006-07-24 19:37:53 UTC
The patch fixed it.
Comment 5 Charles Kerr 2006-07-25 19:04:42 UTC
*** Bug 348577 has been marked as a duplicate of this bug. ***
Comment 6 Charles Kerr 2006-07-25 19:06:45 UTC
*** Bug 348615 has been marked as a duplicate of this bug. ***
Comment 7 Charles Kerr 2006-07-26 04:40:28 UTC
*** Bug 348719 has been marked as a duplicate of this bug. ***