public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C)
@ 2013-11-06 14:21 fxcoudert at gcc dot gnu.org
  2013-11-06 15:03 ` [Bug fortran/59023] " rguenth at gcc dot gnu.org
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2013-11-06 14:21 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

            Bug ID: 59023
           Summary: [4.9 regression] ICE in gfc_search_interface with
                    BIND(C)
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: fxcoudert at gcc dot gnu.org

The code below triggers an ICE on current trunk (on x86_64-apple-darwin13, but
I don't suppose it matters much). It works with gfortran 4.8.0 and 4.8.2, as
well as all other versions since 4.3 at least.

!!!!!!!!!!!!!!!!!!!!!
module foo
  type t
    integer hidden
  end type
contains
  subroutine bar
    type(t) :: toto
    interface
      integer function helper() bind(c)
      end function
    end interface
    toto = t(helper())
  end subroutine
end module
!!!!!!!!!!!!!!!!!!!!!


It is somewhat frustrating, because this bug is triggered in my current
(tentative) implementation of IEEE_ARITHMETIC's IEEE_CLASS routine.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
@ 2013-11-06 15:03 ` rguenth at gcc dot gnu.org
  2013-11-06 21:41 ` fxcoudert at gcc dot gnu.org
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-06 15:03 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P4
   Target Milestone|---                         |4.9.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
  2013-11-06 15:03 ` [Bug fortran/59023] " rguenth at gcc dot gnu.org
@ 2013-11-06 21:41 ` fxcoudert at gcc dot gnu.org
  2013-11-17 13:45 ` dominiq at lps dot ens.fr
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2013-11-06 21:41 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

--- Comment #1 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Using an intermediate variable works around the bug. If you replace:

toto = t(helper())

with

i = helper()
toto = t(i)

where i is an integer variable, you don't have the ICE anymore.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
  2013-11-06 15:03 ` [Bug fortran/59023] " rguenth at gcc dot gnu.org
  2013-11-06 21:41 ` fxcoudert at gcc dot gnu.org
@ 2013-11-17 13:45 ` dominiq at lps dot ens.fr
  2013-12-26 13:21 ` dominiq at lps dot ens.fr
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: dominiq at lps dot ens.fr @ 2013-11-17 13:45 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

Dominique d'Humieres <dominiq at lps dot ens.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-11-17
     Ever confirmed|0                           |1

--- Comment #2 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
Backtrace

Program received signal SIGSEGV, Segmentation fault.
0x000000010003da12 in gfc_search_interface (intr=0x141d08f00, sub_flag=0,
ap=0x141d1e0a0) at ../../work/gcc/fortran/interface.c:3407
3407        if (a->expr && a->expr->expr_type == EXPR_NULL
(gdb) bt
#0  0x000000010003da12 in gfc_search_interface (intr=0x141d08f00, sub_flag=0,
ap=0x141d1e0a0) at ../../work/gcc/fortran/interface.c:3407
#1  0x0000000100085611 in gfc_resolve_expr (e=0x141d08f00) at
../../work/gcc/fortran/resolve.c:2477
#2  0x000000010008a2f0 in resolve_code (code=<optimized out>, ns=<optimized
out>) at ../../work/gcc/fortran/resolve.c:9772
#3  0x000000010008cac4 in resolve_codes (ns=0x141d08f00) at
../../work/gcc/fortran/resolve.c:14624
#4  0x000000010008c9c8 in resolve_codes (ns=0x141d08f00) at
../../work/gcc/fortran/resolve.c:14610
#5  0x000000010008cbbd in gfc_resolve (ns=<optimized out>) at
../../work/gcc/fortran/resolve.c:14652
#6  0x00000001000786e1 in gfc_parse_file () at
../../work/gcc/fortran/parse.c:4672
#7  0x00000001000b9d96 in gfc_be_parse_file () at
../../work/gcc/fortran/f95-lang.c:188
#8  0x000000010082f774 in compile_file () at ../../work/gcc/toplev.c:545
#9  0x000000010083190a in toplev_main (argc=1, argv=0x7fff5fbff550) at
../../work/gcc/toplev.c:1891
(gdb) p *intr
$1 = {sym = 0x141d1d210, where = {nextc = 0x141d0d3c0, lb = 0x141d0d380}, next
= 0x0warning: (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

}


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2013-11-17 13:45 ` dominiq at lps dot ens.fr
@ 2013-12-26 13:21 ` dominiq at lps dot ens.fr
  2013-12-26 15:10 ` tkoenig at gcc dot gnu.org
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: dominiq at lps dot ens.fr @ 2013-12-26 13:21 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

Dominique d'Humieres <dominiq at lps dot ens.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus@net-b.de

--- Comment #3 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
The ICE appeared between r199034 (2013-05-17, no ICE) and r199221 (2013-05-22,
ICE).


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2013-12-26 13:21 ` dominiq at lps dot ens.fr
@ 2013-12-26 15:10 ` tkoenig at gcc dot gnu.org
  2013-12-30 17:45 ` janus at gcc dot gnu.org
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: tkoenig at gcc dot gnu.org @ 2013-12-26 15:10 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

Thomas Koenig <tkoenig at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tkoenig at gcc dot gnu.org

--- Comment #4 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
Valgrind backtrace:


==19413== Memcheck, a memory error detector
==19413== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==19413== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==19413== Command: /home/ig25/lib/gcc/x86_64-unknown-linux-gnu/4.9.0/f951
foo.f90
==19413== 
==19413== Invalid read of size 4
==19413==    at 0x57708A: gfc_search_interface(gfc_interface*, int,
gfc_actual_arglist**) (interface.c:3439)
==19413==    by 0x5BD333: gfc_resolve_expr(gfc_expr*) (resolve.c:2480)
==19413==    by 0x5C1C03: resolve_code(gfc_code*, gfc_namespace*)
(resolve.c:9775)
==19413==    by 0x5C4BBE: resolve_codes(gfc_namespace*) (resolve.c:14566)
==19413==    by 0x5C4AC7: resolve_codes(gfc_namespace*) (resolve.c:14552)
==19413==    by 0x5C4CA2: gfc_resolve(gfc_namespace*) [clone .part.45]
(resolve.c:14594)
==19413==    by 0x5B0BEF: gfc_parse_file() (parse.c:4672)
==19413==    by 0x5EE8C5: gfc_be_parse_file() (f95-lang.c:188)
==19413==    by 0x9F9E55: compile_file() (toplev.c:547)
==19413==    by 0x9FBE27: toplev_main(int, char**) (toplev.c:1887)
==19413==    by 0x5A54BE4: (below main) (in /lib64/libc-2.18.so)
==19413==  Address 0x8b4853fd89495554 is not stack'd, malloc'd or (recently)
free'd
==19413==


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2013-12-26 15:10 ` tkoenig at gcc dot gnu.org
@ 2013-12-30 17:45 ` janus at gcc dot gnu.org
  2013-12-30 18:05 ` janus at gcc dot gnu.org
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: janus at gcc dot gnu.org @ 2013-12-30 17:45 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |janus at gcc dot gnu.org

--- Comment #5 from janus at gcc dot gnu.org ---
(In reply to Dominique d'Humieres from comment #3)
> The ICE appeared between r199034 (2013-05-17, no ICE) and r199221
> (2013-05-22, ICE).

In this range are three committs for PR 48858, which might be to blame here:
r199118, r199119, r199120. At first sight I suspect the middle one could be the
culprit ...


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2013-12-30 17:45 ` janus at gcc dot gnu.org
@ 2013-12-30 18:05 ` janus at gcc dot gnu.org
  2013-12-30 19:42 ` janus at gcc dot gnu.org
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: janus at gcc dot gnu.org @ 2013-12-30 18:05 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

--- Comment #6 from janus at gcc dot gnu.org ---
(In reply to janus from comment #5)
> In this range are three committs for PR 48858, which might be to blame here:
> r199118, r199119, r199120. At first sight I suspect the middle one could be
> the culprit ...

Actually the last one seem to be responsible instead. In particular reverting
the resolve.c parts of r199120 makes the ICE go away.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2013-12-30 18:05 ` janus at gcc dot gnu.org
@ 2013-12-30 19:42 ` janus at gcc dot gnu.org
  2013-12-30 20:00 ` janus at gcc dot gnu.org
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: janus at gcc dot gnu.org @ 2013-12-30 19:42 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

--- Comment #7 from janus at gcc dot gnu.org ---
Created attachment 31542
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31542&action=edit
patch

Here is a patch which removes the ICE, although I don't actually understand why
(maybe someone else can see this). It corresponds to a partial reversion of
r199120, namely the changes to 'gfc_verify_binding_labels'. It is the smallest
subset of the above commit that I was able to find that removes the ICE. It
regresses at least on some of the binding_label_tests_* in the testsuite.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2013-12-30 19:42 ` janus at gcc dot gnu.org
@ 2013-12-30 20:00 ` janus at gcc dot gnu.org
  2013-12-30 21:33 ` janus at gcc dot gnu.org
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: janus at gcc dot gnu.org @ 2013-12-30 20:00 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

--- Comment #8 from janus at gcc dot gnu.org ---
I had a closer look at what actually changes with the patch in comment 7, and
found out that the crucial part is that the patch does not set the 'ns' member
of the gsymbol. This observation leads to a much simpler patch to fix the ICE:


Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c    (revision 206249)
+++ gcc/fortran/resolve.c    (working copy)
@@ -10164,7 +10164,6 @@ gfc_verify_binding_labels (gfc_symbol *sym)
       gsym->sym_name = sym->name;
       gsym->binding_label = sym->binding_label;
       gsym->binding_label = sym->binding_label;
-      gsym->ns = sym->ns;
       gsym->mod_name = module;
       if (sym->attr.function)
         gsym->type = GSYM_FUNCTION;


Unfortunately I still don't really understand *why* this fixes the ICE.
Moreover, it still fails on some binding_label_tests_*.

(Btw, also one of the duplicate lines, which set the binding_label, should be
removed.)


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (8 preceding siblings ...)
  2013-12-30 20:00 ` janus at gcc dot gnu.org
@ 2013-12-30 21:33 ` janus at gcc dot gnu.org
  2013-12-31  0:03 ` janus at gcc dot gnu.org
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: janus at gcc dot gnu.org @ 2013-12-30 21:33 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

--- Comment #9 from janus at gcc dot gnu.org ---
The following patch is more reasonable, I think:


Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c    (revision 206252)
+++ gcc/fortran/resolve.c    (working copy)
@@ -2360,7 +2360,7 @@ resolve_global_procedure (gfc_symbol *sym, locus *
       gfc_symbol *def_sym;

       /* Resolve the gsymbol namespace if needed.  */
-      if (!gsym->ns->resolved)
+      if (!gsym->ns->resolved && !gsym->binding_label)
     {
       gfc_dt_list *old_dt_list;
       struct gfc_omp_saved_state old_omp_state;


However, it regresses on value_tests_f03.f90.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (9 preceding siblings ...)
  2013-12-30 21:33 ` janus at gcc dot gnu.org
@ 2013-12-31  0:03 ` janus at gcc dot gnu.org
  2014-01-06 11:31 ` janus at gcc dot gnu.org
  2014-01-06 11:33 ` janus at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: janus at gcc dot gnu.org @ 2013-12-31  0:03 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |janus at gcc dot gnu.org

--- Comment #10 from janus at gcc dot gnu.org ---
Here is a variant which regtests cleanly:


Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c    (revision 206252)
+++ gcc/fortran/resolve.c    (working copy)
@@ -2351,6 +2351,7 @@ resolve_global_procedure (gfc_symbol *sym, locus *
   if ((sym->attr.if_source == IFSRC_UNKNOWN
        || sym->attr.if_source == IFSRC_IFBODY)
       && gsym->type != GSYM_UNKNOWN
+      && !gsym->binding_label
       && gsym->ns
       && gsym->ns->resolved != -1
       && gsym->ns->proc_name


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (10 preceding siblings ...)
  2013-12-31  0:03 ` janus at gcc dot gnu.org
@ 2014-01-06 11:31 ` janus at gcc dot gnu.org
  2014-01-06 11:33 ` janus at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: janus at gcc dot gnu.org @ 2014-01-06 11:31 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

--- Comment #11 from janus at gcc dot gnu.org ---
Author: janus
Date: Mon Jan  6 11:31:34 2014
New Revision: 206355

URL: http://gcc.gnu.org/viewcvs?rev=206355&root=gcc&view=rev
Log:
2014-01-06  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/59023
    PR fortran/59662
    * resolve.c (resolve_global_procedure): Don't apply to c-binding
    procedures.
    (gfc_verify_binding_labels): Remove duplicate line.

2014-01-06  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/59023
    * gfortran.dg/bind_c_procs_2.f90: New.

Added:
    trunk/gcc/testsuite/gfortran.dg/bind_c_procs_2.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/resolve.c
    trunk/gcc/testsuite/ChangeLog


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Bug fortran/59023] [4.9 regression] ICE in gfc_search_interface with BIND(C)
  2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
                   ` (11 preceding siblings ...)
  2014-01-06 11:31 ` janus at gcc dot gnu.org
@ 2014-01-06 11:33 ` janus at gcc dot gnu.org
  12 siblings, 0 replies; 14+ messages in thread
From: janus at gcc dot gnu.org @ 2014-01-06 11:33 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59023

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #12 from janus at gcc dot gnu.org ---
Fixed with r206355. Closing.


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2014-01-06 11:33 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-06 14:21 [Bug fortran/59023] New: [4.9 regression] ICE in gfc_search_interface with BIND(C) fxcoudert at gcc dot gnu.org
2013-11-06 15:03 ` [Bug fortran/59023] " rguenth at gcc dot gnu.org
2013-11-06 21:41 ` fxcoudert at gcc dot gnu.org
2013-11-17 13:45 ` dominiq at lps dot ens.fr
2013-12-26 13:21 ` dominiq at lps dot ens.fr
2013-12-26 15:10 ` tkoenig at gcc dot gnu.org
2013-12-30 17:45 ` janus at gcc dot gnu.org
2013-12-30 18:05 ` janus at gcc dot gnu.org
2013-12-30 19:42 ` janus at gcc dot gnu.org
2013-12-30 20:00 ` janus at gcc dot gnu.org
2013-12-30 21:33 ` janus at gcc dot gnu.org
2013-12-31  0:03 ` janus at gcc dot gnu.org
2014-01-06 11:31 ` janus at gcc dot gnu.org
2014-01-06 11:33 ` janus at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).