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 560057 - evolution entering endless loop while trying to fetch headers form nntp server
evolution entering endless loop while trying to fetch headers form nntp server
Status: RESOLVED WONTFIX
Product: evolution
Classification: Applications
Component: Mailer
2.26.x (obsolete)
Other All
: Normal normal
: ---
Assigned To: evolution-mail-maintainers
Evolution QA team
evolution[nntp]
: 378121 571061 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2008-11-09 19:16 UTC by Thomas
Modified: 2013-09-13 00:59 UTC
See Also:
GNOME target: ---
GNOME version: 2.21/2.22



Description Thomas 2008-11-09 19:16:35 UTC
Please describe the problem:
I created a usenet account on a news server, subscribe to a few groups, and click on a newsgroup to fetch headers (and probably articles) and evolution would enter an endless loop. Below is a stacktrace.

Messages from the debug log:

NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 949749'
NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 949750'
NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 949751'
NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 949752'
NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 949753'
NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 949754'
NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 949755'
NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 949756'

Steps to reproduce:
1. 
2. 
3. 


Actual results:


Expected results:


Does this happen every time?


Other information:
(gdb) p o
$23 = (unsigned char *) 0x8c7b400 "423 Bad article number"
(gdb) p oe
$24 = (unsigned char *) 0x8c7b7ff ""
(gdb) p oe +1
$25 = (unsigned char *) 0x8c7b800 "\b\004"
(gdb) p *is
$26 = {parent = {parent_object = {klass = 0x8cbb030, magic = 2007188717, hooks = 0x0, 
      ref_count = 2, flags = 0, next = 0x0, prev = 0x0}, eos = 0}, source = 0x8bc54e0, 
  mode = CAMEL_NNTP_STREAM_LINE, state = 0, 
  buf = 0x8c46398 "423 Bad article number\r\n\n.news.schlund.de!schlund.de!newsfeed01.sul.t-online.de!t-online.de!news.germany.com!aioe.org!not-for-mail\r\nFrom: MalcolmO <user@domain.invalid>\r\nNewsgroups: alt.conspiracy,alt"..., 
  ptr = 0x8c46398 "423 Bad article number\r\n\n.news.schlund.de!schlund.de!newsfeed01.sul.t-online.de!t-online.de!news.germany.com!aioe.org!not-for-mail\r\nFrom: MalcolmO <user@domain.invalid>\r\nNewsgroups: alt.conspiracy,alt"..., 
  end = 0x8c463b0 "\n.news.schlund.de!schlund.de!newsfeed01.sul.t-online.de!t-online.de!news.germany.com!aioe.org!not-for-mail\r\nFrom: MalcolmO <user@domain.invalid>\r\nNewsgroups: alt.conspiracy,alt.illuminati,de.soc.polit"..., linebuf = 0x8c7b400 "423 Bad article number", 
  lineptr = 0x8c7b400 "423 Bad article number", lineend = 0x8c7b800 "\b\004"}
(gdb) bt
  • #0 camel_nntp_stream_line
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-stream.c line 313
  • #1 camel_nntp_raw_commandv
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-store.c line 1274
  • #2 camel_nntp_raw_command_auth
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-store.c line 1320
  • #3 add_range_head
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-summary.c line 371
  • #4 camel_nntp_summary_check
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-summary.c line 506
  • #5 camel_nntp_folder_selected
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-folder.c line 71
  • #6 camel_nntp_command
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-store.c line 1369
  • #7 nntp_folder_refresh_info_online
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-folder.c line 89
  • #8 disco_refresh_info
    at ../../../evolution-data-server/camel/camel-disco-folder.c line 269
  • #9 camel_folder_refresh_info
    at ../../../evolution-data-server/camel/camel-folder.c line 328
  • #10 camel_nntp_folder_new
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-folder.c line 551
  • #11 nntp_get_folder
    at ../../../../../evolution-data-server/camel/providers/nntp/camel-nntp-store.c line 426
  • #12 disco_get_folder
    at ../../../evolution-data-server/camel/camel-disco-store.c line 235
  • #13 camel_store_get_folder
    at ../../../evolution-data-server/camel/camel-store.c line 330
  • #14 mail_tool_uri_to_folder
    at ../../../evolution/mail/mail-tools.c line 331
  • #15 get_folder_exec
    at ../../../evolution/mail/mail-ops.c line 1214
  • #16 mail_msg_proxy
    at ../../../evolution/mail/mail-mt.c line 520
  • #17 ??
    from /usr/lib/libglib-2.0.so.0
  • #18 ??
    from /usr/lib/libglib-2.0.so.0
  • #19 start_thread
    from /lib/tls/i686/cmov/libpthread.so.0
  • #20 clone
    from /lib/tls/i686/cmov/libc.so.6

Comment 1 Srinivasa Ragavan 2008-11-10 06:07:38 UTC
Thomas, Im working on 4 other blockers atm. I would be looking at it, later this week or starting next week. Thanks.
Comment 2 Srinivasa Ragavan 2008-12-15 06:58:29 UTC
Sucks, I missed this out. I'll take up next week.
Comment 3 Akhil Laddha 2009-02-10 03:13:00 UTC
*** Bug 571061 has been marked as a duplicate of this bug. ***
Comment 4 Akhil Laddha 2009-02-10 03:15:26 UTC
*** Bug 378121 has been marked as a duplicate of this bug. ***
Comment 5 Milan Crha 2009-02-23 17:23:47 UTC
Thomas: which groups do this for you? I just tried alt.conspiracy and it doesn't do that for me.

Akhil: Those two are different, that g_assert is still there, maybe changing it to regular test, with an explanation as "check if didn't quit yet" may help there. Or looking for value of camel_application_is_exiting would help there as well, or even better, whether the operation was canceled? I do not know.
Comment 6 Thomas 2009-02-23 20:07:37 UTC
Well, just tried it again, with the latest evolution trunk version and it happened again. I interrupted the loop and debugged a bit. it looks, like an error condition is not handled in camel_read(). Here is the relevant sectionn of my gdb session:

NNTP_STREAM_LINE(22): '423 Bad article number'
NNTP_COMMAND: 'head 960498'
  C-c C-c
Program received signal SIGINT, Interrupt.

Thread 3058797424 (LWP 7478)

  • #1 poll
    from /lib/tls/i686/cmov/libc.so.6
  • #2 g_main_context_iterate
    at /build/buildd/glib2.0-2.18.2/glib/gmain.c line 3091
  • #1 select
    from /lib/tls/i686/cmov/libc.so.6
  • #2 camel_read
    at ../../../evolution-data-server/camel/camel-file-utils.c line 466
  • #0 camel_read
    at ../../../evolution-data-server/camel/camel-file-utils.c line 482
  • #1 camel_read_socket
    at ../../../evolution-data-server/camel/camel-file-utils.c line 600
  • #0 camel_read
    at ../../../evolution-data-server/camel/camel-file-utils.c line 467
  • #0 camel_read
    at ../../../evolution-data-server/camel/camel-file-utils.c line 482

Hope that helps.

Comment 7 Thomas 2009-02-23 20:42:58 UTC
I deleted the account and created it again. The new account differed from the previous as I chose "no authorization" and did not check to use short notation for newsgroups as I did in the previous configure. And ... ala, even a big newsgroup like alt.conspiracy would be fetched without problems. So, I would suggest to close this bug.

thomas
Comment 8 Milan Crha 2009-02-24 09:35:13 UTC
Ah, nice. (In reply to comment #6)
> Well, just tried it again, with the latest evolution trunk version and it
> happened again. I interrupted the loop and debugged a bit. it looks, like an
> error condition is not handled in camel_read().

It's fine, because it's handled a bit later, in camel-nntp-summary.c, in add_range_head function:

371  ret = camel_nntp_raw_command_auth(store, ex, &line, "head %u", i);
372  /* unknown article, ignore */
373  if (ret == 423)
374	 continue;

it seems your summary got broken, and reported too big range of heads, whatever that means in NNTP. Your range was (those 'high' and 'low' arguments):
  • #3 add_range_head

and it was making progress, even quite slow. I was interested in a reproducer, but if you're fine with this, then ok, feel free to close this bug.