public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v4 00/21] nptl: Fix Race conditions in pthread cancellation [BZ#12683]
@ 2020-04-03 20:31 Adhemerval Zanella
  2020-04-03 20:31 ` [PATCH v4 01/21] nptl: Do not close the pipe on tst-cancel{2,3} Adhemerval Zanella
                   ` (20 more replies)
  0 siblings, 21 replies; 46+ messages in thread
From: Adhemerval Zanella @ 2020-04-03 20:31 UTC (permalink / raw)
  To: libc-alpha

This is an updated version of my previous version [1] to fix BZ#12683
and it is based on cancel type and state refactor [2] [3] (still
pending review).

The changes from previous version are:

  - Use CANCELED_BITMASK on syscall_cancel.S instead of hardcoded
    value and remove the archors type.

  - Reorganized the __do_cancel macro and its usage on various
    pthread functions (and once pthread_exit is moved to libc.so it
    can be replaced by __pthread_exit call).

  - Reword x32 fix to use the its expected kernel ABI.

Below there are the system where I could fully tested with a
make check on real hardware:

	aarch64			no regresssions
	alpha			no regresssions
	arm			no regresssions
	csky			no coverage
	hppa			no regresssions
	i386			no regresssions
	ia64			1 regression *
	m68k			basic tests on simulator
	microblaze		no coverage
	mips64			no regresssions
	mips64n32		no regresssions
	mips			no regresssions
	nios2			no coverage
	powerpc			no regresssions
	powerpc64		no regresssions
	powerpc64le		no regresssions
	riscv64			no coverage
	s390x			no regresssions
	s390			no regresssions
	sh4			no regresssions
	sparc64			1 regression **
	sparcv9			no regresssions
	x86_64			no regresssions
	x86_64-32		no regresssions

*  On ia64 I am seeing nptl/tst-cancel21-static failure on libunwind stack
   unwind on third internal test (for SA_SIGINFO).  It only happens also for
   exception based unwind (-fexceptions), so I presume it might be related to
   the arch-specific syscall_cancel.S implementation.

** on sparc64 I am seeing intermitent nptl/tst-cond25 failures I can't
   pinpoint exactly what is triggering the SEGFAULT.  I am inclined to
   see it as a codegen issue, I will try with an updated compiler.

[1] https://sourceware.org/pipermail/libc-alpha/2019-October/107284.html
[2] https://sourceware.org/pipermail/libc-alpha/2020-April/112416.html
[3] https://sourceware.org/pipermail/libc-alpha/2020-April/112417.html

Adhemerval Zanella (21):
  nptl: Do not close the pipe on tst-cancel{2,3}
  nptl: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: x86_64: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: x32: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: i386: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: ia64: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: mips: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: aarch64: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: arm: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: powerpc: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: microblaze: Fix Race conditions in pthread cancellation
    [BZ#12683]
  nptl: sparc: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: hppa: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: m68k: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: alpha: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: sh: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: riscv: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: s390: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: nios2: Fix Race conditions in pthread cancellation [BZ#12683]
  nptl: csky: Fix Race conditions in pthread cancellation [BZ#12683]
  Linux: Remove sysdep-cancel header

 elf/dl-close.c                                |   1 -
 elf/dl-lookup.c                               |   1 -
 elf/dl-open.c                                 |   1 -
 elf/dl-runtime.c                              |   1 -
 elf/dl-scope.c                                |   1 -
 elf/dl-sym.c                                  |   1 -
 io/creat.c                                    |   1 -
 io/ppoll.c                                    |   2 -
 malloc/malloc.c                               |   3 -
 manual/llio.texi                              |   4 +-
 nptl/Makefile                                 |  10 +-
 nptl/Versions                                 |   4 +
 nptl/cancellation.c                           |  78 ----------
 nptl/descr.h                                  |   3 -
 nptl/libc-cancellation.c                      |  44 +++++-
 nptl/nptl-init.c                              |  92 ++++++------
 nptl/pthreadP.h                               |  58 ++++++--
 nptl/pthread_cancel.c                         |  66 ++-------
 nptl/pthread_create.c                         |   7 +-
 nptl/pthread_exit.c                           |   9 +-
 nptl/pthread_join_common.c                    |   7 +-
 nptl/pthread_kill.c                           |   7 +-
 .../pthread_kill_internal.c                   |  21 +--
 nptl/pthread_setcanceltype.c                  |   2 +-
 nptl/pthread_testcancel.c                     |  12 +-
 nptl/sem_wait.c                               |   2 +-
 nptl/tst-cancel2.c                            |   3 -
 nptl/tst-cancel29.c                           | 100 +++++++++++++
 nptl/tst-cancel3.c                            |   3 -
 posix/nanosleep.c                             |   1 -
 rt/Makefile                                   |   2 +-
 sysdeps/aarch64/nptl/tcb-offsets.sym          |   3 +
 sysdeps/alpha/nptl/tcb-offsets.sym            |   3 +
 sysdeps/arm/nptl/tcb-offsets.sym              |   3 +
 sysdeps/csky/nptl/tcb-offsets.sym             |   3 +
 .../syscall_types.h}                          |  13 +-
 sysdeps/generic/sysdep-cancel.h               |   7 -
 sysdeps/hppa/nptl/tcb-offsets.sym             |   3 +
 sysdeps/i386/nptl/tcb-offsets.sym             |   3 +
 sysdeps/ia64/nptl/tcb-offsets.sym             |   3 +
 sysdeps/m68k/nptl/tcb-offsets.sym             |   3 +
 sysdeps/microblaze/nptl/tcb-offsets.sym       |   3 +
 sysdeps/mips/dl-trampoline.c                  |   1 -
 sysdeps/mips/nptl/tcb-offsets.sym             |   3 +
 sysdeps/nios2/nptl/tcb-offsets.sym            |   3 +
 sysdeps/nptl/Makefile                         |   3 +-
 sysdeps/nptl/cancellation-pc-check.h          |  53 +++++++
 sysdeps/nptl/cancellation-sigmask.h           |  30 ++++
 sysdeps/nptl/futex-internal.h                 |  19 +--
 sysdeps/nptl/lowlevellock-futex.h             |  42 ++++--
 sysdeps/posix/open64.c                        |   1 -
 sysdeps/posix/pause.c                         |   1 -
 sysdeps/posix/sigpause.c                      |   1 -
 sysdeps/posix/sigwait.c                       |   1 -
 sysdeps/powerpc/nptl/tcb-offsets.sym          |   3 +
 sysdeps/powerpc/powerpc32/sysdep.h            |   3 +
 sysdeps/powerpc/powerpc64/sysdep.h            |  19 +++
 sysdeps/pthread/thrd_sleep.c                  |   1 -
 sysdeps/riscv/nptl/tcb-offsets.sym            |   3 +
 sysdeps/riscv/nptl/tls.h                      |   2 +
 sysdeps/s390/nptl/tcb-offsets.sym             |   3 +
 sysdeps/sh/nptl/tcb-offsets.sym               |   3 +
 sysdeps/sh/sysdep.h                           |   1 +
 sysdeps/sparc/nptl/tcb-offsets.sym            |   3 +
 sysdeps/unix/sysdep.h                         | 139 ++++++++++++++----
 .../unix/sysv/linux/aarch64/syscall_cancel.S  |  59 ++++++++
 sysdeps/unix/sysv/linux/accept.c              |   1 -
 sysdeps/unix/sysv/linux/accept4.c             |   1 -
 sysdeps/unix/sysv/linux/access.c              |   2 +-
 sysdeps/unix/sysv/linux/alpha/select.c        |   1 -
 .../unix/sysv/linux/alpha/syscall_cancel.S    |  81 ++++++++++
 sysdeps/unix/sysv/linux/arm/syscall_cancel.S  |  78 ++++++++++
 sysdeps/unix/sysv/linux/clock_nanosleep.c     |   1 -
 sysdeps/unix/sysv/linux/close.c               |   1 -
 sysdeps/unix/sysv/linux/close_nocancel.c      |   1 -
 sysdeps/unix/sysv/linux/connect.c             |   1 -
 sysdeps/unix/sysv/linux/copy_file_range.c     |   1 -
 sysdeps/unix/sysv/linux/creat.c               |   1 -
 sysdeps/unix/sysv/linux/creat64.c             |   1 -
 sysdeps/unix/sysv/linux/csky/syscall_cancel.S | 115 +++++++++++++++
 sysdeps/unix/sysv/linux/epoll_pwait.c         |   1 -
 sysdeps/unix/sysv/linux/epoll_wait.c          |   1 -
 sysdeps/unix/sysv/linux/fallocate.c           |   1 -
 sysdeps/unix/sysv/linux/fallocate64.c         |   1 -
 sysdeps/unix/sysv/linux/fcntl.c               |   1 -
 sysdeps/unix/sysv/linux/fcntl64.c             |   1 -
 sysdeps/unix/sysv/linux/fcntl_nocancel.c      |   1 -
 sysdeps/unix/sysv/linux/fdatasync.c           |   2 +-
 sysdeps/unix/sysv/linux/fsync.c               |   2 +-
 .../unix/sysv/linux/generic/inotify_init.c    |   5 +-
 sysdeps/unix/sysv/linux/getrandom.c           |   1 -
 sysdeps/unix/sysv/linux/hppa/syscall_cancel.S |  83 +++++++++++
 sysdeps/unix/sysv/linux/hppa/sysdep.h         |   1 +
 sysdeps/unix/sysv/linux/i386/Makefile         |   2 +-
 sysdeps/unix/sysv/linux/i386/syscall_cancel.S | 104 +++++++++++++
 .../sysv/linux/ia64/cancellation-pc-check.h   |  48 ++++++
 .../sysv/linux/ia64/cancellation-sigmask.h    |  33 +++++
 sysdeps/unix/sysv/linux/ia64/syscall_cancel.S |  81 ++++++++++
 sysdeps/unix/sysv/linux/m68k/syscall_cancel.S |  85 +++++++++++
 sysdeps/unix/sysv/linux/microblaze/pselect.c  |   1 -
 .../sysv/linux/microblaze/syscall_cancel.S    |  61 ++++++++
 sysdeps/unix/sysv/linux/microblaze/sysdep.h   |   1 +
 .../sysv/linux/mips/mips32/syscall_cancel.S   | 128 ++++++++++++++++
 sysdeps/unix/sysv/linux/mips/mips32/sysdep.h  |   4 +
 .../linux/mips/mips64/n32/syscall_types.h     |  28 ++++
 .../sysv/linux/mips/mips64/syscall_cancel.S   | 130 ++++++++++++++++
 sysdeps/unix/sysv/linux/mips/mips64/sysdep.h  |  52 +++----
 sysdeps/unix/sysv/linux/mq_timedreceive.c     |   2 +-
 sysdeps/unix/sysv/linux/mq_timedsend.c        |   2 +-
 sysdeps/unix/sysv/linux/msgrcv.c              |   2 +-
 sysdeps/unix/sysv/linux/msgsnd.c              |   2 +-
 sysdeps/unix/sysv/linux/msync.c               |   2 +-
 .../unix/sysv/linux/nios2/syscall_cancel.S    |  95 ++++++++++++
 sysdeps/unix/sysv/linux/open.c                |   3 +-
 sysdeps/unix/sysv/linux/open64.c              |   4 +-
 sysdeps/unix/sysv/linux/open_by_handle_at.c   |   2 +-
 sysdeps/unix/sysv/linux/open_nocancel.c       |   1 -
 sysdeps/unix/sysv/linux/openat.c              |   3 +-
 sysdeps/unix/sysv/linux/openat64.c            |   3 +-
 sysdeps/unix/sysv/linux/openat64_nocancel.c   |   1 -
 sysdeps/unix/sysv/linux/openat_nocancel.c     |   1 -
 sysdeps/unix/sysv/linux/pause.c               |   2 +-
 sysdeps/unix/sysv/linux/poll.c                |   1 -
 .../unix/sysv/linux/powerpc/syscall_cancel.S  |  65 ++++++++
 sysdeps/unix/sysv/linux/ppoll.c               |   3 -
 sysdeps/unix/sysv/linux/pread.c               |   2 +-
 sysdeps/unix/sysv/linux/pread64.c             |   2 +-
 sysdeps/unix/sysv/linux/pread64_nocancel.c    |   1 -
 sysdeps/unix/sysv/linux/preadv.c              |   2 +-
 sysdeps/unix/sysv/linux/preadv2.c             |   2 +-
 sysdeps/unix/sysv/linux/preadv64.c            |   2 +-
 sysdeps/unix/sysv/linux/preadv64v2.c          |   2 +-
 sysdeps/unix/sysv/linux/pselect.c             |   5 +-
 sysdeps/unix/sysv/linux/pwrite.c              |   2 +-
 sysdeps/unix/sysv/linux/pwrite64.c            |   2 +-
 sysdeps/unix/sysv/linux/pwritev.c             |   2 +-
 sysdeps/unix/sysv/linux/pwritev2.c            |   2 +-
 sysdeps/unix/sysv/linux/pwritev64.c           |   2 +-
 sysdeps/unix/sysv/linux/pwritev64v2.c         |   2 +-
 sysdeps/unix/sysv/linux/read.c                |   2 +-
 sysdeps/unix/sysv/linux/read_nocancel.c       |   1 -
 sysdeps/unix/sysv/linux/readv.c               |   2 +-
 sysdeps/unix/sysv/linux/recv.c                |   1 -
 sysdeps/unix/sysv/linux/recvfrom.c            |   1 -
 sysdeps/unix/sysv/linux/recvmmsg.c            |   1 -
 sysdeps/unix/sysv/linux/recvmsg.c             |   1 -
 .../unix/sysv/linux/riscv/syscall_cancel.S    |  67 +++++++++
 .../sysv/linux/s390/s390-32/syscall_cancel.S  |  63 ++++++++
 .../sysv/linux/s390/s390-64/syscall_cancel.S  |  62 ++++++++
 sysdeps/unix/sysv/linux/select.c              |   1 -
 sysdeps/unix/sysv/linux/send.c                |   1 -
 sysdeps/unix/sysv/linux/sendmmsg.c            |   1 -
 sysdeps/unix/sysv/linux/sendmsg.c             |   1 -
 sysdeps/unix/sysv/linux/sendto.c              |   1 -
 sysdeps/unix/sysv/linux/sh/syscall_cancel.S   | 126 ++++++++++++++++
 sysdeps/unix/sysv/linux/sigsuspend.c          |   2 +-
 sysdeps/unix/sysv/linux/sigtimedwait.c        |   1 -
 sysdeps/unix/sysv/linux/sigwait.c             |   1 -
 sysdeps/unix/sysv/linux/sigwaitinfo.c         |   1 -
 sysdeps/unix/sysv/linux/socketcall.h          |  42 ++++--
 .../sysv/linux/sparc/cancellation-sigmask.h   |  39 +++++
 .../sysv/linux/sparc/sparc32/syscall_cancel.S |  71 +++++++++
 sysdeps/unix/sysv/linux/sparc/sparc64/pause.c |  25 ++++
 .../sysv/linux/sparc/sparc64/syscall_cancel.S |  74 ++++++++++
 sysdeps/unix/sysv/linux/splice.c              |   2 +-
 sysdeps/unix/sysv/linux/sync_file_range.c     |   2 +-
 sysdeps/unix/sysv/linux/syscall_cancel.c      |  64 ++++++++
 sysdeps/unix/sysv/linux/sysdep-cancel.h       |  67 ---------
 sysdeps/unix/sysv/linux/sysdep.h              |   9 ++
 sysdeps/unix/sysv/linux/tcdrain.c             |   1 -
 sysdeps/unix/sysv/linux/tee.c                 |   2 +-
 sysdeps/unix/sysv/linux/timer_routines.c      |   1 -
 sysdeps/unix/sysv/linux/vmsplice.c            |   2 +-
 sysdeps/unix/sysv/linux/wait4.c               |   2 +-
 sysdeps/unix/sysv/linux/waitid.c              |   1 -
 sysdeps/unix/sysv/linux/write.c               |   2 +-
 sysdeps/unix/sysv/linux/write_nocancel.c      |   1 -
 sysdeps/unix/sysv/linux/writev.c              |   2 +-
 .../unix/sysv/linux/x86_64/syscall_cancel.S   |  59 ++++++++
 .../sysv/linux/x86_64/x32/syscall_types.h     |  40 +++++
 180 files changed, 2661 insertions(+), 544 deletions(-)
 delete mode 100644 nptl/cancellation.c
 rename sysdeps/unix/sysv/linux/pthread_kill.c => nptl/pthread_kill_internal.c (75%)
 create mode 100644 nptl/tst-cancel29.c
 rename sysdeps/{nptl/librt-cancellation.c => generic/syscall_types.h} (70%)
 delete mode 100644 sysdeps/generic/sysdep-cancel.h
 create mode 100644 sysdeps/nptl/cancellation-pc-check.h
 create mode 100644 sysdeps/nptl/cancellation-sigmask.h
 create mode 100644 sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/alpha/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/arm/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/csky/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/hppa/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/i386/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/ia64/cancellation-pc-check.h
 create mode 100644 sysdeps/unix/sysv/linux/ia64/cancellation-sigmask.h
 create mode 100644 sysdeps/unix/sysv/linux/ia64/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/m68k/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h
 create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/nios2/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/riscv/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/sh/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/sparc/cancellation-sigmask.h
 create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/pause.c
 create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/syscall_cancel.c
 delete mode 100644 sysdeps/unix/sysv/linux/sysdep-cancel.h
 create mode 100644 sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S
 create mode 100644 sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h

-- 
2.17.1


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

end of thread, other threads:[~2020-04-15 14:51 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-03 20:31 [PATCH v4 00/21] nptl: Fix Race conditions in pthread cancellation [BZ#12683] Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 01/21] nptl: Do not close the pipe on tst-cancel{2,3} Adhemerval Zanella
2020-04-07 15:24   ` Zack Weinberg
2020-04-07 20:07     ` Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 02/21] nptl: Fix Race conditions in pthread cancellation [BZ#12683] Adhemerval Zanella
2020-04-07 18:24   ` Zack Weinberg
2020-04-08 14:13     ` Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 03/21] nptl: x86_64: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 04/21] nptl: x32: " Adhemerval Zanella
2020-04-03 21:22   ` Joseph Myers
2020-04-07 12:47     ` Adhemerval Zanella
2020-04-07 12:54       ` H.J. Lu
2020-04-07 13:33         ` Adhemerval Zanella
2020-04-07 13:40           ` H.J. Lu
2020-04-07 13:41             ` H.J. Lu
2020-04-07 13:55               ` Adhemerval Zanella
2020-04-07 13:59                 ` H.J. Lu
2020-04-07 14:04                   ` Adhemerval Zanella
2020-04-07 15:45                     ` H.J. Lu
2020-04-07 16:16                       ` Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 05/21] nptl: i386: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 06/21] nptl: ia64: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 07/21] nptl: mips: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 08/21] nptl: aarch64: " Adhemerval Zanella
2020-04-12 15:29   ` Stepan Golosunov
2020-04-15 14:30     ` Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 09/21] nptl: arm: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 10/21] nptl: powerpc: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 11/21] nptl: microblaze: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 12/21] nptl: sparc: " Adhemerval Zanella
2020-04-12 15:33   ` Stepan Golosunov
2020-04-14 16:54     ` Stepan Golosunov
2020-04-15 14:48       ` Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 13/21] nptl: hppa: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 14/21] nptl: m68k: " Adhemerval Zanella
2020-04-03 21:34   ` Andreas Schwab
2020-04-07 12:46     ` Adhemerval Zanella
2020-04-12 15:42   ` Stepan Golosunov
2020-04-15 14:51     ` Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 15/21] nptl: alpha: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 16/21] nptl: sh: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 17/21] nptl: riscv: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 18/21] nptl: s390: " Adhemerval Zanella
2020-04-03 20:31 ` [PATCH v4 19/21] nptl: nios2: " Adhemerval Zanella
2020-04-03 20:32 ` [PATCH v4 20/21] nptl: csky: " Adhemerval Zanella
2020-04-03 20:32 ` [PATCH v4 21/21] Linux: Remove sysdep-cancel header Adhemerval Zanella

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