[webkit-gtk] 1.4.1 - CLOSE_WAIT

Marco Peereboom slash at peereboom.us
Wed Jun 29 14:43:38 PDT 2011


Ok I captured a few screenshots to illustrate what I see and some
backtraces as well when I push file descriptors well past starvation.
The test I run is always the same.  I open a session which in the
xxxterm browser means "an X number of tabs with links in them".  The
links are:
https://www.cyphertite.com/
http://arstechnica.com/
http://www.wired.com/
http://www.huffingtonpost.com/
http://slashdot.org/
http://www.physorg.com/
http://sportsillustrated.cnn.com/
http://espn.go.com/

about half were rendered correctly and half didn't.

Missing CSS and pictures:
http://opensource.conformal.com/snapshots/tmp/arstechnica.png
http://opensource.conformal.com/snapshots/tmp/cyphertite.png
http://opensource.conformal.com/snapshots/tmp/slashdot.png

Can't resolve hostname:
http://opensource.conformal.com/snapshots/tmp/cnnsi.png
http://opensource.conformal.com/snapshots/tmp/espn.png

Repeating the test of opening 8 tabs at once often leads to crashes as
well.  For example:

#0  0x00000002110c8d7b in WebCore::FontFallbackList::determinePitch () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#1  0x00000002111804be in WebCore::RenderBlock::findNextLineBreak () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#2  0x0000000211181c4c in WebCore::RenderBlock::layoutInlineChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#3  0x0000000211170bf8 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#4  0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#5  0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#6  0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#7  0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#8  0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#9  0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#10 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#11 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#12 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#13 0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#14 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#15 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#16 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#17 0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#18 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#19 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#20 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#21 0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#22 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#23 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#24 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#25 0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#26 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#27 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#28 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#29 0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#30 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#31 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#32 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#33 0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#34 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#35 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#36 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#37 0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#38 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#39 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#40 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#41 0x000000021116e552 in WebCore::RenderBlock::layoutBlockChild () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#42 0x00000002111701b8 in WebCore::RenderBlock::layoutBlockChildren () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#43 0x00000002111711d6 in WebCore::RenderBlock::layoutBlock () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#44 0x0000000211159fbd in WebCore::RenderBlock::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#45 0x0000000211225d6f in WebCore::RenderView::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#46 0x000000021108eeff in WebCore::FrameView::layout () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#47 0x000000021112420a in WebCore::ThreadTimers::sharedTimerFiredInternal () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#48 0x0000000210b04772 in WebCore::timeout_cb () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#49 0x00000002042e2b7b in g_source_get_time () from /usr/local/lib/libglib-2.0.so.2800.0
#50 0x00000002042e2173 in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.2800.0
#51 0x00000002042e6152 in g_main_context_prepare () from /usr/local/lib/libglib-2.0.so.2800.0
#52 0x00000002042e6545 in g_main_loop_run () from /usr/local/lib/libglib-2.0.so.2800.0
#53 0x00000002122efa83 in gtk_main () from /usr/local/lib/libgtk-x11-2.0.so.2400.0
#54 0x0000000000417dc6 in main (argc=0, argv=0x7f7fffff2608) at /home/marco/xxxterm/xxxterm.c:8388

and

#0  0x0000000211e1668c in WebCore::RenderImage::setImageSizeForAltText () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#1  0x0000000211e17399 in WebCore::RenderImage::imageChanged () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#2  0x0000000211c34acf in WebCore::CachedImage::notifyObservers () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#3  0x0000000211c350b5 in WebCore::CachedImage::error () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#4  0x0000000211c3e371 in WebCore::CachedResourceRequest::didFail () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#5  0x0000000211c98c8f in WebCore::SubresourceLoader::didFail () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#6  0x000000021176fdb0 in WebCore::sendRequestCallback () from /usr/local/lib/libwebkitgtk-1.0.so.0.1
#7  0x00000002041d2bb6 in sent_async () from /usr/local/lib/libsoup-2.4.so.3.0
#8  0x00000002041c587b in wrapper_callback () from /usr/local/lib/libsoup-2.4.so.3.0
#9  0x00000002041c5a0e in send_async_finished () from /usr/local/lib/libsoup-2.4.so.3.0
#10 0x00000002064c106f in g_closure_invoke () from /usr/local/lib/libgobject-2.0.so.2800.0
#11 0x00000002064d81e1 in g_signal_handlers_block_matched () from /usr/local/lib/libgobject-2.0.so.2800.0
#12 0x00000002064da0f5 in g_signal_emit_valist () from /usr/local/lib/libgobject-2.0.so.2800.0
#13 0x00000002064da4f3 in g_signal_emit () from /usr/local/lib/libgobject-2.0.so.2800.0
#14 0x00000002041d90e0 in process_queue_item () from /usr/local/lib/libsoup-2.4.so.3.0
#15 0x00000002041d940e in run_queue () from /usr/local/lib/libsoup-2.4.so.3.0
#16 0x00000002041d94b3 in idle_run_queue () from /usr/local/lib/libsoup-2.4.so.3.0
#17 0x0000000201b58173 in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.2800.0
#18 0x0000000201b5c152 in g_main_context_prepare () from /usr/local/lib/libglib-2.0.so.2800.0
#19 0x0000000201b5c545 in g_main_loop_run () from /usr/local/lib/libglib-2.0.so.2800.0
#20 0x0000000202345a83 in gtk_main () from /usr/local/lib/libgtk-x11-2.0.so.2400.0
#21 0x0000000000417dc6 in main (argc=0, argv=0x7f7ffffdb128) at /home/marco/xxxterm/xxxterm.c:8388

As one can see these crashes are all within webkit.

This is with the webkit 1.4.1 snapshot with web sockets enabled.  By
default xxxterm sets max-conns to 25 and max-conns-per-host to 5.  When
webkit doesn't crash I see as many as 119 connections to port 80 in
various states (TIME_WAIT, ESTABLISHED, CLOSED_WAIT, SYN_SENT etc).
After a while the connections drop to 47 and are all in
ESTABLISHED_STATE.  This number is obviously much higher than the limit
that is set to 25.  With webit 1.2.7 I don't see this behavior.

I setup a rig to see if I can narrow it down a bit more but would not
mind some hints if there is something obvious that I am missing.

/marco


More information about the webkit-gtk mailing list