[Evolution] Evolution hitting the pipe: Too many open files



I've started to see this recently trying to start evolution 2.7.4:


CalDAV Eplugin starting up ...
evolution-shell-Message: Killing old version of evolution-data-server...

(evolution-2.8:2055): camel-WARNING **: camel_exception_get_id called with NULL parameter.

(evolution-2.8:2055): camel-WARNING **: camel_exception_get_id called with NULL parameter.

(evolution-2.8:2055): Gtk-CRITICAL **: gtk_option_menu_set_history: assertion `GTK_IS_OPTION_MENU 
(option_menu)' failed

(evolution-2.8:2055): GLib-WARNING **: GError set over the top of a previous GError or uninitialized memory.
This indicates a bug in someone's code. You must ensure an error is NULL before it's set.
The overwriting error message was: Error opening directory '/home/brian/.evolution/mail/imap/brian linux 
interlinx bc ca/folders/INBOX': Too many open files

and then it craps out.

If I start with --offline and then just change to online mode once it's
started things are working.

Doing some straceing it appears that evolution opens a lot of pipes to
the point where more than 1024 fds are open and hence the EMFILE.

Here's a sample.  This is just a very short snippet in time:


6967  pipe([78, 79])                    = 0
6967  pipe([80, 81])                    = 0
6967  fcntl64(80, F_GETFL)              = 0 (flags O_RDONLY)
6967  fcntl64(80, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
6967  fcntl64(81, F_GETFL)              = 0x1 (flags O_WRONLY)
6967  fcntl64(81, F_SETFL, O_WRONLY|O_NONBLOCK) = 0
6967  write(23, "E", 1)                 = 1
6967  write(25, "E", 1)                 = 1
6967  gettimeofday({1152824998, 791548}, NULL) = 0
6967  pipe([82, 83])                    = 0
6967  pipe([84, 85])                    = 0
6967  fcntl64(84, F_GETFL)              = 0 (flags O_RDONLY)
6967  fcntl64(84, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
6967  fcntl64(85, F_GETFL)              = 0x1 (flags O_WRONLY)
6967  fcntl64(85, F_SETFL, O_WRONLY|O_NONBLOCK) = 0
6967  write(23, "E", 1)                 = 1
6967  write(25, "E", 1)                 = 1
6967  close(63)                         = 0
6967  close(64)                         = 0
6967  close(65)                         = 0
6967  close(66)                         = 0
6967  write(19, "E", 1)                 = 1
6967  write(21, "E", 1)                 = 1
6967  select(35, [34], NULL, NULL, NULL <unfinished ...>
6958  close(46)                         = 0
6958  close(47)                         = 0
6958  close(61)                         = 0
6958  close(62)                         = 0
6958  pipe([46, 47])                    = 0
6958  pipe([61, 62])                    = 0
6958  fcntl64(61, F_GETFL)              = 0 (flags O_RDONLY)
6958  fcntl64(61, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
6958  fcntl64(62, F_GETFL)              = 0x1 (flags O_WRONLY)
6958  fcntl64(62, F_SETFL, O_WRONLY|O_NONBLOCK) = 0
6958  read(18, "E", 1)                  = 1
6958  read(20, "E", 1)                  = 1


This pattern of:

pipe([fd1, fd2])                    = 0
pipe([fd3, fd4])                    = 0
fcntl64(fd3, F_GETFL)              = 0 (flags O_RDONLY)
fcntl64(fd3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
fcntl64(fd4, F_GETFL)              = 0x1 (flags O_WRONLY)
fcntl64(fd4, F_SETFL, O_WRONLY|O_NONBLOCK) = 0

seems to go on a _lot_ with no closing of the gobs and gobs of pipes
being created.

Ideas what's going on?

b.

-- 
My other computer is your Microsoft Windows server.

Brian J. Murrell

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]