Hi all again,
Time is running out for this machine...
After spending some time on debian-glibc it seems they are not convinced that it is pthread crashing on my machine, but something happening in the other threads.
So lets get to the tracing...
after I manually kill PD this is what I'm seeing in gdb:
Program received signal SIGTERM, Terminated. [Switching to Thread 1076308992 (LWP 9384)] 0xffffe410 in __kernel_vsyscall () (gdb) (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0x4012f288 in pthread_join () from /lib/tls/i686/cmov/libpthread.so.0 #2 0x403f7dad in videoV4L::stopTransfer () from /usr/lib/pd/extra/Gem.pd_linux #3 0x403f7f66 in videoV4L::setNorm () from /usr/lib/pd/extra/Gem.pd_linux #4 0x403f3755 in pix_videoNEW::normMess () from /usr/lib/pd/extra/Gem.pd_linux #5 0x403f3f1a in pix_videoNEW::modeMessCallback () from /usr/lib/pd/extra/Gem.pd_linux #6 0x0809ba47 in pd_typedmess () #7 0x00000000 in ?? () #8 0x00000000 in ?? () #9 0x00000000 in ?? () #10 0x00000000 in ?? () #11 0x00000000 in ?? () #12 0x00000000 in ?? () #13 0x00000000 in ?? () #14 0x00000000 in ?? () #15 0x00000000 in ?? () #16 0x00000000 in ?? () #17 0x00000000 in ?? () #18 0x00000000 in ?? () #19 0xbfffdc30 in ?? () #20 0x00000000 in ?? () #21 0xbfffdc00 in ?? () #22 0xbfffdc20 in ?? () #23 0xbfffe1b8 in ?? () #24 0x0025771c in ?? () #25 0x00000000 in ?? () #26 0x08257628 in ?? () #27 0x00000000 in ?? () #28 0x080eccff in _IO_stdin_used () #29 0x082147b8 in ?? () #30 0x0809cf77 in outlet_anything () #31 0x08250728 in ?? () #32 0x080eccc3 in _IO_stdin_used () #33 0xbfffdc78 in ?? () #34 0x4050244c in ?? () from /usr/lib/pd/extra/Gem.pd_linux #35 0x08250728 in ?? () #36 0xbfffdc60 in ?? () #37 0xbfffdc78 in ?? () #38 0x08257690 in ?? () #39 0x080f73d0 in stderr () #40 0x00000002 in ?? () #41 0x082318e0 in ?? () #42 0x0809cf77 in outlet_anything () #43 0x00000000 in ?? () #44 0x00000000 in ?? () #45 0x08256e48 in ?? () #46 0x00000002 in ?? () #47 0x080f73d0 in stderr () #48 0x0820b558 in ?? () #49 0x082508fc in ?? () #50 0x0809b696 in pd_typedmess () #51 0x404a60cc in GemMan::m_border () from /usr/lib/pd/extra/Gem.pd_linux #52 0x00000000 in ?? () #53 0xbfffdcc8 in ?? () #54 0x40331af1 in GemMan::startRendering () from /usr/lib/pd/extra/Gem.pd_linux Previous frame inner to this frame (corrupt stack?) (gdb) info threads 2 Thread 1146301360 (LWP 9389) 0xffffe410 in __kernel_vsyscall () * 1 Thread 1076308992 (LWP 9384) 0xffffe410 in __kernel_vsyscall () (gdb) thread 2 [Switching to thread 2 (Thread 1146301360 (LWP 9389))]#0 0xffffe410 in __kernel_vsyscall () (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0x40203fe9 in ioctl () from /lib/tls/i686/cmov/libc.so.6 #2 0x403f7481 in videoV4L::capturing () from /usr/lib/pd/extra/Gem.pd_linux #3 0x4012ee40 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0 #4 0x4020c60e in clone () from /lib/tls/i686/cmov/libc.so.6
This means very little to me, and it sure meant little to the glibc folks. For completness here is the same deal for PDP, which is also crashing with pdp_v4l:
Program received signal SIGTERM, Terminated. [Switching to Thread 1076308992 (LWP 9395)] 0xffffe410 in __kernel_vsyscall () (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0x4012f288 in pthread_join () from /lib/tls/i686/cmov/libpthread.so.0 #2 0x40294440 in pdp_sdl_setup () from /usr/lib/pd/extra/pdp.pd_linux (gdb) info threads 3 Thread 1109560240 (LWP 9399) 0xffffe410 in __kernel_vsyscall () 2 Thread 1099164592 (LWP 9398) 0xffffe410 in __kernel_vsyscall () * 1 Thread 1076308992 (LWP 9395) 0xffffe410 in __kernel_vsyscall () (gdb) thread 2 [Switching to thread 2 (Thread 1099164592 (LWP 9398))]#0 0xffffe410 in __kernel_vsyscall () (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0x40130d46 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/i686/cmov/libpthread.so.0 #2 0x402b16fc in pdp_procqueue_flush () from /usr/lib/pd/extra/pdp.pd_linux #3 0x402b7350 in ?? () from /usr/lib/pd/extra/pdp.pd_linux #4 0x00000001 in ?? () #5 0x00000001 in ?? () #6 0x402b7320 in ?? () from /usr/lib/pd/extra/pdp.pd_linux #7 0x00000000 in ?? () #8 0x00000000 in ?? () #9 0x402b1898 in pdp_procqueue_add () from /usr/lib/pd/extra/pdp.pd_linux #10 0x402b7320 in ?? () from /usr/lib/pd/extra/pdp.pd_linux #11 0x40137ff4 in ?? () from /lib/tls/i686/cmov/libpthread.so.0 #12 0x00000000 in ?? () #13 0x007d0f00 in ?? () #14 0x4183e4c8 in ?? () #15 0x4000aaa0 in _dl_rtld_di_serinfo () from /lib/ld-linux.so.2 #16 0x00000002 in ?? () #17 0x4183e490 in ?? () #18 0x00000000 in ?? () #19 0x00000000 in ?? () #20 0x00000000 in ?? () #21 0x4183ebb0 in ?? () #22 0x00000000 in ?? () #23 0x00000000 in ?? () #24 0x00000000 in ?? () #25 0x40137ff4 in ?? () from /lib/tls/i686/cmov/libpthread.so.0 #26 0x00000000 in ?? () #27 0x007d0f00 in ?? () #28 0x4183e4c8 in ?? () #29 0x4183e470 in ?? () #30 0x4012ee14 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0 #31 0x4020c60e in clone () from /lib/tls/i686/cmov/libc.so.6 (gdb) thread 3 [Switching to thread 3 (Thread 1109560240 (LWP 9399))]#0 0xffffe410 in __kernel_vsyscall () (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0x40203fe9 in ioctl () from /lib/tls/i686/cmov/libc.so.6 #2 0x40294626 in pdp_sdl_setup () from /usr/lib/pd/extra/pdp.pd_linux #3 0x0000000a in ?? () #4 0x40047612 in snd_config_searcha () from /usr/lib/libasound.so.2 #5 0x4020c60e in clone () from /lib/tls/i686/cmov/libc.so.6
Not I am running libc 2.3.5 BUT the above trace contains:
#1 0x40130d46 in pthread_cond_wait@@GLIBC_2.3.2 ()
So looking through here I noticed that /lib/tls/i686/cmov/libpthread.so.0 is what is being used, which says:
Native POSIX Threads Library by Ulrich Drepper et al Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Forced unwind support included.
And /lib/tls/i686/cmov/libc.so.6 says:
GNU C Library stable release version 2.3.5, by Roland McGrath et al. Copyright (C) 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by GNU CC version 4.0.2 20050725 (prerelease) (Debian 4.0.1-3). Compiled on a Linux 2.6.13 system on 2005-08-27. Available extensions: GNU libio by Per Bothner crypt add-on version 2.1 by Michael Glad and others Native POSIX Threads Library by Ulrich Drepper et al BIND-8.2.3-T5B NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk Thread-local storage support included. For bug reporting instructions, please see: http://www.gnu.org/software/libc/bugs.html.
What I'm confused about it how this libc differs from /lib/libc.so.6:
Compiled by GNU CC version 4.0.2 20050725 (prerelease) (Debian 4.0.1-3). Compiled on a Linux 2.6.13 system on 2005-08-27. Available extensions: GNU libio by Per Bothner crypt add-on version 2.1 by Michael Glad and others linuxthreads-0.10 by Xavier Leroy BIND-8.2.3-T5B libthread_db work sponsored by Alpha Processor Inc NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk Thread-local storage support included. For bug reporting instructions, please see: http://www.gnu.org/software/libc/bugs.html.
So why is /lib/tls/i686/cmov/libc.so.6 used and not /lib/libc.so.6 ?
Anyhow I'm way over my head debugging this so please lend me a hand, what the heck is going on?!?!?! pdp_v4l does not happen to be very similar to pix_video does it? Perhaps based on pix_video?
Thanks to all on glibc for at least getting me this far, I hope the gem and PDP developers have a closer look at this.
b.