Archive for January, 2009

Mozilla Evangelism joke

January 26, 2009

From https://wiki.mozilla.org/Evangelism:

Firefox leads the pack of web browsers with a great balance of leading web standards and web developer features, performance, end user utility along with a great end user feel.

Let’s rather say: your competitors are even worse than you, which prevented you from falling to last place. Let me count the core files (many)… and the time spent waiting for DNS (way too much)… and the memory usage (top position, every time)… and the number of open windows (finally a really low number)…

To speak of “leading” seems misleading.

First look at KDE4

January 12, 2009

Just installed kubuntu-desktop package on my Ubuntu Intrepid test system, to give KDE 4 (4.1.3) a first try. Sadly I found it very unimpressive for now… Lots of apparent problems to start with:

  • everything graphics-related is dog-slow: the desktop-window sidebar fades in at 2fps and makes cursor stutter (maybe the VIA graphics chip is not well-supported by KDE – but, well, Gnome works fine with it so I’m reluctant to blame the hardware)
  • changing screen resolution is not stored over re-login, which is bad because Ubuntu detects a too high resolution for my monitor so I have to manually set resolution every time after starting KDE; though it’s nice that the resolution dialog automatically picks highest refresh rate – the Gnome dialog should do that as well
  • remote desktop sharing (VNC, through krfb) was difficult to find for me (why is it not in system settings?) and is then completely messed up on receiver side – the latter might be caused by manually changing screen resolution before starting krfb

And when ignoring these problems, there’s still a quite unpolished desktop environment with the KDE-usual UI flaws (lots of systray icons, some don’t even have tooltips to explain what they do there), incoherent mix of icon styles, and nothing really impressively new. Maybe KDE 4.2 will solve the technical problems and bring some nice goodies, but so far I’m glad to stay with 3.5 despite its own shortcomings and bugs.

Debug package for libwnck

January 11, 2009

Tried to get debugging symbols for libwnck but Debian doesn’t offer a -dbg package. Found http://debug.debian.net/ which looked quite good, but turns out that there’s no -dbgsym package built for Lenny (only for the old Etch version, and for the Lenny -dev package – weird). Finally gave in and built -dbg package on my own, following steps at http://www.calivia.com/blog/mike/debug-packages-for-debian:

apt-get source libwnck
cd libwnck-2.22.3/

edit debian/control.in and append this part:

Package: libwnck-dbg
Architecture: all
Section: libs
Depends: ${misc:Depends}
Replaces: libwnck-1 (<= 0.10-1)
Conflicts: libwnck-1 (<= 0.10-1)
Description: Window Navigator Construction Kit - debug symbols
 A library to use for writing pagers and task lists.
 .
 This package contains debug symbols.

(Took me two builds to notice that there’s a debian/control.in file which has to be edited instead of the debian/control file :-/ )

There was no dh_strip in debian/rules but instead some CDBS references… Turns out that “in compat mode 5, CDBS automatically detect -dbg packages and pass the needed arguments to dh_strip” – so no further changes required.

After

dch -i
debuild -S
debuild

some shiny new packages are ready:

libwnck-common_2.22.3-1_all.deb
libwnck22_2.22.3-2~og1_i386.deb
libwnck-dev_2.22.3-2~og1_i386.deb
libwnck-dbg_2.22.3-2~og1_i386.deb

dpkg -i the debs, and…. Success!

Before:

(gdb) bt
#0  0xb7f89424 in __kernel_vsyscall ()
#1  0xb70694b8 in writev () from /lib/i686/cmov/libc.so.6
#2  0xb6bd3303 in _xcb_conn_wait (c=0x9130ba8, cond=0x9131c6c,
    vector=0xbfba4968, count=0xbfba4964) at xcb_conn.c:170
#3  0xb6bd390b in _xcb_out_send (c=0x9130ba8, vector=0xbfba4968,
    count=0xbfba4964) at xcb_out.c:279
#4  0xb6bd3a3f in _xcb_out_flush_to (c=0x9130ba8, request=12803)
    at xcb_out.c:297
#5  0xb6bd4f78 in xcb_wait_for_reply (c=0x9130ba8, request=12803, e=0xbfba4a28)
    at xcb_in.c:325
#6  0xb6e5eb19 in _XReply () from /usr/lib/libX11.so.6
#7  0xb6e4c65d in XQueryTree () from /usr/lib/libX11.so.6
#8  0xb7f0750f in ?? () from /usr/lib/libwnck-1.so.22
#9  0x09130668 in ?? ()
#10 0x0bc0211f in ?? ()
#11 0xbfba4aa8 in ?? ()
#12 0xbfba4aa8 in ?? ()
#13 0xbfba4aa4 in ?? ()
#14 0xbfba4aa0 in ?? ()
#15 0x09130668 in ?? ()
#16 0xb7f1200f in ?? () from /usr/lib/libwnck-1.so.22
#17 0x00000000 in ?? ()
(gdb)

After:

(gdb) bt
#0  0xb6f7b9e3 in pthread_mutex_lock () from /lib/i686/cmov/libpthread.so.0
#1  0xb707b926 in pthread_mutex_lock () from /lib/i686/cmov/libc.so.6
#2  0xb6bcf0c5 in _xcb_lock_io (c=0x97e6ba8) at xcb_conn.c:277
#3  0xb6bcf26c in _xcb_conn_wait (c=0x97e6ba8, cond=0x97e7c6c,
    vector=0xbf89ff68, count=0xbf89ff64) at xcb_conn.c:347
#4  0xb6bcf90b in _xcb_out_send (c=0x97e6ba8, vector=0xbf89ff68,
    count=0xbf89ff64) at xcb_out.c:279
#5  0xb6bcfa3f in _xcb_out_flush_to (c=0x97e6ba8, request=18805)
    at xcb_out.c:297
#6  0xb6bd0f78 in xcb_wait_for_reply (c=0x97e6ba8, request=18805, e=0xbf8a0028)
    at xcb_in.c:325
#7  0xb6e5ab19 in _XReply () from /usr/lib/libX11.so.6
#8  0xb6e4865d in XQueryTree () from /usr/lib/libX11.so.6
#9  0xb7f034ff in wnck_find_pid_for_resource_r (xdisplay=0x97e6668,
    win_top=75497597, match_xid=2097152, mask=2097151, xid=0xbf8a0274,
    pid=0xbf8a0278) at util.c:336
#10 0xb7f03550 in wnck_find_pid_for_resource_r (xdisplay=0x97e6668,
    win_top=, match_xid=2097152, mask=2097151,
    xid=0xbf8a0274, pid=0xbf8a0278) at util.c:345
#11 0xb7f03550 in wnck_find_pid_for_resource_r (xdisplay=0x97e6668,
    win_top=, match_xid=2097152, mask=2097151,
    xid=0xbf8a0274, pid=0xbf8a0278) at util.c:345
#12 0xb7f03550 in wnck_find_pid_for_resource_r (xdisplay=0x97e6668,
    win_top=, match_xid=2097152, mask=2097151,
    xid=0xbf8a0274, pid=0xbf8a0278) at util.c:345
#13 0xb7f03550 in wnck_find_pid_for_resource_r (xdisplay=0x97e6668,
    win_top=, match_xid=2097152, mask=2097151,
    xid=0xbf8a0274, pid=0xbf8a0278) at util.c:345
#14 0xb7f03550 in wnck_find_pid_for_resource_r (xdisplay=0x97e6668,
    win_top=, match_xid=2097152, mask=2097151,
    xid=0xbf8a0274, pid=0xbf8a0278) at util.c:345
#15 0xb7f03550 in wnck_find_pid_for_resource_r (xdisplay=0x97e6668,
    win_top=, match_xid=2097152, mask=2097151,
    xid=0xbf8a0274, pid=0xbf8a0278) at util.c:345
#16 0xb7f0369c in wnck_pid_read_resource_usage_fill_cache (state=0xb7f19d78)
    at util.c:428
#17 0xb7241271 in g_idle_dispatch (source=0x9978130,
    callback=0xb6f7b9d7 , user_data=0xb7f19d78)
    at /tmp/buildd/glib2.0-2.16.6/glib/gmain.c:4090
#18 0xb72431b8 in IA__g_main_context_dispatch (context=0x97f95b8)
    at /tmp/buildd/glib2.0-2.16.6/glib/gmain.c:2012
#19 0xb7246853 in g_main_context_iterate (context=0x97f95b8, block=1,
    dispatch=1, self=0x9814cb0) at /tmp/buildd/glib2.0-2.16.6/glib/gmain.c:2645
#20 0xb7246d72 in IA__g_main_loop_run (loop=0x9a4ff78)
    at /tmp/buildd/glib2.0-2.16.6/glib/gmain.c:2853
#21 0xb78ebba9 in IA__gtk_main ()
    at /build/buildd/gtk+2.0-2.12.11/gtk/gtkmain.c:1163
#22 0xb7d7aac7 in Gtk::Main::run_impl () from /usr/lib/libgtkmm-2.4.so.1
#23 0xb7d7a8b2 in Gtk::Main::run () from /usr/lib/libgtkmm-2.4.so.1
#24 0x080561c1 in main (argc=159546256, argv=0x1) at procman.cpp:739
(gdb)

2 gigs of memory, pixelized

January 9, 2009

Physical memory on my desktop system, one pixel per 4kb memory page:

Black pixels are unused pages, dark-red pixels are pages used by a single application, light-red pixels are pages used by several applications (these are libraries, translation files and fonts I think). The noticeable “split” at near-half of the memory is probably the border of Highmem at 896MB.

This is a screenshot of (a slightly modified version of) kpagecount, one of the tools at http://selenic.com/repo/pagemap/, which uses the pagemap Linux kernel feature to get various information about memory usage.

Also, here’s a screenshot from another system, with 512 MB physical memory (the page sum doesn’t quite add up to that probably due to the amount reserved for graphics memory):