Bug 119151 - Evolution hangs sometimes when reading mail
Summary: Evolution hangs sometimes when reading mail
Status: UNCONFIRMED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebCore Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-26 09:40 PDT by Kjartan Maraas
Modified: 2014-07-22 03:17 PDT (History)
7 users (show)

See Also:


Attachments
Log from gdb (16.81 KB, text/plain)
2013-07-26 09:41 PDT, Kjartan Maraas
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kjartan Maraas 2013-07-26 09:40:31 PDT
I filed this in GNOME's bugzilla, but they wanted me to file it here as well since it looks like a problem in WebCore.

Attaching a backtrace from gdb when Evolution hangs. It happens at random points when scrolling through the message list and reading messages. Mostly on messages of some size that take some time to render.
Comment 1 Kjartan Maraas 2013-07-26 09:41:15 PDT
Created attachment 207534 [details]
Log from gdb
Comment 2 Martin Robinson 2013-07-26 12:52:44 PDT
Hrm. I see a few garbage collection threads. I'm not sure if that's an issue or not. The other thing I see is a thread blocked in WebCore::IconDatabase::syncThreadMainLoop. Does evolution use the icon database?
Comment 3 Kjartan Maraas 2013-07-27 03:15:25 PDT
Trying to get an answer for you from the evolution developers.
Comment 4 Matthew Barnes 2013-07-27 06:14:54 PDT
(In reply to comment #2)
> Does evolution use the icon database?

There are no webkit_icon_database_* calls in Evolution.
Comment 5 Kjartan Maraas 2013-10-19 06:39:01 PDT
Got this again today with the following backtrace:

#0  0x0000003dd4c181b9 in isAnonymousBlock (this=0x7fbf9874e7f0)
    at Source/WebCore/rendering/RenderObject.h:510
#1  WebCore::AccessibilityObject::accessibilityPlatformIncludesObject (
    this=this@entry=0x7fbfc0d495a0)
    at Source/WebCore/accessibility/atk/AccessibilityObjectAtk.cpp:96
#2  0x0000003dd3c6ee70 in WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase (this=this@entry=0x7fbfc0d495a0)
    at Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1116
#3  0x0000003dd3c76902 in WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored (this=0x7fbfc0d495a0)
    at Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1134
#4  0x0000003dd3c7d5c4 in WebCore::AXObjectCache::notificationPostTimerFired (
    this=0x7fbfc0d01900) at Source/WebCore/accessibility/AXObjectCache.cpp:647
#5  0x0000003dd4aeb319 in WebCore::ThreadTimers::sharedTimerFiredInternal (
    this=0x7fc03827bf30) at Source/WebCore/platform/ThreadTimers.cpp:129
#6  0x0000003dd4c5b322 in WebCore::timeout_cb ()
    at Source/WebCore/platform/gtk/SharedTimerGtk.cpp:49
#7  0x0000003e10e48963 in g_timeout_dispatch (source=source@entry=0x409ecb0, 
    callback=<optimized out>, user_data=<optimized out>) at gmain.c:4413
#8  0x0000003e10e47e06 in g_main_dispatch (context=0x1df1d90) at gmain.c:3054
#9  g_main_context_dispatch (context=context@entry=0x1df1d90) at gmain.c:3630
#10 0x0000003e10e48158 in g_main_context_iterate (context=0x1df1d90, 
    block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
---Type <return> to continue, or q <return> to quit---
    at gmain.c:3701
#11 0x0000003e10e4855a in g_main_loop_run (loop=0x2f3f620) at gmain.c:3895
#12 0x0000003dd218a53d in gtk_main () at gtkmain.c:1156
#13 0x00000000004038b9 in main (argc=1, argv=0x7fff8198db88) at main.c:707
Comment 6 Kjartan Maraas 2013-10-19 06:39:53 PDT
Evolution was trying to render a large message.
Comment 7 Sergio Villar Senin 2013-10-21 02:09:08 PDT
Mario is the a11y expert
Comment 8 Mario Sanchez Prada 2013-10-21 02:32:00 PDT
Which is the specific version of WebKitGTK+ you are using? Also, a link to the bug in GNOME's bugzilla might be helpful too.

The code in WebCore's a11y layer has slightly changed lately and it's for me hard to figure out what might be going wrong here without more context. For instance, the AccessibilityRenderObject::accessibilityIsIgnoredBase that you have in the last backtrace is no longer there anymore...

Thanks in advance for taking your time to report this
Comment 9 Kjartan Maraas 2013-10-21 09:18:36 PDT
webkitgtk-2.0.4-3.fc20.x86_64

I didn't file it in GNOME bugzilla because they pointed me here instead.
Comment 10 Kjartan Maraas 2013-11-14 09:28:35 PST
I got another similar one today while rendering a .po file:

(gdb) bt full
#0  0x00000034d6532329 in isAnonymousBlock (this=0x7f2b06c12aa8)
    at Source/WebCore/rendering/RenderObject.h:528
No locals.
#1  WebCore::AccessibilityObject::accessibilityPlatformIncludesObject (this=
    0x7f2b07305d68)
    at Source/WebCore/accessibility/atk/AccessibilityObjectAtk.cpp:96
        r = 0x7f2b06c12aa8
        parent = 0x7f2b06d39840
        role = <optimized out>
#2  0x00000034d5737c76 in WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored (this=0x7f2b07305d68)
    at Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1122
        decision = <optimized out>
#3  0x00000034d573e76a in WebCore::AXObjectCache::notificationPostTimerFired (
    this=0x7f2b92fa9f00) at Source/WebCore/accessibility/AXObjectCache.cpp:660
        notification = <optimized out>
        protectorForCacheOwner = {m_ptr = 0x7f2b06f0e400}
        i = 27778
        count = 267854
#4  0x00000034d56f7ad9 in WebCore::ThreadTimers::sharedTimerFiredInternal (
    this=0x7f2ba1286be0) at Source/WebCore/platform/ThreadTimers.cpp:129
        timer = 0x7f2b92fa9fa0
        fireTime = 41359.387635999999
---Type <return> to continue, or q <return> to quit---
        timeToQuit = 41359.437636000002
#5  0x00000034d570c6b2 in WebCore::timeout_cb ()
    at Source/WebCore/platform/gtk/SharedTimerGtk.cpp:49
No locals.
#6  0x00000033fd049e03 in g_timeout_dispatch (source=source@entry=0x830b5d0, 
    callback=<optimized out>, user_data=<optimized out>) at gmain.c:4450
        timeout_source = 0x830b5d0
        again = <optimized out>
#7  0x00000033fd049266 in g_main_dispatch (context=0xdcf510) at gmain.c:3065
        dispatch = 0x33fd049df0 <g_timeout_dispatch>
        was_in_call = 0
        user_data = 0x0
        callback = 0x34d570c6a0 <WebCore::timeout_cb(gpointer)>
        cb_funcs = 0x33fd32a8e0 <g_source_callback_funcs>
        cb_data = 0x7f25760
        need_destroy = <optimized out>
        current_source_link = {data = 0x830b5d0, next = 0x0}
        source = 0x830b5d0
        current = 0xdee420
        i = 1
#8  g_main_context_dispatch (context=context@entry=0xdcf510) at gmain.c:3641
No locals.
#9  0x00000033fd0495e8 in g_main_context_iterate (context=0xdcf510, 
---Type <return> to continue, or q <return> to quit---
    block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at gmain.c:3712
        max_priority = 120
        timeout = 0
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = 4
        fds = 0x3bfedf0
#10 0x00000033fd0499fa in g_main_loop_run (loop=0x371a400) at gmain.c:3906
        __PRETTY_FUNCTION__ = "g_main_loop_run"
#11 0x00000034d13a9e85 in gtk_main () at gtkmain.c:1158
        loop = 0x371a400
#12 0x000000000040377f in main (argc=1, argv=0x7fff184aa6f8) at main.c:683
        shell = 0xf54140
        settings = <optimized out>
        error = 0x0
(gdb)
Comment 11 Kjartan Maraas 2013-11-14 09:29:19 PST
webkitgtk-2.2.1-1.fc20.x86_64 on FC 20 Alpha. Upgrading to 2.2.2 now so I'll keep an eye on this after that.
Comment 12 Kjartan Maraas 2014-07-22 03:16:11 PDT
Evolution still hangs when rendering large messages. Now there are no traces of Accessibility calls in the backtrace:

 #0 WebCore::Style::nextSiblingRenderer(WebCore::Text const&)
#1 WebCore::Style::createTextRendererIfNeeded(WebCore::Text&)
#2 WebCore::Style::attachChildren(WebCore::ContainerNode&)
#3 WebCore::Style::attachRenderTree(WebCore::Element&, WTF::PassRefPtr<WebCore::RenderStyle>)
#4 WebCore::Style::attachChildren(WebCore::ContainerNode&)
#5 WebCore::Style::attachRenderTree(WebCore::Element&, WTF::PassRefPtr<WebCore::RenderStyle>)
#6 WebCore::Style::attachChildren(WebCore::ContainerNode&)
#7 WebCore::Style::attachRenderTree(WebCore::Element&, WTF::PassRefPtr<WebCore::RenderStyle>)
#8 WebCore::Style::resolveTree(WebCore::Element&, WebCore::Style::Change)
#9 WebCore::Style::resolveTree(WebCore::Document&, WebCore::Style::Change)
#10 WebCore::Document::recalcStyle(WebCore::Style::Change)
#11 WebCore::Document::updateStyleIfNeeded()
#12 WebCore::Document::finishedParsing()
#13 WebCore::HTMLDocumentParser::prepareToStopParsing()
#14 WebCore::HTMLDocumentParser::finish()
#15 WebCore::DocumentWriter::end()
#16 WebCore::DocumentLoader::finishedLoading(double)
#17 WebCore::CachedResource::checkNotify()
#18 WebCore::CachedRawResource::finishLoading(WebCore::ResourceBuffer*)
#19 WebCore::SubresourceLoader::didFinishLoading(double)
#20 WebCore::readCallback(_GObject*, _GAsyncResult*, void*)
#21 async_ready_callback_wrapper
at ginputstream.c line 523
#22 g_task_return_now
at gtask.c line 1077
#23 complete_in_idle_cb
at gtask.c line 1086
#24 g_main_context_dispatch
at gmain.c line 3064
#25 g_main_context_dispatch
at gmain.c line 3663
#26 g_main_context_iterate
at gmain.c line 3734
#27 g_main_loop_run
at gmain.c line 3928
#28 gtk_main
at gtkmain.c line 1206
 #29 main
at main.c line 685
Comment 13 Kjartan Maraas 2014-07-22 03:17:40 PDT
This is version 2.4.4 btw.