Bug#692721: perdition: Perdition aborts after an accept() error

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Bug#692721: perdition: Perdition aborts after an accept() error

Russell Coker
Package: perdition
Version: 1.19~rc4-2
Severity: normal

The following is an strace of a repeated perdition abort that is happening on
one of my servers.

I presume it's related to something on the Internet because the system has been
running Squeeze for ages without trouble and it's crashed about a dozen times
today without having crashed before.

fcntl(3, F_SETFL, O_RDWR)               = 0
poll([{fd=3, events=POLLIN}], 1, -1)    = 1 ([{fd=3, revents=POLLIN}])
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
accept(3, 0x7fffadc5b900, [128])        = -1 ECONNABORTED (Software caused connection abort)
accept(3, 0x7fffadc5b900, [128])        = -1 EAGAIN (Resource temporarily unavailable)
fcntl(3, F_SETFL, O_RDWR)               = 0
gettimeofday({1352367448, 368675}, NULL) = 0
socket(PF_FILE, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
connect(4, {sa_family=AF_FILE, path="/dev/log"}, 110) = 0
sendto(4, "<131>Nov  8 09:37:28 perdition.imap4[725]: Fatal error accepting child connection. Exiting.\n", 92, MSG_NOSIGNAL, NULL, 0) = 92


-- System Information:
Debian Release: 6.0.6
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-xen-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_AU, LC_CTYPE=en_AU (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/dash

Versions of packages perdition depends on:
ii  libc6                 2.11.3-4           Embedded GNU C Library: Shared lib
ii  libdb4.8              4.8.30-2           Berkeley v4.8 Database Libraries [
ii  libgdbm3              1.8.3-9            GNU dbm database routines (runtime
ii  libidn11              1.15-2             GNU Libidn library, implementation
ii  libpam0g              1.1.1-6.1+squeeze1 Pluggable Authentication Modules l
ii  libpopt0              1.16-1             lib for parsing cmdline parameters
ii  libssl0.9.8           0.9.8o-4squeeze13  SSL shared libraries
ii  libvanessa-adt1       0.0.9-1            Library of Abstract Data Types
ii  libvanessa-logger0    0.0.10-1.1         Generic Logging Library
ii  libvanessa-socket2    0.0.12-1           Library to simplify TCP socket ope

perdition recommends no packages.

Versions of packages perdition suggests:
pn  perdition-ldap                <none>     (no description available)
ii  perdition-mysql               1.19~rc4-2 Library to allow perdition to acce
pn  perdition-odbc                <none>     (no description available)
pn  perdition-postgresql          <none>     (no description available)

-- Configuration Files:
/etc/default/perdition changed:
RUN_PERDITION=yes
FLAGS=--no_bind_banner
POP3=yes
POP3_FLAGS="-t 600"
POP3S=yes
POP3S_FLAGS="-t 600 --ssl_mode=ssl_listen --outgoing_port=110"
IMAP4=yes
IMAP4_FLAGS=
IMAP4S=yes
IMAP4S_FLAGS="--ssl_mode=ssl_listen --outgoing_port=143"
MANAGESIEVE=yes
MANAGESIEVE_FLAGS=

/etc/perdition/perdition.conf changed:
authenticate_timeout 120
domain_delimiter :
log_facility local0
group perdition
imap_capability IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS UIDPLUS LIST-EXTENDED I18NLEVEL=1 QUOTA
"\"IMPLEMENTATION\" \"perdition\"  "\
"\"SIEVE\" \"comparator-i;octet "\
"comparator-i;ascii-casemap "\
"fileinto "\
"reject "\
"envelope "\
"encoded-character "\
"vacation "\
"subaddress "\
"comparator-i;ascii-numeric "\
"relational "\
"regex "\
"imap4flags "\
"copy i"\
"nclude "\
"variables "\
"body "\
"enotify "\
"environment "\
"mailbox "\
"date\"  "\
"\"SASL\" \"PLAIN\"  "\
"\"NOTIFY\" \"mailto\"  "\
"\"VERSION\" \"1.18\""
connection_limit 0
lower_case all
map_library /usr/lib/libperditiondb_mysql.so.0
map_library_opt "db2:3306:bluebottle:map:perdition:nuchohB2"
timeout 3600
username perdition
ssl_ca_chain_file /etc/ssl/certs/RapidSSL_CA_bundle.pem
ssl_ca_path /etc/perdition/
ssl_cert_file /etc/ssl/certs/20110822-star.bluebottle.com.crt
ssl_cert_accept_expired
ssl_cert_verify_depth 9
ssl_key_file /etc/ssl/certs/20110822-star.bluebottle.com.key
ssl_no_cn_verify


-- no debconf information


--
To UNSUBSCRIBE, email to [hidden email]
with a subject of "unsubscribe". Trouble? Contact [hidden email]

Reply | Threaded
Open this post in threaded view
|

Bug#692721: perdition: Perdition aborts after an accept() error

Simon Horman
On Thu, Nov 08, 2012 at 09:52:02AM +0000, Russell Coker wrote:

> Package: perdition
> Version: 1.19~rc4-2
> Severity: normal
>
> The following is an strace of a repeated perdition abort that is happening on
> one of my servers.
>
> I presume it's related to something on the Internet because the system has been
> running Squeeze for ages without trouble and it's crashed about a dozen times
> today without having crashed before.
>
> fcntl(3, F_SETFL, O_RDWR)               = 0
> poll([{fd=3, events=POLLIN}], 1, -1)    = 1 ([{fd=3, revents=POLLIN}])
> fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
> fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
> accept(3, 0x7fffadc5b900, [128])        = -1 ECONNABORTED (Software caused connection abort)
> accept(3, 0x7fffadc5b900, [128])        = -1 EAGAIN (Resource temporarily unavailable)
> fcntl(3, F_SETFL, O_RDWR)               = 0
> gettimeofday({1352367448, 368675}, NULL) = 0
> socket(PF_FILE, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
> connect(4, {sa_family=AF_FILE, path="/dev/log"}, 110) = 0
> sendto(4, "<131>Nov  8 09:37:28 perdition.imap4[725]: Fatal error accepting child connection. Exiting.\n", 92, MSG_NOSIGNAL, NULL, 0) = 92

It looks like a good way forward would be to simply jump back to the top of
the main loop if accept() fails and errno is EAGAIN or ECONNABORTED.  Do
you think there are any other errno values that should also be ignored?

> -- System Information:
> Debian Release: 6.0.6
>   APT prefers stable
>   APT policy: (500, 'stable')
> Architecture: amd64 (x86_64)
>
> Kernel: Linux 2.6.32-5-xen-amd64 (SMP w/4 CPU cores)
> Locale: LANG=en_AU, LC_CTYPE=en_AU (charmap=ISO-8859-1)
> Shell: /bin/sh linked to /bin/dash
>
> Versions of packages perdition depends on:
> ii  libc6                 2.11.3-4           Embedded GNU C Library: Shared lib
> ii  libdb4.8              4.8.30-2           Berkeley v4.8 Database Libraries [
> ii  libgdbm3              1.8.3-9            GNU dbm database routines (runtime
> ii  libidn11              1.15-2             GNU Libidn library, implementation
> ii  libpam0g              1.1.1-6.1+squeeze1 Pluggable Authentication Modules l
> ii  libpopt0              1.16-1             lib for parsing cmdline parameters
> ii  libssl0.9.8           0.9.8o-4squeeze13  SSL shared libraries
> ii  libvanessa-adt1       0.0.9-1            Library of Abstract Data Types
> ii  libvanessa-logger0    0.0.10-1.1         Generic Logging Library
> ii  libvanessa-socket2    0.0.12-1           Library to simplify TCP socket ope
>
> perdition recommends no packages.
>
> Versions of packages perdition suggests:
> pn  perdition-ldap                <none>     (no description available)
> ii  perdition-mysql               1.19~rc4-2 Library to allow perdition to acce
> pn  perdition-odbc                <none>     (no description available)
> pn  perdition-postgresql          <none>     (no description available)
>
> -- Configuration Files:
> /etc/default/perdition changed:
> RUN_PERDITION=yes
> FLAGS=--no_bind_banner
> POP3=yes
> POP3_FLAGS="-t 600"
> POP3S=yes
> POP3S_FLAGS="-t 600 --ssl_mode=ssl_listen --outgoing_port=110"
> IMAP4=yes
> IMAP4_FLAGS=
> IMAP4S=yes
> IMAP4S_FLAGS="--ssl_mode=ssl_listen --outgoing_port=143"
> MANAGESIEVE=yes
> MANAGESIEVE_FLAGS=
>
> /etc/perdition/perdition.conf changed:
> authenticate_timeout 120
> domain_delimiter :
> log_facility local0
> group perdition
> imap_capability IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS UIDPLUS LIST-EXTENDED I18NLEVEL=1 QUOTA
> "\"IMPLEMENTATION\" \"perdition\"  "\
> "\"SIEVE\" \"comparator-i;octet "\
> "comparator-i;ascii-casemap "\
> "fileinto "\
> "reject "\
> "envelope "\
> "encoded-character "\
> "vacation "\
> "subaddress "\
> "comparator-i;ascii-numeric "\
> "relational "\
> "regex "\
> "imap4flags "\
> "copy i"\
> "nclude "\
> "variables "\
> "body "\
> "enotify "\
> "environment "\
> "mailbox "\
> "date\"  "\
> "\"SASL\" \"PLAIN\"  "\
> "\"NOTIFY\" \"mailto\"  "\
> "\"VERSION\" \"1.18\""
> connection_limit 0
> lower_case all
> map_library /usr/lib/libperditiondb_mysql.so.0
> map_library_opt "db2:3306:bluebottle:map:perdition:nuchohB2"
> timeout 3600
> username perdition
> ssl_ca_chain_file /etc/ssl/certs/RapidSSL_CA_bundle.pem
> ssl_ca_path /etc/perdition/
> ssl_cert_file /etc/ssl/certs/20110822-star.bluebottle.com.crt
> ssl_cert_accept_expired
> ssl_cert_verify_depth 9
> ssl_key_file /etc/ssl/certs/20110822-star.bluebottle.com.key
> ssl_no_cn_verify
>
>
> -- no debconf information
>


--
To UNSUBSCRIBE, email to [hidden email]
with a subject of "unsubscribe". Trouble? Contact [hidden email]

Reply | Threaded
Open this post in threaded view
|

Bug#692721: perdition: Perdition aborts after an accept() error

Russell Coker
On Fri, 9 Nov 2012, Simon Horman <[hidden email]> wrote:
> It looks like a good way forward would be to simply jump back to the top of
> the main loop if accept() fails and errno is EAGAIN or ECONNABORTED.  Do
> you think there are any other errno values that should also be ignored?

That sounds reasonable.  I don't know about other errno values.

Also my server has stopped crashing, I don't know why.  So I won't be able to
properly test this, sorry.

--
My Main Blog         http://etbe.coker.com.au/
My Documents Blog    http://doc.coker.com.au/


--
To UNSUBSCRIBE, email to [hidden email]
with a subject of "unsubscribe". Trouble? Contact [hidden email]