Bug 80630

Summary: Hideous slowness when missing sounds ...
Product: libcanberra Reporter: Michael Meeks <michael.meeks>
Component: UnspecifiedAssignee: Lennart Poettering <lennart>
Status: NEW --- QA Contact:
Severity: major    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Michael Meeks 2014-06-28 14:09:06 UTC
For whatever reason (I don't like beeps so perhaps there is no audio theme installed) - libcanberra (gtk?) consumes quite a chunk of time and energy every time LibreOffice shows a dialog.

Interestingly, it seems to do this between us mapping the dialog and it getting rendered - no doubt this is a consequence of our lame-ass idle loop handling (almost certainly) - but ... it'd be great if it happened just once but ...

I get traces like this:

#0  0xb7fdc424 in __kernel_vsyscall ()
#1  0xb7e4620b in open () at ../sysdeps/unix/syscall-template.S:81
#2  0xb7dda29c in __GI__IO_file_open (fp=fp@entry=0x87de6c0, filename=filename@entry=0x87ded20 "/usr/share/xfce/sounds/freedesktop/window.wav", 
    posix_mode=posix_mode@entry=0, prot=prot@entry=438, read_write=read_write@entry=8, is32not64=is32not64@entry=0) at fileops.c:227
#3  0xb7dda46b in _IO_new_file_fopen (fp=fp@entry=0x87de6c0, filename=filename@entry=0x87ded20 "/usr/share/xfce/sounds/freedesktop/window.wav", 
    mode=<optimized out>, mode@entry=0xb0352f51 "r", is32not64=is32not64@entry=0) at fileops.c:332
#4  0xb7dceb7b in __fopen_internal (filename=filename@entry=0x87ded20 "/usr/share/xfce/sounds/freedesktop/window.wav", 
    mode=mode@entry=0xb0352f51 "r", is32=is32@entry=0) at iofopen.c:90
#5  0xb7dd114b in _IO_fopen64 (filename=filename@entry=0x87ded20 "/usr/share/xfce/sounds/freedesktop/window.wav", mode=mode@entry=0xb0352f51 "r")
    at iofopen64.c:39
#6  0xb034d36d in ca_sound_file_open (_f=_f@entry=0x87dedd0, fn=fn@entry=0x87ded20 "/usr/share/xfce/sounds/freedesktop/window.wav")
    at read-sound-file.c:62
#7  0xb034f71d in find_sound_for_suffix (f=f@entry=0x87dedd0, sfopen=sfopen@entry=0xb034d300 <ca_sound_file_open>, 
    sound_path=sound_path@entry=0x0, theme_name=theme_name@entry=0x87b1b10 "freedesktop", name=name@entry=0x87eb7a0 "window", 
    path=path@entry=0x87dce80 "/usr/share/xfce/sounds", suffix=<optimized out>, suffix@entry=0xb03539cc ".wav", locale=locale@entry=0x0, 
    subdir=subdir@entry=0x0) at sound-theme-spec.c:461
#8  0xb034faa8 in find_sound_in_locale (f=0x87dedd0, f@entry=0x87eb7a0, sfopen=0xb034d300 <ca_sound_file_open>, sfopen@entry=0x87b1b10, 
    sound_path=0x0, theme_name=0x87b1b10 "freedesktop", name=0x87eb7a0 "window", path=0x87de608 "/usr/share/xfce", locale=0x0, subdir=0x0)
    at sound-theme-spec.c:498
#9  0xb034fde9 in find_sound_for_locale (f=0x87eb7a0, f@entry=0x87dedd0, sfopen=0x87b1b10, sfopen@entry=0xb034d300 <ca_sound_file_open>, 
    sound_path=sound_path@entry=0x0, theme_name=theme_name@entry=0x87b1b10 "freedesktop", name=name@entry=0x87eb7a0 "window", 
    path=path@entry=0x87de608 "/usr/share/xfce", locale=0x0, locale@entry=0x8356320 "en_US.utf8", subdir=subdir@entry=0x0)
    at sound-theme-spec.c:562
#10 0xb0350064 in find_sound_for_name (f=f@entry=0x87dedd0, sfopen=sfopen@entry=0xb034d300 <ca_sound_file_open>, 
    sound_path=sound_path@entry=0x0, theme_name=theme_name@entry=0x87b1b10 "freedesktop", name=name@entry=0x87eed8c "window-new", 
    path=path@entry=0x87de608 "/usr/share/xfce", locale=locale@entry=0x8356320 "en_US.utf8", subdir=subdir@entry=0x0) at sound-theme-spec.c:600
#11 0xb0350d86 in find_sound_in_subdir (f=f@entry=0x87dedd0, sfopen=0xb034d300 <ca_sound_file_open>, sfopen@entry=0x87de608, sound_path=0x0, 
    theme_name=0x87b1b10 "freedesktop", name=0x87eed8c "window-new", locale=0x8356320 "en_US.utf8", subdir=0x0) at sound-theme-spec.c:650
#12 0xb035116b in find_sound_in_theme (f=f@entry=0x87dedd0, sfopen=0x87de608, sfopen@entry=0xb034d300 <ca_sound_file_open>, 
    sound_path=sound_path@entry=0x0, t=0x87b1b10, name=name@entry=0x87eed8c "window-new", locale=locale@entry=0x8356320 "en_US.utf8", 
    profile=<optimized out>, profile@entry=0xb0353a99 "stereo") at sound-theme-spec.c:721
#13 0xb0351668 in find_sound_for_theme (profile=0xb0353a99 "stereo", locale=0x8356320 "en_US.utf8", name=0x87eed8c "window-new", 
    theme=0x87b0f94 "freedesktop", t=0x87b1418, sound_path=0x0, sfopen=0xb034d300 <ca_sound_file_open>, f=0x87dedd0) at sound-theme-spec.c:750
#14 ca_lookup_sound_with_callback (f=f@entry=0x87dedd0, sfopen=0xb034d300 <ca_sound_file_open>, sound_path=sound_path@entry=0x0, 
    t=t@entry=0x87b1418, cp=cp@entry=0x87b0dc0, sp=sp@entry=0x87eb9b0) at sound-theme-spec.c:827
#15 0xb03519e5 in ca_lookup_sound (f=f@entry=0x87dedd0, sound_path=sound_path@entry=0x0, t=t@entry=0x87b1418, cp=0x87b0dc0, 
    sp=sp@entry=0x87eb9b0) at sound-theme-spec.c:849
#16 0xac8a7a99 in oss_driver_play (c=0x87b0cb8, id=0, proplist=0x87eb9b0, cb=0x0, userdata=0x0) at oss.c:434
---Type <return> to continue, or q <return> to quit---
#17 0xb03526b3 in driver_play (c=c@entry=0x87b0cb8, id=id@entry=0, pl=pl@entry=0x87eb9b0, cb=cb@entry=0x0, userdata=userdata@entry=0x0)
    at dso.c:342
#18 0xb034b298 in ca_context_play_full (c=0x87b0cb8, id=id@entry=0, p=p@entry=0x87eb9b0, cb=cb@entry=0x0, userdata=userdata@entry=0x0)
    at common.c:522
#19 0xac6fb583 in multi_driver_play (c=0x87b8978, id=0, proplist=0x87eb9b0, cb=0x0, userdata=0x0) at multi.c:273
#20 0xb03526b3 in driver_play (c=c@entry=0x87b8978, id=id@entry=0, pl=pl@entry=0x87eb9b0, cb=cb@entry=0x0, userdata=userdata@entry=0x0)
    at dso.c:342
#21 0xb034b298 in ca_context_play_full (c=0x87b8978, id=0, p=0x87eb9b0, cb=0x0, userdata=0x0) at common.c:522
#22 0xb035aa16 in ca_gtk_play_for_widget () from /usr/lib/libcanberra-gtk.so.0
#23 0xb06460de in ?? () from /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
#24 0xb06463de in ?? () from /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
#25 0xb0ba5748 in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#26 0xb3eb0530 in g_idle_dispatch (source=source@entry=0x87eabb0, callback=0xb0ba56f0, user_data=0x87f0810) at gmain.c:5251
#27 0xb3eb37de in g_main_dispatch (context=0x8550f28, context@entry=0x85a8e28) at gmain.c:3066
#28 g_main_context_dispatch (context=context@entry=0x8550f28) at gmain.c:3642

And I get a huge slew of files:

[pid 18247] access("/opt/kde3/share/sounds/window.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/opt/kde3/share/sounds/window.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/opt/kde3/share/sounds/window.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/opt/kde3/share/sounds/window.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/home/michael/.local/share/sounds/freedesktop/stereo/en_US.utf8/window-new.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en_US.utf8/window-new.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en_US.utf8/window-new.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en_US.utf8/window-new.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/home/michael/.local/share/sounds/freedesktop/stereo/en/window-new.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en/window-new.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en/window-new.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en/window-new.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/home/michael/.local/share/sounds/freedesktop/stereo/C/window-new.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/C/window-new.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/C/window-new.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/C/window-new.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/home/michael/.local/share/sounds/freedesktop/stereo/window-new.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/window-new.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/window-new.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/window-new.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/home/michael/.local/share/sounds/freedesktop/stereo/en_US.utf8/window.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en_US.utf8/window.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en_US.utf8/window.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en_US.utf8/window.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/home/michael/.local/share/sounds/freedesktop/stereo/en/window.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en/window.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en/window.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/en/window.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/home/michael/.local/share/sounds/freedesktop/stereo/C/window.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/C/window.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/C/window.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/C/window.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/home/michael/.local/share/sounds/freedesktop/stereo/window.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/window.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/window.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/home/michael/.local/share/sounds/freedesktop/stereo/window.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/usr/share/xfce/sounds/freedesktop/stereo/en_US.utf8/window-new.disabled", F_OK) = -1 ENOENT (No such file or directory)
[pid 18247] open("/usr/share/xfce/sounds/freedesktop/stereo/en_US.utf8/window-new.oga", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/usr/share/xfce/sounds/freedesktop/stereo/en_US.utf8/window-new.ogg", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] open("/usr/share/xfce/sounds/freedesktop/stereo/en_US.utf8/window-new.wav", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 18247] access("/usr/share/xfce/sounds/freedesktop/stereo/en/window-new.disabled", F_OK) = -1 ENOENT (No such file or directory)

to excerpt a bit in the middle - but there are many thousands of these. I have:

libcanberra-gtk2-module-0.30-6.1.3.i586
libcanberra-gtk3-module-0.30-6.1.3.i586
libcanberra0-debuginfo-0.30-6.1.3.i586
libcanberra-gtk0-0.30-6.1.3.i586
canberra-gtk-play-0.30-6.1.3.i586
libcanberra-gtk3-0-debuginfo-0.30-6.1.3.i586
libcanberra-gtk3-0-0.30-6.1.3.i586
libcanberra-devel-0.30-6.1.3.i586
libcanberra-gtk3-module-debuginfo-0.30-6.1.3.i586
libcanberra-gtk-module-common-0.30-6.1.3.i586
libcanberra0-0.30-6.1.3.i586

open openSUSE 13.1 - and am using gtk2.
Comment 1 Michael Meeks 2014-06-28 14:16:53 UTC
And of course, the real slowness is there even when the canberra module is moved away =) so while this looks like the bad boy, perhaps it's irrelevant in the big picture.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.