After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 705742 - Implement rate limiting in AvatarCache.store_avatar()
Implement rate limiting in AvatarCache.store_avatar()
Status: RESOLVED FIXED
Product: folks
Classification: Platform
Component: general
0.9.x
Other Linux
: Normal critical
: 0.12.x
Assigned To: folks-maint
folks-maint
Depends on:
Blocks:
 
 
Reported: 2013-08-09 20:24 UTC by Maciej (Matthew) Piechotka
Modified: 2014-04-07 20:02 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
core: Rate-limit AvatarCache.store_avatar() to prevent FD exhaustion (7.29 KB, patch)
2014-04-06 10:17 UTC, Philip Withnall
none Details | Review
core: Rate-limit AvatarCache.store_avatar() to prevent FD exhaustion (7.73 KB, patch)
2014-04-06 10:23 UTC, Philip Withnall
committed Details | Review

Description Maciej (Matthew) Piechotka 2013-08-09 20:24:05 UTC
Empathy can sometimes crash during startup due to too many files. I guess it might be due to slow I/O:

warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `empathy'.
Program terminated with signal 5, Trace/breakpoint trap.

Thread 31 (Thread 0x7f0ca7fff700 (LWP 1638))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 open
    at /usr/include/bits/fcntl2.h line 59
  • #2 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1141
  • #3 g_local_file_replace
    at glocalfile.c line 1416
  • #4 replace_async_thread
    at gfile.c line 5498
  • #5 g_task_thread_pool_thread
    at gtask.c line 1242
  • #6 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #7 g_thread_proxy
    at gthread.c line 798
  • #8 start_thread
    at pthread_create.c line 308
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 30 (Thread 0x7f0ca4ff9700 (LWP 1644))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 open
    at /usr/include/bits/fcntl2.h line 59
  • #2 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1141
  • #3 g_local_file_replace
    at glocalfile.c line 1416
  • #4 replace_async_thread
    at gfile.c line 5498
  • #5 g_task_thread_pool_thread
    at gtask.c line 1242
  • #6 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #7 g_thread_proxy
    at gthread.c line 798
  • #8 start_thread
    at pthread_create.c line 308
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 29 (Thread 0x7f0c87fff700 (LWP 1645))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 open
    at /usr/include/bits/fcntl2.h line 59
  • #2 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1141
  • #3 g_local_file_replace
    at glocalfile.c line 1416
  • #4 replace_async_thread
    at gfile.c line 5498
  • #5 g_task_thread_pool_thread
    at gtask.c line 1242
  • #6 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #7 g_thread_proxy
    at gthread.c line 798
  • #8 start_thread
    at pthread_create.c line 308
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 28 (Thread 0x7f0ca57fa700 (LWP 1643))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 open
    at /usr/include/bits/fcntl2.h line 59
  • #2 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1141
  • #3 g_local_file_replace
    at glocalfile.c line 1416
  • #4 replace_async_thread
    at gfile.c line 5498
  • #5 g_task_thread_pool_thread
    at gtask.c line 1242
  • #6 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #7 g_thread_proxy
    at gthread.c line 798
  • #8 start_thread
    at pthread_create.c line 308
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 27 (Thread 0x7f0ca5ffb700 (LWP 1642))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 open
    at /usr/include/bits/fcntl2.h line 59
  • #2 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1141
  • #3 g_local_file_replace
    at glocalfile.c line 1416
  • #4 replace_async_thread
    at gfile.c line 5498
  • #5 g_task_thread_pool_thread
    at gtask.c line 1242
  • #6 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #7 g_thread_proxy
    at gthread.c line 798
  • #8 start_thread
    at pthread_create.c line 308
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 26 (Thread 0x7f0c86ffd700 (LWP 1647))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 get_tmp_file
    at gfileutils.c line 1323
  • #2 g_mkstemp_full
    at gfileutils.c line 1455
  • #3 handle_overwrite_open
    at glocalfileoutputstream.c line 904
  • #4 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1146
  • #5 g_local_file_replace
    at glocalfile.c line 1416
  • #6 replace_async_thread
    at gfile.c line 5498
  • #7 g_task_thread_pool_thread
    at gtask.c line 1242
  • #8 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #9 g_thread_proxy
    at gthread.c line 798
  • #10 start_thread
    at pthread_create.c line 308
  • #11 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 25 (Thread 0x7f0ca6ffd700 (LWP 1640))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 get_tmp_file
    at gfileutils.c line 1323
  • #2 g_mkstemp_full
    at gfileutils.c line 1455
  • #3 handle_overwrite_open
    at glocalfileoutputstream.c line 904
  • #4 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1146
  • #5 g_local_file_replace
    at glocalfile.c line 1416
  • #6 replace_async_thread
    at gfile.c line 5498
  • #7 g_task_thread_pool_thread
    at gtask.c line 1242
  • #8 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #9 g_thread_proxy
    at gthread.c line 798
  • #10 start_thread
    at pthread_create.c line 308
  • #11 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 24 (Thread 0x7f0ca77fe700 (LWP 1639))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 open
    at /usr/include/bits/fcntl2.h line 59
  • #2 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1141
  • #3 g_local_file_replace
    at glocalfile.c line 1416
  • #4 replace_async_thread
    at gfile.c line 5498
  • #5 g_task_thread_pool_thread
    at gtask.c line 1242
  • #6 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #7 g_thread_proxy
    at gthread.c line 798
  • #8 start_thread
    at pthread_create.c line 308
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 8 (Thread 0x7f0cfee00900 (LWP 1586))

  • #0 __GI__IO_default_xsputn
    at genops.c line 448
  • #1 _IO_vfprintf_internal
    at vfprintf.c line 1629
  • #2 __GI___vasprintf_chk
    at vasprintf_chk.c line 66
  • #3 vasprintf
    at /usr/include/bits/stdio2.h line 210
  • #4 g_vasprintf
    at gprintf.c line 314
  • #5 g_strdup_vprintf
    at gstrfuncs.c line 517
  • #6 g_logv
    at gmessages.c line 878
  • #7 g_log
    at gmessages.c line 1010
  • #8 ____lambda8_
    at edsf-persona.c line 5026
  • #9 _____lambda8__gasync_ready_callback
    at edsf-persona.c line 5042
  • #10 g_simple_async_result_complete
    at gsimpleasyncresult.c line 777
  • #11 folks_avatar_cache_store_avatar_co
    at avatar-cache.c line 613
  • #12 g_task_return_now
    at gtask.c line 1105
  • #13 complete_in_idle_cb
    at gtask.c line 1114
  • #14 g_main_dispatch
    at gmain.c line 3054
  • #15 g_main_context_dispatch
    at gmain.c line 3630
  • #16 g_main_context_iterate
    at gmain.c line 3701
  • #17 g_main_context_iteration
    at gmain.c line 3762
  • #18 g_application_run
    at gapplication.c line 1623
  • #19 main
    at empathy.c line 831

Thread 4 (Thread 0x7f0c877fe700 (LWP 1646))

  • #0 open64
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 open
    at /usr/include/bits/fcntl2.h line 59
  • #2 _g_local_file_output_stream_replace
    at glocalfileoutputstream.c line 1141
  • #3 g_local_file_replace
    at glocalfile.c line 1416
  • #4 replace_async_thread
    at gfile.c line 5498
  • #5 g_task_thread_pool_thread
    at gtask.c line 1242
  • #6 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #7 g_thread_proxy
    at gthread.c line 798
  • #8 start_thread
    at pthread_create.c line 308
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 1 (Thread 0x7f0ca67fc700 (LWP 1641))

  • #0 g_logv
    at gmessages.c line 981
  • #1 g_log
    at gmessages.c line 1010
  • #2 g_wakeup_new
    at gwakeup.c line 163
  • #3 g_main_context_new
    at gmain.c line 610
  • #4 g_dbus_connection_send_message_with_reply_sync
    at gdbusconnection.c line 2227
  • #5 g_dbus_connection_call_sync_internal
    at gdbusconnection.c line 5564
  • #6 g_dbus_connection_call_with_unix_fd_list_sync
    at gdbusconnection.c line 5908
  • #7 g_dbus_proxy_call_sync_internal
    at gdbusproxy.c line 2910
  • #8 g_dbus_proxy_call_sync
    at gdbusproxy.c line 3102
  • #9 e_dbus_address_book_call_open_sync
    at e-dbus-address-book.c line 1553
  • #10 book_client_open_sync
    at e-book-client.c line 782
  • #11 client_open_thread
    at e-client.c line 585
  • #12 run_in_thread
    at gsimpleasyncresult.c line 871
  • #13 io_job_thread
    at gioscheduler.c line 89
  • #14 g_task_thread_pool_thread
    at gtask.c line 1242
  • #15 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #16 g_thread_proxy
    at gthread.c line 798
  • #17 start_thread
    at pthread_create.c line 308
  • #18 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113
From                To                  Syms Read   Shared Object Library
                                        No          linux-vdso.so.1
0x00007f0cfe9da450  0x00007f0cfea2e124  Yes         /usr/lib64/empathy/libempathy-gtk-3.8.3.so
0x00007f0cfe76a400  0x00007f0cfe78ab2c  Yes         /usr/lib64/empathy/libempathy-3.8.3.so
0x00007f0cfe52fb20  0x00007f0cfe541a04  Yes         /usr/lib64/libdbus-glib-1.so.2
0x00007f0cfe2fe240  0x00007f0cfe315e0c  Yes         /usr/lib64/libtelepathy-logger.so.3
0x00007f0cfdf0dc70  0x00007f0cfe029d88  Yes         /usr/lib64/libtelepathy-glib.so.0
0x00007f0cfdb79620  0x00007f0cfdc5ed10  Yes         /usr/lib64/libxml2.so.2
0x00007f0cfd942d10  0x00007f0cfd944f90  Yes         /usr/lib64/libnotify.so.4
0x00007f0cfd738cd0  0x00007f0cfd73c3a0  Yes         /usr/lib64/libclutter-gtk-1.0.so.0
0x00007f0cfd0db260  0x00007f0cfd36d4e0  Yes         /usr/lib64/libgtk-3.so.0
0x00007f0cfcd37ee0  0x00007f0cfcdef754  Yes         /usr/lib64/libgio-2.0.so.0
0x00007f0cfca99650  0x00007f0cfcadc0cc  Yes         /usr/lib64/libgdk-3.so.0
0x00007f0cfc83ed50  0x00007f0cfc85d068  Yes         /usr/lib64/libpango-1.0.so.0
0x00007f0cfc5ec830  0x00007f0cfc619698  Yes         /usr/lib64/libgobject-2.0.so.0
0x00007f0cfc2ced50  0x00007f0cfc36728c  Yes         /usr/lib64/libglib-2.0.so.0
0x00007f0cfc09b750  0x00007f0cfc0a6f64  Yes         /lib64/libpthread.so.0
0x00007f0cfbd0c5a0  0x00007f0cfbe379f0  Yes         /lib64/libc.so.6
0x00007f0cfbae1610  0x00007f0cfbae62f8  Yes         /usr/lib64/libenchant.so.1
0x00007f0cfb8db5c0  0x00007f0cfb8dbe24  Yes         /usr/lib64/libchamplain-gtk-0.12.so.0
0x00007f0cfb6a8e20  0x00007f0cfb6c6cd0  Yes         /usr/lib64/libchamplain-0.12.so.0
0x00007f0cfb48f7a0  0x00007f0cfb493984  Yes         /usr/lib64/libcheese-gtk.so.23
0x00007f0cfb265c50  0x00007f0cfb27dff4  Yes         /usr/lib64/libfolks-telepathy.so.25
0x00007f0cfb001370  0x00007f0cfb039e98  Yes         /usr/lib64/libfolks.so.25
0x00007f0cfade9040  0x00007f0cfadea460  Yes         /usr/lib64/libcanberra-gtk3.so.0
0x00007f0cfaaca3c0  0x00007f0cfab4c82c  Yes         /usr/lib64/libX11.so.6
0x00007f0cfa89d5a0  0x00007f0cfa8a516c  Yes         /usr/lib64/libcanberra.so.0
0x00007f0cfa644ba0  0x00007f0cfa675684  Yes         /usr/lib64/libgcr-ui-3.so.1
0x00007f0cfa3af930  0x00007f0cfa3f31a4  Yes         /usr/lib64/libgcr-base-3.so.1
0x00007f0cf899f310  0x00007f0cf9b91dbc  Yes         /usr/lib64/libwebkitgtk-3.0.so.0
0x00007f0cf83815e0  0x00007f0cf8392ce0  Yes         /usr/lib64/libgdk_pixbuf-2.0.so.0
0x00007f0cf80de540  0x00007f0cf8141970  Yes         /usr/lib64/libgee-0.8.so.2
0x00007f0cf7ebbad0  0x00007f0cf7ec2238  Yes         /usr/lib64/libgeoclue.so.0
0x00007f0cf7c70a30  0x00007f0cf7c99f88  Yes         /usr/lib64/libsecret-1.so.0
0x00007f0cf796b580  0x00007f0cf7a22dcc  Yes         /usr/lib64/libgnutls.so.28
0x00007f0cf76c1560  0x00007f0cf76fc57c  Yes         /usr/lib64/libsoup-2.4.so.1
0x00007f0cf747c120  0x00007f0cf747efba  Yes         /usr/lib64/libgudev-1.0.so.0
0x00007f0cf724b2e0  0x00007f0cf72678e4  Yes         /usr/lib64/libgoa-1.0.so.0
0x00007f0cf6f4d6f0  0x00007f0cf6fadcf8  Yes         /lib64/libm.so.6
0x00007f0cf6d11bd0  0x00007f0cf6d348c4  Yes         /usr/lib64/libdbus-1.so.3
0x00007f0cf6a5ea00  0x00007f0cf6ae49a0  Yes         /usr/lib64/libsqlite3.so.0
0x00007f0cf6850090  0x00007f0cf6850b30  Yes         /lib64/libdl.so.2
0x00007f0cf663b810  0x00007f0cf6647d40  Yes         /lib64/libz.so.1
0x00007f0cf6418e50  0x00007f0cf642cc40  Yes         /lib64/liblzma.so.5
0x00007f0cf6109180  0x00007f0cf61b3900  Yes         /usr/lib64/libclutter-1.0.so.0
0x00007f0cf5e54110  0x00007f0cf5ea567c  Yes         /usr/lib64/libcogl.so.12
0x00007f0cf5b30850  0x00007f0cf5bf5b08  Yes         /usr/lib64/libcairo.so.2
0x00007f0cf5918cd0  0x00007f0cf59195c4  Yes         /usr/lib64/libXinerama.so.1
0x00007f0cf5710110  0x00007f0cf5715628  Yes         /usr/lib64/libXrandr.so.2
0x00007f0cf5506070  0x00007f0cf550a9d4  Yes         /usr/lib64/libXcursor.so.1
0x00007f0cf52f4190  0x00007f0cf52fd7a0  Yes         /usr/lib64/libXext.so.6
0x00007f0cf50ed390  0x00007f0cf50ee258  Yes         /usr/lib64/libgmodule-2.0.so.0
0x00007f0cf4ee4120  0x00007f0cf4ee88d8  Yes         /usr/lib64/libpangocairo-1.0.so.0
0x00007f0cf4cd1920  0x00007f0cf4cdb604  Yes         /usr/lib64/libXi.so.6
0x00007f0cf4acce10  0x00007f0cf4acd7e8  Yes         /usr/lib64/libXcomposite.so.1
0x00007f0cf48c9d60  0x00007f0cf48ca67c  Yes         /usr/lib64/libXdamage.so.1
0x00007f0cf46c4940  0x00007f0cf46c6b88  Yes         /usr/lib64/libXfixes.so.3
0x00007f0cf44bd770  0x00007f0cf44be71c  Yes (*)     /usr/lib64/libcairo-gobject.so.2
0x00007f0cf42a1720  0x00007f0cf42acd24  Yes         /usr/lib64/libatk-1.0.so.0
0x00007f0cf4074a10  0x00007f0cf40861a4  Yes         /usr/lib64/libatk-bridge-2.0.so.0
0x00007f0cf3e5c840  0x00007f0cf3e63db0  Yes         /usr/lib64/libpangoft2-1.0.so.0
0x00007f0cf3bbd390  0x00007f0cf3c28c38  Yes         /usr/lib64/libfreetype.so.6
0x00007f0cf397ad30  0x00007f0cf3996de0  Yes         /usr/lib64/libfontconfig.so.1
0x00007f0cf3760200  0x00007f0cf376c228  Yes         /lib64/libresolv.so.2
0x00007f0cf3555bd0  0x00007f0cf355a154  Yes         /usr/lib64/libffi.so.6
0x00007f0cfec5ab60  0x00007f0cfec7405a  Yes         /lib64/ld-linux-x86-64.so.2
0x00007f0cf3351e90  0x00007f0cf3352310  Yes         /usr/lib64/libsoup-gnome-2.4.so.1
0x00007f0cf3145ab0  0x00007f0cf314c254  Yes         /usr/lib64/libmemphis-0.2.so.0
0x00007f0cf2f35ac0  0x00007f0cf2f3b9b8  Yes         /usr/lib64/libcheese.so.7
0x00007f0cf2d15c10  0x00007f0cf2d23c04  Yes         /usr/lib64/libgstpbutils-1.0.so.0
0x00007f0cf2b04810  0x00007f0cf2b05ef4  Yes         /usr/lib64/libgstphotography-1.0.so.0
0x00007f0cf28ddbd0  0x00007f0cf28f4848  Yes         /usr/lib64/libgnome-desktop-3.so.7
0x00007f0cf26bfce0  0x00007f0cf26c718c  Yes         /usr/lib64/libclutter-gst-2.0.so.0
0x00007f0cf2472400  0x00007f0cf24a31a0  Yes         /usr/lib64/libgstbase-1.0.so.0
0x00007f0cf21951d0  0x00007f0cf2216aac  Yes         /usr/lib64/libgstreamer-1.0.so.0
0x00007f0cf1f6b730  0x00007f0cf1f6b89c  Yes         /usr/lib64/libgthread-2.0.so.0
0x00007f0cf1d3ea10  0x00007f0cf1d61588  Yes         /usr/lib64/librsvg-2.so.2
0x00007f0cf1b30e90  0x00007f0cf1b331fc  Yes         /usr/lib64/libcogl-pango.so.12
0x00007f0cf1910ca0  0x00007f0cf1922600  Yes         /usr/lib64/libjson-glib-1.0.so.0
0x00007f0cf16b7fb0  0x00007f0cf16e5dd4  Yes         /usr/lib64/libzeitgeist-2.0.so.0
0x00007f0cf149b4b0  0x00007f0cf149f5ac  Yes         /usr/lib64/libvorbisfile.so.3
0x00007f0cf126ff00  0x00007f0cf1286ab0  Yes         /usr/lib64/libvorbis.so.0
0x00007f0cf1066ec0  0x00007f0cf10694e8  Yes         /usr/lib64/libogg.so.0
0x00007f0cf0e5da10  0x00007f0cf0e61b88  Yes         /usr/lib64/libltdl.so.7
0x00007f0cf0c469d0  0x00007f0cf0c52138  Yes         /usr/lib64/libxcb.so.1
0x00007f0cf0a0e800  0x00007f0cf0a2b918  Yes         /usr/lib64/libgck-1.so.0
0x00007f0cf078ae00  0x00007f0cf07d7a48  Yes         /usr/lib64/libgcrypt.so.11
0x00007f0cf054fc70  0x00007f0cf056968c  Yes         /usr/lib64/libp11-kit.so.0
0x00007f0cefef92e0  0x00007f0cf026f764  Yes         /usr/lib64/libjavascriptcoregtk-3.0.so.0
0x00007f0cefc02be0  0x00007f0cefc030f8  Yes         /usr/lib64/libharfbuzz-icu.so.0
0x00007f0cef9b63f0  0x00007f0cef9e880c  Yes         /usr/lib64/libharfbuzz.so.0
0x00007f0cef7a8180  0x00007f0cef7aba80  Yes         /usr/lib64/libgailutil-3.so.0
0x00007f0cef59b630  0x00007f0cef5a05d4  Yes         /usr/lib64/libgstapp-1.0.so.0
0x00007f0cef35bb90  0x00007f0cef383c34  Yes         /usr/lib64/libgstaudio-1.0.so.0
0x00007f0cef119390  0x00007f0cef13ac14  Yes         /usr/lib64/libgstvideo-1.0.so.0
0x00007f0ceeeba4e0  0x00007f0ceeef05d0  Yes         /usr/lib64/libjpeg.so.62
0x00007f0ceec86520  0x00007f0ceeca7f28  Yes         /usr/lib64/libxslt.so.1
0x00007f0ceea335c0  0x00007f0ceea64ef4  Yes         /usr/lib64/libGL.so.1
0x00007f0cee7eacc0  0x00007f0cee80ccac  Yes         /usr/lib64/libpng16.so.16
0x00007f0cee47dce0  0x00007f0cee581ed0  Yes         /usr/lib64/libicui18n.so.51
0x00007f0cee0bf2e0  0x00007f0cee16c578  Yes         /usr/lib64/libicuuc.so.51
0x00007f0cede23b40  0x00007f0cede58f04  Yes         /usr/lib64/libwebp.so.4
0x00007f0cedc11fb0  0x00007f0cedc17c68  Yes         /usr/lib64/libXrender.so.1
0x00007f0ced9bd620  0x00007f0ced9f727c  Yes         /usr/lib64/libXt.so.6
0x00007f0ced6ff530  0x00007f0ced7628da  Yes         /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.1/libstdc++.so.6
0x00007f0ced47a400  0x00007f0ced49441c  Yes         /usr/lib64/libnettle.so.4
0x00007f0ced24b9b0  0x00007f0ced255c14  Yes         /usr/lib64/libhogweed.so.2
0x00007f0cecfdb100  0x00007f0ced02c140  Yes         /usr/lib64/libgmp.so.10
0x00007f0cecdbecd0  0x00007f0cecdc7420  Yes         /usr/lib64/libudev.so.1
0x00007f0cecbb58a0  0x00007f0cecbb869c  Yes         /lib64/librt.so.1
0x00007f0cec926370  0x00007f0cec99cb2c  Yes         /usr/lib64/libpixman-1.so.0
0x00007f0cec703210  0x00007f0cec71254c  Yes         /usr/lib64/libEGL.so.1
0x00007f0cec4f9c90  0x00007f0cec4fa354  Yes         /usr/lib64/libxcb-shm.so.0
0x00007f0cec2f2ed0  0x00007f0cec2f5990  Yes         /usr/lib64/libxcb-render.so.0
0x00007f0cec0d5950  0x00007f0cec0e3eb8  Yes         /usr/lib64/libatspi.so.0
0x00007f0cebeb9990  0x00007f0cebec55a0  Yes         /lib64/libbz2.so.1
0x00007f0cebc92360  0x00007f0cebcaaecc  Yes         /usr/lib64/libexpat.so.1
0x00007f0ceba6e700  0x00007f0ceba85d14  Yes         /usr/lib64/libxkbfile.so.1
0x00007f0ceb83ba40  0x00007f0ceb857354  Yes         /usr/lib64/libgsttag-1.0.so.0
0x00007f0ceb62dc60  0x00007f0ceb62e76c  Yes         /usr/lib64/libgstbasevideo-1.0.so.0
0x00007f0ceb3f9b80  0x00007f0ceb417d08  Yes         /usr/lib64/libcroco-0.6.so.3
0x00007f0ceb1ec050  0x00007f0ceb1ecc6c  Yes         /usr/lib64/libXau.so.6
0x00007f0ceafe66b0  0x00007f0ceafe7f48  Yes         /usr/lib64/libXdmcp.so.6
0x00007f0ceade0b40  0x00007f0ceade1198  Yes         /usr/lib64/libgpg-error.so.0
0x00007f0ceabc4cf0  0x00007f0ceabd7498  Yes         /usr/lib64/libgraphite2.so.3
0x00007f0cea950780  0x00007f0cea999fc0  Yes         /usr/lib64/liborc-0.4.so.0
0x00007f0cea723ee0  0x00007f0cea72c810  Yes         /usr/lib64/libglapi.so.0
0x00007f0cea519670  0x00007f0cea51977c  Yes         /usr/lib64/libX11-xcb.so.1
0x00007f0cea30bfa0  0x00007f0cea311eb8  Yes         /usr/lib64/libxcb-glx.so.0
0x00007f0cea0fcd10  0x00007f0cea0fda28  Yes         /usr/lib64/libxcb-dri2.so.0
0x00007f0ce9ef61d0  0x00007f0ce9ef8988  Yes         /usr/lib64/libXxf86vm.so.1
0x00007f0ce9cecd30  0x00007f0ce9cf1b34  Yes         /usr/lib64/libdrm.so.2
0x00007f0ce9ad5ac0  0x00007f0ce9ae4ee8  Yes         /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.1/libgcc_s.so.1
0x00007f0ce83875e0  0x00007f0ce83876c8  Yes (*)     /usr/lib64/libicudata.so.51
0x00007f0ce8180080  0x00007f0ce8183f70  Yes         /usr/lib64/libSM.so.6
0x00007f0ce7f67af0  0x00007f0ce7f7463c  Yes         /usr/lib64/libICE.so.6
0x00007f0ce7d5db60  0x00007f0ce7d5f390  Yes         /usr/lib64/libxcb-xfixes.so.0
0x00007f0ce7b56ce0  0x00007f0ce7b58128  Yes         /usr/lib64/libgbm.so.1
0x00007f0ce7951750  0x00007f0ce7952b70  Yes         /lib64/libuuid.so.1
0x00007f0ce1258e40  0x00007f0ce1264c78  Yes         /usr/lib64/gio/modules/libgioremote-volume-monitor.so
0x00007f0ce10491e0  0x00007f0ce104d5b0  Yes         /usr/lib64/gio/modules/libdconfsettings.so
0x00007f0ce0e1f5e0  0x00007f0ce0e38828  Yes         /usr/lib64/gio/modules/libgvfsdbus.so
0x00007f0ce0be99e0  0x00007f0ce0c002e8  Yes         /usr/lib64/libgvfscommon.so.0
0x00007f0ce01d0cf0  0x00007f0ce01d2204  Yes         /usr/lib64/gtk-3.0/3.0.0/theming-engines/libadwaita.so
0x00007f0cdbdfb470  0x00007f0cdbdfd400  Yes         /usr/lib64/gtk-3.0/modules/libcanberra-gtk-module.so
0x00007f0cdbb3c600  0x00007f0cdbbd1744  Yes         /usr/lib64/dri/i965_dri.so
0x00007f0cdb5d0cc0  0x00007f0cdb7baa5c  Yes         /usr/lib64/libdricore9.1.6.so.1
0x00007f0cdb33e4b0  0x00007f0cdb351258  Yes         /usr/lib64/libdrm_intel.so.1
0x00007f0cdb134880  0x00007f0cdb138610  Yes         /usr/lib64/libpciaccess.so.0
0x00007f0cda72ea00  0x00007f0cda72f40c  Yes         /usr/lib64/pango/1.8.0/modules/pango-basic-fc.so
0x00007f0cd8334cb0  0x00007f0cd833507c  Yes         /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so
0x00007f0cd812f490  0x00007f0cd81313a8  Yes         /usr/lib64/gtk-3.0/3.0.0/immodules/im-ibus.so
0x00007f0ccde6cb90  0x00007f0ccde8c928  Yes         /usr/lib64/libibus-1.0.so.5
0x00007f0ccd056c00  0x00007f0ccd058744  Yes         /usr/lib64/folks/39/backends/eds/eds.so
0x00007f0ccce29c90  0x00007f0ccce4684c  Yes         /usr/lib64/libfolks-eds.so.25
0x00007f0cccba0060  0x00007f0cccbeb0ac  Yes         /usr/lib64/libedataserver-1.2.so.17
0x00007f0ccc95b300  0x00007f0ccc96afc8  Yes         /usr/lib64/libebook-1.2.so.14
0x00007f0ccc7357f0  0x00007f0ccc742150  Yes         /usr/lib64/libebook-contacts-1.2.so.0
0x00007f0ccc4073f0  0x00007f0ccc4b582c  Yes         /usr/lib64/libcamel-1.2.so.44
0x00007f0ccc1762b0  0x00007f0ccc1a7d98  Yes         /usr/lib64/libebackend-1.2.so.6
0x00007f0cc7dd6080  0x00007f0cc7dee958  Yes         /usr/lib64/libedata-book-1.2.so.19
0x00007f0cc7b88d90  0x00007f0cc7bb2b30  Yes         /usr/lib64/libssl3.so
0x00007f0cc7959d10  0x00007f0cc797125c  Yes         /usr/lib64/libsmime3.so
0x00007f0cc762ac90  0x00007f0cc770a534  Yes         /usr/lib64/libnss3.so
0x00007f0cc73dfcf0  0x00007f0cc73fe970  Yes         /usr/lib64/libnspr4.so
0x00007f0cc71ce790  0x00007f0cc71cf2f4  Yes         /lib64/libcom_err.so.2
0x00007f0cc6f94100  0x00007f0cc6fbf458  Yes         /usr/lib64/libgssapi_krb5.so.2
0x00007f0cc6c32e00  0x00007f0cc6d4aac0  Yes         /usr/lib64/libdb-4.8.so
0x00007f0cc69ece10  0x00007f0cc69fab64  Yes         /usr/lib64/libnssutil3.so
0x00007f0cc67dc910  0x00007f0cc67ddf18  Yes         /usr/lib64/libplc4.so
0x00007f0cc65d82d0  0x00007f0cc65d9218  Yes         /usr/lib64/libplds4.so
0x00007f0cc632f1b0  0x00007f0cc637f798  Yes         /usr/lib64/libkrb5.so.3
0x00007f0cc60daee0  0x00007f0cc60f8580  Yes         /usr/lib64/libk5crypto.so.3
0x00007f0cc5ece4b0  0x00007f0cc5ed2ac8  Yes         /usr/lib64/libkrb5support.so.0
0x00007f0cc5cc83c0  0x00007f0cc5cc8ccc  Yes         /lib64/libkeyutils.so.1
0x00007f0cc5ac3750  0x00007f0cc5ac4db4  Yes         /usr/lib64/folks/39/backends/telepathy/telepathy.so
0x00007f0cc58bd4b0  0x00007f0cc58be694  Yes         /usr/lib64/folks/39/backends/tracker/tracker.so
0x00007f0cc568cf70  0x00007f0cc56ab2e8  Yes         /usr/lib64/libfolks-tracker.so.25
0x00007f0cc5464930  0x00007f0cc5475358  Yes         /usr/lib64/libtracker-sparql-0.16.so.0
0x00007f0cc51eef60  0x00007f0cc523e818  Yes         /usr/lib64/tracker-0.16/libtracker-data.so.0
0x00007f0cc4fb0750  0x00007f0cc4fc0b58  Yes         /usr/lib64/tracker-0.16/libtracker-common.so.0
0x00007f0cc4d8f170  0x00007f0cc4d97510  Yes         /usr/lib64/folks/39/backends/key-file/key-file.so
0x00007f0cc4b7d320  0x00007f0cc4b8400c  Yes         /usr/lib64/folks/39/backends/ofono/ofono.so
0x00007f0cc4972790  0x00007f0cc4973eb4  Yes         /usr/lib64/folks/39/backends/libsocialweb/libsocialweb.so
0x00007f0cc47681e0  0x00007f0cc476c550  Yes         /usr/lib64/libfolks-libsocialweb.so.25
0x00007f0cc45596b0  0x00007f0cc455e7dc  Yes         /usr/lib64/libsocialweb-client.so.2
0x00007f0cc4339e70  0x00007f0cc434c4c8  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamellocal.so
0x00007f0cc412de40  0x00007f0cc412e088  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelimapx.so
0x00007f0cbedf7af0  0x00007f0cbedfae38  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelsmtp.so
0x00007f0cbebefb00  0x00007f0cbebf12f0  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelsendmail.so
0x00007f0cbe9df120  0x00007f0cbe9e78f8  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelnntp.so
0x00007f0cbe7c1b70  0x00007f0cbe7cf090  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelews.so
0x00007f0cbe57f860  0x00007f0cbe59e1fc  Yes         /usr/lib64/evolution-data-server/libeews-1.2.so.0
0x00007f0cbe363e90  0x00007f0cbe36743c  Yes         /usr/lib64/evolution-data-server/libewsutils.so.0
0x00007f0cbe13baf0  0x00007f0cbe1531bc  Yes         /usr/lib64/evolution/3.10/libemail-engine.so
0x00007f0cbdee1bc0  0x00007f0cbdf0a420  Yes         /usr/lib64/libical.so.0
0x00007f0cbdc9cae0  0x00007f0cbdcb4878  Yes         /usr/lib64/libedata-cal-1.2.so.22
0x00007f0cbd910a70  0x00007f0cbda1096c  Yes         /usr/lib64/evolution/3.10/libevolution-util.so
0x00007f0cbd674450  0x00007f0cbd699918  Yes         /usr/lib64/libecal-1.2.so.16
0x00007f0cbd4476f0  0x00007f0cbd4540cc  Yes         /usr/lib64/evolution/3.10/libgnomecanvas.so
0x00007f0cbd219cf0  0x00007f0cbd22ef88  Yes         /usr/lib64/libgtkhtml-editor-4.0.so.0
0x00007f0cbcf5d640  0x00007f0cbcfc8978  Yes         /usr/lib64/libgtkhtml-4.0.so.0
0x00007f0cbcd1ff00  0x00007f0cbcd26a1c  Yes         /usr/lib64/evolution-data-server/camel-providers/libcamelpop3.so
0x00007f0cbcb126e0  0x00007f0cbcb17254  Yes         /lib64/libnss_compat.so.2
0x00007f0cbc8fdca0  0x00007f0cbc9091f4  Yes         /lib64/libnsl.so.1
0x00007f0cbc6f0720  0x00007f0cbc6f66c4  Yes         /lib64/libnss_nis.so.2
0x00007f0cbc4e37e0  0x00007f0cbc4eab48  Yes         /lib64/libnss_files.so.2
0x00007f0cbc2dcbe0  0x00007f0cbc2dec2c  Yes         /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jpeg.so
(*): Shared library is missing debugging information.
$1 = 0x0
$2 = 0x0
rax            0x6	6
rbx            0x0	0
rcx            0x13810	79888
rdx            0x81	129
rsi            0x0	0
rdi            0x1	1
rbp            0x7f0cfc3672ae	0x7f0cfc3672ae
rsp            0x7f0ca67fb8a0	0x7f0ca67fb8a0
r8             0x0	0
r9             0x7f0c90000070	139691932254320
r10            0x0	0
r11            0x0	0
r12            0x4	4
r13            0x7f0cfc302df0	139693747351024
r14            0x2	2
r15            0x2	2
rip            0x7f0cfc30355d	0x7f0cfc30355d <g_logv+525>
eflags         0x246	[ PF ZF IF ]
cs             0x33	51
ss             0x2b	43
ds             0x0	0
es             0x0	0
fs             0x0	0
gs             0x0	0
Dump of assembler code for function g_logv:
   0x00007f0cfc303350 <+0>:	push   %r15
   0x00007f0cfc303352 <+2>:	mov    %esi,%eax
   0x00007f0cfc303354 <+4>:	push   %r14
   0x00007f0cfc303356 <+6>:	push   %r13
   0x00007f0cfc303358 <+8>:	push   %r12
   0x00007f0cfc30335a <+10>:	push   %rbp
   0x00007f0cfc30335b <+11>:	push   %rbx
   0x00007f0cfc30335c <+12>:	mov    %esi,%ebx
   0x00007f0cfc30335e <+14>:	sub    $0x78,%rsp
   0x00007f0cfc303362 <+18>:	and    $0xfffffffc,%eax
   0x00007f0cfc303365 <+21>:	mov    %eax,0xc(%rsp)
   0x00007f0cfc303369 <+25>:	jne    0x7f0cfc303380 <g_logv+48>
   0x00007f0cfc30336b <+27>:	add    $0x78,%rsp
   0x00007f0cfc30336f <+31>:	pop    %rbx
   0x00007f0cfc303370 <+32>:	pop    %rbp
   0x00007f0cfc303371 <+33>:	pop    %r12
   0x00007f0cfc303373 <+35>:	pop    %r13
   0x00007f0cfc303375 <+37>:	pop    %r14
   0x00007f0cfc303377 <+39>:	pop    %r15
   0x00007f0cfc303379 <+41>:	retq   
   0x00007f0cfc30337a <+42>:	nopw   0x0(%rax,%rax,1)
   0x00007f0cfc303380 <+48>:	mov    %rdi,%rbp
   0x00007f0cfc303383 <+51>:	mov    %rcx,%rsi
   0x00007f0cfc303386 <+54>:	mov    %rdx,%rdi
   0x00007f0cfc303389 <+57>:	callq  0x7f0cfc3193f0 <g_strdup_vprintf>
   0x00007f0cfc30338e <+62>:	mov    0x2dbdb3(%rip),%rdi        # 0x7f0cfc5df148 <expected_messages>
   0x00007f0cfc303395 <+69>:	mov    %rax,0x10(%rsp)
   0x00007f0cfc30339a <+74>:	test   %rdi,%rdi
   0x00007f0cfc30339d <+77>:	je     0x7f0cfc30341b <g_logv+203>
   0x00007f0cfc30339f <+79>:	mov    (%rdi),%r14
   0x00007f0cfc3033a2 <+82>:	mov    %rdi,%rsi
   0x00007f0cfc3033a5 <+85>:	callq  0x7f0cfc318b50 <g_slist_delete_link>
   0x00007f0cfc3033aa <+90>:	mov    %rbp,%rsi
   0x00007f0cfc3033ad <+93>:	mov    %rax,0x2dbd94(%rip)        # 0x7f0cfc5df148 <expected_messages>
   0x00007f0cfc3033b4 <+100>:	mov    (%r14),%rdi
   0x00007f0cfc3033b7 <+103>:	callq  0x7f0cfc2ce670 <strcmp@plt>
   0x00007f0cfc3033bc <+108>:	test   %eax,%eax
   0x00007f0cfc3033be <+110>:	jne    0x7f0cfc30367d <g_logv+813>
   0x00007f0cfc3033c4 <+116>:	mov    0x8(%r14),%eax
   0x00007f0cfc3033c8 <+120>:	mov    0xc(%rsp),%edx
   0x00007f0cfc3033cc <+124>:	and    %eax,%edx
   0x00007f0cfc3033ce <+126>:	mov    %eax,%esi
   0x00007f0cfc3033d0 <+128>:	cmp    %edx,%eax
   0x00007f0cfc3033d2 <+130>:	je     0x7f0cfc303686 <g_logv+822>
   0x00007f0cfc3033d8 <+136>:	lea    0x30(%rsp),%r15
   0x00007f0cfc3033dd <+141>:	mov    %r15,%rdi
   0x00007f0cfc3033e0 <+144>:	callq  0x7f0cfc3028d0 <mklevel_prefix>
   0x00007f0cfc3033e5 <+149>:	mov    0x10(%r14),%rdx
   0x00007f0cfc3033e9 <+153>:	lea    0x6d4c8(%rip),%rdi        # 0x7f0cfc3708b8
   0x00007f0cfc3033f0 <+160>:	mov    %r15,%rsi
   0x00007f0cfc3033f3 <+163>:	xor    %eax,%eax
   0x00007f0cfc3033f5 <+165>:	callq  0x7f0cfc319420 <g_strdup_printf>
   0x00007f0cfc3033fa <+170>:	mov    0xc(%rsp),%esi
   0x00007f0cfc3033fe <+174>:	mov    %rax,%r14
   0x00007f0cfc303401 <+177>:	xor    %ecx,%ecx
   0x00007f0cfc303403 <+179>:	mov    %rax,%rdx
   0x00007f0cfc303406 <+182>:	mov    %rbp,%rdi
   0x00007f0cfc303409 <+185>:	callq  0x7f0cfc302df0 <g_log_default_handler>
   0x00007f0cfc30340e <+190>:	mov    %r14,%rdi
   0x00007f0cfc303411 <+193>:	callq  0x7f0cfc302160 <g_free>
   0x00007f0cfc303416 <+198>:	orl    $0x2,0xc(%rsp)
   0x00007f0cfc30341b <+203>:	movslq 0xc(%rsp),%r15
   0x00007f0cfc303420 <+208>:	mov    $0x40,%r14d
   0x00007f0cfc303426 <+214>:	jmp    0x7f0cfc303439 <g_logv+233>
   0x00007f0cfc303428 <+216>:	nopl   0x0(%rax,%rax,1)
   0x00007f0cfc303430 <+224>:	test   %r14d,%r14d
   0x00007f0cfc303433 <+227>:	je     0x7f0cfc30358f <g_logv+575>
   0x00007f0cfc303439 <+233>:	sub    $0x1,%r14d
   0x00007f0cfc30343d <+237>:	bt     %r14,%r15
   0x00007f0cfc303441 <+241>:	jae    0x7f0cfc303430 <g_logv+224>
   0x00007f0cfc303443 <+243>:	mov    %ebx,%eax
   0x00007f0cfc303445 <+245>:	and    $0x1,%ebx
   0x00007f0cfc303448 <+248>:	mov    %r15,%r12
   0x00007f0cfc30344b <+251>:	and    $0x2,%eax
   0x00007f0cfc30344e <+254>:	mov    %ebx,0x2c(%rsp)
   0x00007f0cfc303452 <+258>:	mov    %eax,0x28(%rsp)
   0x00007f0cfc303456 <+262>:	nopw   %cs:0x0(%rax,%rax,1)
   0x00007f0cfc303460 <+272>:	mov    $0x1,%r15d
   0x00007f0cfc303466 <+278>:	mov    %r14d,%ecx
   0x00007f0cfc303469 <+281>:	shl    %cl,%r15d
   0x00007f0cfc30346c <+284>:	test   %r15d,0xc(%rsp)
   0x00007f0cfc303471 <+289>:	je     0x7f0cfc30356b <g_logv+539>
   0x00007f0cfc303477 <+295>:	lea    0x2dbd3a(%rip),%rdi        # 0x7f0cfc5df1b8 <g_messages_lock>
   0x00007f0cfc30347e <+302>:	or     0x28(%rsp),%r15d
   0x00007f0cfc303483 <+307>:	or     0x2c(%rsp),%r15d
   0x00007f0cfc303488 <+312>:	callq  0x7f0cfc33b640 <g_mutex_lock>
   0x00007f0cfc30348d <+317>:	lea    0x2dbcec(%rip),%rdi        # 0x7f0cfc5df180 <g_log_depth>
   0x00007f0cfc303494 <+324>:	callq  0x7f0cfc33b9f0 <g_private_get>
   0x00007f0cfc303499 <+329>:	lea    0x93d5e(%rip),%rdi        # 0x7f0cfc3971fe
   0x00007f0cfc3034a0 <+336>:	test   %rbp,%rbp
   0x00007f0cfc3034a3 <+339>:	mov    %rax,%rbx
   0x00007f0cfc3034a6 <+342>:	cmovne %rbp,%rdi
   0x00007f0cfc3034aa <+346>:	callq  0x7f0cfc302720 <g_log_find_domain_L>
   0x00007f0cfc3034af <+351>:	mov    %r15d,%edx
   0x00007f0cfc3034b2 <+354>:	lea    0x1(%rbx),%esi
   0x00007f0cfc3034b5 <+357>:	or     $0x1,%edx
   0x00007f0cfc3034b8 <+360>:	test   %ebx,%ebx
   0x00007f0cfc3034ba <+362>:	cmovne %edx,%r15d
   0x00007f0cfc3034be <+366>:	test   %rax,%rax
   0x00007f0cfc3034c1 <+369>:	mov    %esi,0x20(%rsp)
   0x00007f0cfc3034c5 <+373>:	je     0x7f0cfc303673 <g_logv+803>
   0x00007f0cfc3034cb <+379>:	mov    0x8(%rax),%ecx
   0x00007f0cfc3034ce <+382>:	lea    0x2db397(%rip),%rdx        # 0x7f0cfc5de86c <g_log_always_fatal>
   0x00007f0cfc3034d5 <+389>:	lea    -0x9dc(%rip),%r13        # 0x7f0cfc302b00 <_g_log_fallback_handler>
   0x00007f0cfc3034dc <+396>:	or     (%rdx),%ecx
   0x00007f0cfc3034de <+398>:	mov    %r15d,%edx
   0x00007f0cfc3034e1 <+401>:	or     $0x2,%edx
   0x00007f0cfc3034e4 <+404>:	test   %r15d,%ecx
   0x00007f0cfc3034e7 <+407>:	cmovne %edx,%r15d
   0x00007f0cfc3034eb <+411>:	xor    %ecx,%ecx
   0x00007f0cfc3034ed <+413>:	mov    %r15d,%esi
   0x00007f0cfc3034f0 <+416>:	and    $0x1,%esi
   0x00007f0cfc3034f3 <+419>:	mov    %esi,0x24(%rsp)
   0x00007f0cfc3034f7 <+423>:	je     0x7f0cfc3035c0 <g_logv+624>
   0x00007f0cfc3034fd <+429>:	lea    0x2dbcb4(%rip),%rdi        # 0x7f0cfc5df1b8 <g_messages_lock>
   0x00007f0cfc303504 <+436>:	mov    %rcx,0x18(%rsp)
   0x00007f0cfc303509 <+441>:	callq  0x7f0cfc33b670 <g_mutex_unlock>
   0x00007f0cfc30350e <+446>:	mov    0x20(%rsp),%esi
   0x00007f0cfc303512 <+450>:	lea    0x2dbc67(%rip),%rdi        # 0x7f0cfc5df180 <g_log_depth>
   0x00007f0cfc303519 <+457>:	callq  0x7f0cfc33ba10 <g_private_set>
   0x00007f0cfc30351e <+462>:	mov    0x18(%rsp),%rcx
   0x00007f0cfc303523 <+467>:	mov    0x10(%rsp),%rdx
   0x00007f0cfc303528 <+472>:	mov    %r15d,%esi
   0x00007f0cfc30352b <+475>:	mov    %rbp,%rdi
   0x00007f0cfc30352e <+478>:	callq  *%r13
   0x00007f0cfc303531 <+481>:	mov    %r15d,%eax
   0x00007f0cfc303534 <+484>:	and    $0x6,%eax
   0x00007f0cfc303537 <+487>:	cmp    $0x2,%eax
   0x00007f0cfc30353a <+490>:	je     0x7f0cfc303610 <g_logv+704>
   0x00007f0cfc303540 <+496>:	and    $0x2,%r15d
   0x00007f0cfc303544 <+500>:	je     0x7f0cfc30355d <g_logv+525>
   0x00007f0cfc303546 <+502>:	nopw   %cs:0x0(%rax,%rax,1)
   0x00007f0cfc303550 <+512>:	mov    0x24(%rsp),%esi
   0x00007f0cfc303554 <+516>:	test   %esi,%esi
   0x00007f0cfc303556 <+518>:	jne    0x7f0cfc3036c0 <g_logv+880>
   0x00007f0cfc30355c <+524>:	int3   
=> 0x00007f0cfc30355d <+525>:	lea    0x2dbc1c(%rip),%rdi        # 0x7f0cfc5df180 <g_log_depth>
   0x00007f0cfc303564 <+532>:	mov    %ebx,%esi
   0x00007f0cfc303566 <+534>:	callq  0x7f0cfc33ba10 <g_private_set>
   0x00007f0cfc30356b <+539>:	test   %r14d,%r14d
   0x00007f0cfc30356e <+542>:	jle    0x7f0cfc30358f <g_logv+575>
   0x00007f0cfc303570 <+544>:	sub    $0x1,%r14d
   0x00007f0cfc303574 <+548>:	bt     %r14,%r12
   0x00007f0cfc303578 <+552>:	jae    0x7f0cfc30358a <g_logv+570>
   0x00007f0cfc30357a <+554>:	jmpq   0x7f0cfc303460 <g_logv+272>
   0x00007f0cfc30357f <+559>:	nop
   0x00007f0cfc303580 <+560>:	sub    $0x1,%r14d
   0x00007f0cfc303584 <+564>:	bt     %r14,%r12
   0x00007f0cfc303588 <+568>:	jb     0x7f0cfc3035b0 <g_logv+608>
   0x00007f0cfc30358a <+570>:	test   %r14d,%r14d
   0x00007f0cfc30358d <+573>:	jne    0x7f0cfc303580 <g_logv+560>
   0x00007f0cfc30358f <+575>:	mov    0x10(%rsp),%rdi
   0x00007f0cfc303594 <+580>:	callq  0x7f0cfc302160 <g_free>
   0x00007f0cfc303599 <+585>:	add    $0x78,%rsp
   0x00007f0cfc30359d <+589>:	pop    %rbx
   0x00007f0cfc30359e <+590>:	pop    %rbp
   0x00007f0cfc30359f <+591>:	pop    %r12
   0x00007f0cfc3035a1 <+593>:	pop    %r13
   0x00007f0cfc3035a3 <+595>:	pop    %r14
   0x00007f0cfc3035a5 <+597>:	pop    %r15
   0x00007f0cfc3035a7 <+599>:	retq   
   0x00007f0cfc3035a8 <+600>:	nopl   0x0(%rax,%rax,1)
   0x00007f0cfc3035b0 <+608>:	test   %r14d,%r14d
   0x00007f0cfc3035b3 <+611>:	jns    0x7f0cfc303460 <g_logv+272>
   0x00007f0cfc3035b9 <+617>:	jmp    0x7f0cfc30358f <g_logv+575>
   0x00007f0cfc3035bb <+619>:	nopl   0x0(%rax,%rax,1)
   0x00007f0cfc3035c0 <+624>:	test   %r15d,%r15d
   0x00007f0cfc3035c3 <+627>:	je     0x7f0cfc303660 <g_logv+784>
   0x00007f0cfc3035c9 <+633>:	test   %rax,%rax
   0x00007f0cfc3035cc <+636>:	nopl   0x0(%rax)
   0x00007f0cfc3035d0 <+640>:	je     0x7f0cfc303660 <g_logv+784>
   0x00007f0cfc3035d6 <+646>:	mov    0x10(%rax),%rax
   0x00007f0cfc3035da <+650>:	test   %rax,%rax
   0x00007f0cfc3035dd <+653>:	jne    0x7f0cfc3035f1 <g_logv+673>
   0x00007f0cfc3035df <+655>:	jmp    0x7f0cfc303660 <g_logv+784>
   0x00007f0cfc3035e1 <+657>:	nopl   0x0(%rax)
   0x00007f0cfc3035e8 <+664>:	mov    0x18(%rax),%rax
   0x00007f0cfc3035ec <+668>:	test   %rax,%rax
   0x00007f0cfc3035ef <+671>:	je     0x7f0cfc303660 <g_logv+784>
   0x00007f0cfc3035f1 <+673>:	mov    0x4(%rax),%edx
   0x00007f0cfc3035f4 <+676>:	and    %r15d,%edx
   0x00007f0cfc3035f7 <+679>:	cmp    %edx,%r15d
   0x00007f0cfc3035fa <+682>:	jne    0x7f0cfc3035e8 <g_logv+664>
   0x00007f0cfc3035fc <+684>:	mov    0x10(%rax),%rcx
   0x00007f0cfc303600 <+688>:	mov    0x8(%rax),%r13
   0x00007f0cfc303604 <+692>:	jmpq   0x7f0cfc3034fd <g_logv+429>
   0x00007f0cfc303609 <+697>:	nopl   0x0(%rax)
   0x00007f0cfc303610 <+704>:	mov    0x2dbb41(%rip),%rax        # 0x7f0cfc5df158 <fatal_log_func>
   0x00007f0cfc303617 <+711>:	test   %rax,%rax
   0x00007f0cfc30361a <+714>:	je     0x7f0cfc303540 <g_logv+496>
   0x00007f0cfc303620 <+720>:	mov    %r15d,%esi
   0x00007f0cfc303623 <+723>:	mov    0x2dbb26(%rip),%rcx        # 0x7f0cfc5df150 <fatal_log_data>
   0x00007f0cfc30362a <+730>:	mov    0x10(%rsp),%rdx
   0x00007f0cfc30362f <+735>:	mov    %rbp,%rdi
   0x00007f0cfc303632 <+738>:	callq  *%rax
   0x00007f0cfc303634 <+740>:	and    $0x2,%r15d
   0x00007f0cfc303638 <+744>:	je     0x7f0cfc30355d <g_logv+525>
   0x00007f0cfc30363e <+750>:	test   %eax,%eax
   0x00007f0cfc303640 <+752>:	jne    0x7f0cfc303550 <g_logv+512>
   0x00007f0cfc303646 <+758>:	lea    0x2dbb33(%rip),%rdi        # 0x7f0cfc5df180 <g_log_depth>
   0x00007f0cfc30364d <+765>:	mov    %ebx,%esi
   0x00007f0cfc30364f <+767>:	callq  0x7f0cfc33ba10 <g_private_set>
   0x00007f0cfc303654 <+772>:	jmpq   0x7f0cfc30356b <g_logv+539>
   0x00007f0cfc303659 <+777>:	nopl   0x0(%rax)
   0x00007f0cfc303660 <+784>:	mov    0x2dbaf9(%rip),%rcx        # 0x7f0cfc5df160 <default_log_data>
   0x00007f0cfc303667 <+791>:	mov    0x2db462(%rip),%r13        # 0x7f0cfc5dead0 <default_log_func>
   0x00007f0cfc30366e <+798>:	jmpq   0x7f0cfc3034fd <g_logv+429>
   0x00007f0cfc303673 <+803>:	mov    $0x5,%ecx
   0x00007f0cfc303678 <+808>:	jmpq   0x7f0cfc3034ce <g_logv+382>
   0x00007f0cfc30367d <+813>:	mov    0x8(%r14),%esi
   0x00007f0cfc303681 <+817>:	jmpq   0x7f0cfc3033d8 <g_logv+136>
   0x00007f0cfc303686 <+822>:	mov    0x10(%r14),%rdi
   0x00007f0cfc30368a <+826>:	mov    0x10(%rsp),%rsi
   0x00007f0cfc30368f <+831>:	callq  0x7f0cfc30b3f0 <g_pattern_match_simple>
   0x00007f0cfc303694 <+836>:	test   %eax,%eax
   0x00007f0cfc303696 <+838>:	je     0x7f0cfc30367d <g_logv+813>
   0x00007f0cfc303698 <+840>:	mov    (%r14),%rdi
   0x00007f0cfc30369b <+843>:	callq  0x7f0cfc302160 <g_free>
   0x00007f0cfc3036a0 <+848>:	mov    0x10(%r14),%rdi
   0x00007f0cfc3036a4 <+852>:	callq  0x7f0cfc302160 <g_free>
   0x00007f0cfc3036a9 <+857>:	mov    %r14,%rdi
   0x00007f0cfc3036ac <+860>:	callq  0x7f0cfc302160 <g_free>
   0x00007f0cfc3036b1 <+865>:	mov    0x10(%rsp),%rdi
   0x00007f0cfc3036b6 <+870>:	callq  0x7f0cfc302160 <g_free>
   0x00007f0cfc3036bb <+875>:	jmpq   0x7f0cfc30336b <g_logv+27>
   0x00007f0cfc3036c0 <+880>:	callq  0x7f0cfc2ce130 <abort@plt>
End of assembler dump.

Empathy at the moment of crash had 604 files opened of form .cache/folks/avatars/.goutputstream-...
Comment 1 Guillaume Desmottes 2013-08-27 12:34:54 UTC
Re-assigning to folks as it's opening files from Folks's cache.
Comment 2 Philip Withnall 2014-04-06 10:17:37 UTC
Created attachment 273652 [details] [review]
core: Rate-limit AvatarCache.store_avatar() to prevent FD exhaustion

If connecting to a new EDS address book, or doing something else which
may cause a torrent of AvatarCache.store_avatar() calls, it is possible
to hit the operating system’s file descriptor limit, which causes
further store operations to fail.

Implement a simple FIFO rate limit on concurrent
AvatarCache.store_avatar() calls to try and ensure this won’t happen. It
is still possible if the process calls store_avatar() several times
while already near the FD limit, but then failure is pretty inevitable
anyway, and is already handled gracefully.

The changes are implemented in a self-contained wrapper function around
store_avatar(), and only result in memory allocations in the queueing
case.

A test case is included. This does not affect the AvatarCache API or
ABI.
Comment 3 Philip Withnall 2014-04-06 10:23:02 UTC
This is caused by too many concurrent calls to AvatarCache.store_avatar(), which then opens two FDs (one to read the avatar from its current location, which is probably actually a network socket; and one to store it locally on disk). These FDs are closed correctly afterwards, but if too many operations are started in parallel, FD exhaustion will occur.

The above is a simple patch to implement FIFO rate limiting on AvatarCache.store_avatar(). It includes a test case (shock! horror!).

What this patch does *not* fix is any case in Empathy where AvatarCache.load_avatar() is called many times in parallel. Any FD exhaustion occurring as a result of that can’t be fixed in folks because folks returns a LoadableIcon — the g_loadable_icon_load() call will be inside Empathy somewhere. I haven’t investigated whether this could actually be a problem in Empathy though. Certainly the stack trace in comment #0 shows the problem being caused by AvatarCache.store_avatar() calls. (Thanks for the detailed bug report, by the way, Maciej!)

Sorry it took so long to get round to this. I was hoping to avoid fixing it by eliminating AvatarCache entirely (it should really be implemented in EDS and Tracker, rather than in folks), but that’s a much bigger job.
Comment 4 Philip Withnall 2014-04-06 10:23:23 UTC
Created attachment 273653 [details] [review]
core: Rate-limit AvatarCache.store_avatar() to prevent FD exhaustion

If connecting to a new EDS address book, or doing something else which
may cause a torrent of AvatarCache.store_avatar() calls, it is possible
to hit the operating system’s file descriptor limit, which causes
further store operations to fail.

Implement a simple FIFO rate limit on concurrent
AvatarCache.store_avatar() calls to try and ensure this won’t happen. It
is still possible if the process calls store_avatar() several times
while already near the FD limit, but then failure is pretty inevitable
anyway, and is already handled gracefully.

The changes are implemented in a self-contained wrapper function around
store_avatar(), and only result in memory allocations in the queueing
case.

A test case is included. This does not affect the AvatarCache API or
ABI.
Comment 5 Travis Reitter 2014-04-07 17:44:42 UTC
Review of attachment 273653 [details] [review]:

Looks good to me.
Comment 6 Philip Withnall 2014-04-07 20:02:47 UTC
Attachment 273653 [details] pushed as 2001d7a - core: Rate-limit AvatarCache.store_avatar() to prevent FD exhaustion