Package: icedove
Version: 38.3.0-2
Followup-For: Bug #733047

Hi,

Icedove with iceowl is also very slow for me. Initially it runs smoothly, but
after a few hours it turns very slow.

Here is the output I get from running perf:


Samples: 53M of event 'cycles', Event count (approx.): 15937846751
Overhead  Shared Object                       Symbol
◆
   9.65%  libxul.so                           [.]
PLDHashTable::SearchTable<(PLDHashTable::SearchReason)1>             ▒
   5.10%  libxul.so                           [.]
GraphWalker<ScanBlackVisitor>::DoWalk                                ▒
   4.16%  libxul.so                           [.] js::GCThingTraceKind
▒
   3.94%  libxul.so                           [.] NoteJSChild
▒
   3.93%  libxul.so                           [.] PLDHashTable::FindFreeEntry
▒
   2.01%  libxul.so                           [.] PtrToNodeMatchEntry
▒
   1.91%  libxul.so                           [.] NoteJSChildTracerShim
▒
   1.73%  libxul.so                           [.]
mozilla::CycleCollectedJSRuntime::TraverseGCThing                    ▒
   1.58%  libxul.so                           [.] CanonicalizeXPCOMParticipant
▒
   1.32%  libxul.so                           [.] GCThingIsGrayCCThing
▒
   1.30%  libxul.so                           [.] PL_DHashClearEntryStub
▒
   1.25%  libxul.so                           [.] PL_DHashMoveEntryStub
▒
   1.20%  [kernel]                            [k] native_read_tsc
▒
   1.10%  libxul.so                           [.]
mozilla::dom::FragmentOrElement::cycleCollection::Traverse           ▒
   1.03%  libxul.so                           [.]
nsAttrAndChildArray::AttrSlotCount                                   ▒
   0.97%  [nvidia]                            [k] 0x00000000004ac823
▒
   0.93%  [kernel]                            [k] delay_tsc
▒
   0.90%  libxul.so                           [.] CCGraphBuilder::AddNode
▒
   0.74%  libxul.so                           [.] PLDHashTable::ChangeTable
▒
   0.72%  libxul.so                           [.] js::gc::MarkObjectSlots
▒
   0.71%  libxul.so                           [.] PL_DHashTableFinish
▒
   0.66%  libxul.so                           [.]
js::gc::MarkCycleCollectorChildren                                   ▒
   0.60%  libxul.so                           [.] JS::GCCellPtr::outOfLineKind
▒
   0.56%  libxul.so                           [.] PL_DHashTableAdd
▒
   0.54%  libxul.so                           [.] CCGraphBuilder::BuildGraph
▒
   0.50%  libxul.so                           [.] JSScript::markChildren
▒
   0.49%  libxul.so                           [.] nsACString_internal::Assign
▒
   0.46%  [unknown]                           [.] 0x00007fffefa1234b
▒
   0.46%  libxul.so                           [.] nsINode::GetUncomposedDoc
▒
   0.45%  [kernel]                            [k] pci_conf1_read
▒
   0.44%  libxul.so                           [.]
PLDHashTable::SearchTable<(PLDHashTable::SearchReason)0>             ▒
   0.43%  [kernel]                            [k] _raw_spin_lock_irqsave
▒
   0.42%  perf_4.2                            [.] 0x00000000000e97f6
▒
   0.41%  perf_4.2                            [.] 0x0000000000081027
▒
   0.37%  libc-2.19.so                        [.] __strcmp_sse2_unaligned
▒
   0.35%  libxul.so                           [.]
mozilla::EventListenerManager::cycleCollection::Traverse             ▒
   0.35%  [kernel]                            [k] sock_poll
▒
   0.34%  libxul.so                           [.] nsWrapperCache::TraceWrapper
▒
   0.34%  libxul.so                           [.] nsDeque::Push
▒
   0.34%  libglib-2.0.so.0.4600.2             [.] g_hash_table_lookup
▒
   0.34%  libxul.so                           [.]
CCGraphBuilder::NoteXPCOMChild                                       ▒
   0.32%  libxul.so                           [.] nsWrapperCache::IsBlack
▒
   0.32%  libxul.so                           [.]
mozilla::dom::CallbackObject::cycleCollection::Traverse              ▒
   0.31%  libxul.so                           [.] CCGraphBuilder::NoteJSChild
▒
   0.31%  libxul.so                           [.]
mozilla::dom::FragmentOrElement::nsDOMSlots::Traverse                ▒
   0.31%  libc-2.19.so                        [.] _int_malloc
▒
   0.30%  [kernel]                            [k] clear_page
▒
   0.29%  libxul.so                           [.] CCGraphBuilder::NoteChild
▒
   0.28%  libxul.so                           [.] ReleaseData
▒
   0.28%  libxul.so                           [.]
CheckParticipatesInCycleCollection                                   ▒
   0.28%  libxul.so                           [.] nsINode::nsSlots::Traverse
▒
   0.28%  libxul.so                           [.]
nsACString_internal::SetCapacity                                     ▒
   0.27%  libxul.so                           [.] nsINode::UnoptimizableCCNode
▒
   0.27%  libxul.so                           [.]
mozilla::dom::CallbackObject::cycleCollection::Trace                 ▒
   0.26%  [kernel]                            [k] page_fault
▒
   0.26%  libxul.so                           [.]
nsCycleCollector::ScanWhiteNodes                                     ▒
   0.23%  [vdso]                              [.] __vdso_gettimeofday
▒
For a higher level overview, try: perf top --sort comm,dso


The strace of file operations only shows:
        1. The following lines repeated during the whole execution:

                20919 lstat("/usr/lib/icedove/extensions/{e2fda1a4-762b-4020
-b5ad-a41df1933103}/modules/calAlarmUtils.jsm", {st_mode=S_IFREG|0644,
st_size=7035, ...}) = 0
                20919 lstat("/usr/lib/icedove/extensions/{e2fda1a4-762b-4020
-b5ad-a41df1933103}/modules/calUtils.jsm", {st_mode=S_IFREG|0644,
st_size=30523, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0

        2. Bursts like the following:

                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0
                20919 stat("/etc/localtime", {st_mode=S_IFREG|0644,
st_size=2593, ...}) = 0

        3. The following lines repeated every second:
                20943 access("applications", R_OK|X_OK) = -1 ENOENT (No such
file or directory)
                20943 access(".", R_OK|X_OK)            = 0

When I select a message to display it and iceweasel gets unresponsive for
several seconds, strace does not show any file activity, but as the message
gets displayed, strace emits lots of entries:
        1. Apparently it looks up "gedit" in the PATH twice:
                20919 open("/home/jm/.mailcap", O_RDONLY) = 62
                20919 open("/home/jm/.mime.types", O_RDONLY) = 62
                20919 open("/etc/mime.types", O_RDONLY) = 62
                20919 open("/usr/share/applications/org.gnome.gedit.desktop",
O_RDONLY) = 62
                20919 access("/home/jm/perl5/bin/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/opt/atom-git/bin/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/opt/watchman-git/bin/gedit", X_OK) = -1 ENOENT
(No such file or directory)
                20919 access("/opt/mcxx-universal/bin/gedit", X_OK) = -1 ENOENT
(No such file or directory)
                20919 access("/opt/mrnet/bin/gedit", X_OK) = -1 ENOENT (No such
file or directory)
                20919 access("/opt/gasnet/bin/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/opt/extrae/bin/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/usr/lib/ccache/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/home/jm/bin/gedit", X_OK) = -1 ENOENT (No such
file or directory)
                20919 access("/usr/local/bin/gedit", X_OK) = -1 ENOENT (No such
file or directory)
                20919 access("/usr/bin/gedit", X_OK)    = 0
                20919 stat("/usr/bin/gedit", {st_mode=S_IFREG|0755,
st_size=10344, ...}) = 0

                20919 open("/usr/share/applications/org.gnome.gedit.desktop",
O_RDONLY) = 62

                20919 access("/home/jm/perl5/bin/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/opt/atom-git/bin/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/opt/watchman-git/bin/gedit", X_OK) = -1 ENOENT
(No such file or directory)
                20919 access("/opt/mcxx-universal/bin/gedit", X_OK) = -1 ENOENT
(No such file or directory)
                20919 access("/opt/mrnet/bin/gedit", X_OK) = -1 ENOENT (No such
file or directory)
                20919 access("/opt/gasnet/bin/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/opt/extrae/bin/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/usr/lib/ccache/gedit", X_OK) = -1 ENOENT (No
such file or directory)
                20919 access("/home/jm/bin/gedit", X_OK) = -1 ENOENT (No such
file or directory)
                20919 access("/usr/local/bin/gedit", X_OK) = -1 ENOENT (No such
file or directory)
                20919 access("/usr/bin/gedit", X_OK)    = 0
                20919 stat("/usr/bin/gedit", {st_mode=S_IFREG|0755,
st_size=10344, ...}) = 0
        2. Then for "kate":
                20919 access("/usr/bin/kate", F_OK)     = 0

        3. Then stat calls for every possible configuration file related to
fontconfig and every font directory

        4. And finally it accesses the fonts:
                20919 access("/usr/share/fonts/truetype/ubuntu-font-
family/Ubuntu-R.ttf", R_OK) = 0
                20919 access("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
R_OK) = 0
                20919 open("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
O_RDONLY) = 62
                20919 open("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
O_RDONLY) = 62
                20919 open("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
O_RDONLY) = 62


I hope this can help in diagnosing the problem.

Cheers,
Josep M. Perez



-- System Information:
Debian Release: stretch/sid
  APT prefers unstable
  APT policy: (990, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.2.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)

Versions of packages icedove depends on:
ii  debianutils               4.5.1
ii  fontconfig                2.11.0-6.3
ii  libasound2                1.0.29-1
ii  libatk1.0-0               2.18.0-1
ii  libc6                     2.19-22
ii  libcairo2                 1.14.4-1
ii  libdbus-1-3               1.10.4-1
ii  libdbus-glib-1-2          0.102-1
ii  libevent-2.0-5            2.0.21-stable-2+b1
ii  libffi6                   3.2.1-3
ii  libfontconfig1            2.11.0-6.3
ii  libfreetype6              2.6-2
ii  libgcc1                   1:5.2.1-23
ii  libgdk-pixbuf2.0-0        2.32.2-1
ii  libglib2.0-0              2.46.2-1
ii  libgtk2.0-0               2.24.28-1
ii  libhunspell-1.3-0         1.3.3-3+b1
ii  libnspr4                  2:4.10.10-1
ii  libnss3                   2:3.20.1-1
ii  libpango-1.0-0            1.38.1-1
ii  libpangocairo-1.0-0       1.38.1-1
ii  libpangoft2-1.0-0         1.38.1-1
ii  libpixman-1-0             0.33.4-1
ii  libsqlite3-0              3.9.2-1
ii  libstartup-notification0  0.12-4
ii  libstdc++6                5.2.1-23
ii  libvpx2                   1.4.0-4
ii  libx11-6                  2:1.6.3-1
ii  libxcomposite1            1:0.4.4-1
ii  libxdamage1               1:1.1.4-2+b1
ii  libxext6                  2:1.3.3-1
ii  libxfixes3                1:5.0.1-2+b2
ii  libxrender1               1:0.9.9-2
ii  libxt6                    1:1.1.5-1
ii  psmisc                    22.21-2.1
ii  zlib1g                    1:1.2.8.dfsg-2+b1

Versions of packages icedove recommends:
ii  hunspell-en-gb [hunspell-dictionary]  1:5.0.3-1
ii  hunspell-en-us [hunspell-dictionary]  20070829-6
ii  hunspell-sv-se [hunspell-dictionary]  1.51-1
ii  iceowl-extension                      38.3.0-2
ii  myspell-ca [myspell-dictionary]       0.20111230b-9
ii  myspell-de-de [myspell-dictionary]    20131206-6
ii  myspell-es [myspell-dictionary]       1.11-14

Versions of packages icedove suggests:
ii  fonts-lyx         2.1.4-2
ii  libgssapi-krb5-2  1.13.2+dfsg-4

-- no debconf information

Reply via email to