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