Running x11-misc/xsnow on the desktop for half an hour, it suddenly stopped, leaving Santa Claus, all of the reindeer and snowflakes frozen and stuck in the sky. =( Attaching to the xsnow process with gave me the following results: (gdb) bt #0 0x00007f42b5527108 in __lll_mutex_lock_wait () from /lib/libc.so.6 #1 0x00007f42b548f25f in _L_lock_10 () from /lib/libc.so.6 #2 0x00007f42b548f081 in __random () at random.c:296 #3 0x00007f42b548f749 in rand () at rand.c:28 #4 0x0000000000402a88 in RandInt () #5 0x0000000000402aa0 in sig_alarm () #6 <signal handler called> #7 __random_r (buf=0x7f42b57954a0, result=0x7fffbe35ed14) at random_r.c:404 #8 0x00007f42b548f092 in __random () at random.c:298 #9 0x00007f42b548f749 in rand () at rand.c:28 #10 0x0000000000402a88 in RandInt () #11 0x00000000004032f7 in UpdateSnowflake () #12 0x00000000004041c1 in main () #13 0x00007f42b5479b74 in __libc_start_main (main=0x403880 <main>, argc=3, ubp_av=0x7fffbe35f008, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7fffbe35eff8) at libc-start.c:229 #14 0x0000000000401b59 in _start () (gdb) disassemble Dump of assembler code for function __lll_mutex_lock_wait: 0x00007f42b55270f0 <__lll_mutex_lock_wait+0>: push %r10 0x00007f42b55270f2 <__lll_mutex_lock_wait+2>: push %rdx 0x00007f42b55270f3 <__lll_mutex_lock_wait+3>: xor %r10,%r10 0x00007f42b55270f6 <__lll_mutex_lock_wait+6>: mov $0x2,%edx 0x00007f42b55270fb <__lll_mutex_lock_wait+11>: xor %esi,%esi 0x00007f42b55270fd <__lll_mutex_lock_wait+13>: cmp %edx,%eax 0x00007f42b55270ff <__lll_mutex_lock_wait+15>: jne 0x7f42b5527108 <__lll_mutex_lock_wait+24> 0x00007f42b5527101 <__lll_mutex_lock_wait+17>: mov $0xca,%eax 0x00007f42b5527106 <__lll_mutex_lock_wait+22>: syscall 0x00007f42b5527108 <__lll_mutex_lock_wait+24>: mov %edx,%eax 0x00007f42b552710a <__lll_mutex_lock_wait+26>: xchg %eax,(%rdi) 0x00007f42b552710c <__lll_mutex_lock_wait+28>: test %eax,%eax 0x00007f42b552710e <__lll_mutex_lock_wait+30>: jne 0x7f42b5527101 <__lll_mutex_lock_wait+17> 0x00007f42b5527110 <__lll_mutex_lock_wait+32>: pop %rdx 0x00007f42b5527111 <__lll_mutex_lock_wait+33>: pop %r10 0x00007f42b5527113 <__lll_mutex_lock_wait+35>: retq End of assembler dump. By setting a breakpoint at 0x7f42b552710a I was able to determine, that it never left the syscall. I left xsnow attached to GDB just in case. sys-libs/glibc-2.6.1 sys-kernel/gentoo-sources-2.6.27-r3 x11-misc/xsnow-1.42 Kernel modules loaded: nls_iso8859_1, nls_cp437, vfat, fat, tun, bridge, stp, llc, snd_seq_midi, snd_seq_oss, snd_seq_midi_event, snd_seq, snd_pcm_oss, snd_mixer_oss, snd_mpu401, snd_via82xx, snd_ac97_codec, ac97_bus, snd_pcm, snd_timer, snd_page_alloc, snd_mpu401_uart, snd_rawmidi, snd_seq_device, snd. Here's most of emerge --info: Portage 2.1.4.5 (default/linux/amd64/2008.0/developer, gcc-4.1.2, glibc-2.6.1-r0, 2.6.27-gentoo-r3-worship x86_64) ================================================================= System uname: 2.6.27-gentoo-r3-worship x86_64 AMD Athlon(tm) 64 Processor 3200+ Timestamp of tree: Sat, 29 Nov 2008 14:05:01 +0000 distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] app-shells/bash: 3.2_p33 dev-lang/python: 2.5.2-r7 dev-util/cmake: 2.4.6-r1 sys-apps/baselayout: 1.12.11.1 sys-apps/sandbox: 1.2.18.1-r2 sys-devel/autoconf: 2.13, 2.61-r2 sys-devel/automake: 1.4_p6, 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1 sys-devel/binutils: 2.18-r3 sys-devel/gcc-config: 1.4.0-r4 sys-devel/libtool: 1.5.26 virtual/os-headers: 2.6.27-r2 ACCEPT_KEYWORDS="amd64" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe -march=athlon64 -ggdb" CHOST="x86_64-pc-linux-gnu" CXXFLAGS="-O2 -pipe -march=athlon64 -ggdb" FEATURES="collision-protect cvs digest distlocks fixpackages metadata-transfer multilib-strict parallel-fetch sandbox sfperms sign splitdebug strict unmerge-orphans userfetch usersandbox" LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8" LDFLAGS="-Wl,-O1" LINGUAS="en et en_GB en_US de" MAKEOPTS="-j2" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS Please save Santa!
I still think this is at least a glibc issue, because the lock happens in rand().
(In reply to comment #1) > I still think this is at least a glibc issue, because the lock happens in > rand(). > It's been ~2 years. Can you retry with up-to-date glibc >= 2.10, and see if you can still reproduce? Reopen if so.
(In reply to comment #2) > (In reply to comment #1) > > I still think this is at least a glibc issue, because the lock happens in > > rand(). > > > > It's been ~2 years. Can you retry with up-to-date glibc >= 2.10, and see if you > can still reproduce? Reopen if so. > Running xsnow inside Xnest didn't deadlock. Although since its been ~2 years, I'm running it on a different processor, different Gentoo setup (glibc-2.10.1-r1) etc. I used Xnest because xsnow doesn't work well with KDE 4.