Le 24/09/13 12:43, Stéphane Glondu a écrit :
I am experiencing the same bug.
My computer is a Dell Latitude E6220. I can reliably reproduce the bug
with the following steps:
1. Switch off wireless (using the hardware button)
2. Suspend
3. Resume
4. Switch on wireless
Great. At least we have an easy way to reproduce the problem.
Le 02/08/2013 10:56, Ludovic Rousseau a écrit :
Can you:
1. run pcscd inside gdb
2. stop pcscd using Ctrl-C while in the 100% CPU loop
3. use the "bt" gdb command to generate a backtrace
4. send the result
There:
(gdb) bt
#0 0x00007ffff72d6793 in select () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x0000000000410b70 in ?? ()
#2 0x00000000004035b0 in ?? ()
#3 0x00007ffff7216995 in __libc_start_main () from
/lib/x86_64-linux-gnu/libc.so.6
#4 0x00000000004038de in _start ()
I've noticed that only one thread (and not the main one) was consuming
100% CPU:
(gdb) thread apply all bt
Thread 5 (Thread 0x7ffff55c1700 (LWP 8126)):
#0 0x00007ffff72d6793 in select () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x000000000040e2ab in ?? ()
#2 0x00007ffff75a8e0e in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#3 0x00007ffff72dd93d in clone () from /lib/x86_64-linux-gnu/libc.so.6
Thread 4 (Thread 0x7ffff5dc2700 (LWP 8125)):
#0 0x00007ffff72d219d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff6dcd73e in poll (__timeout=60000, __nfds=4,
__fds=0x7ffff00009c0) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#2 handle_events (ctx=ctx@entry=0x6586c0, tv=tv@entry=0x7ffff5dc1d80) at
../../libusb/io.c:1963
#3 0x00007ffff6dce3a3 in libusb_handle_events_timeout_completed (ctx=0x6586c0,
tv=tv@entry=0x7ffff5dc1dc0, completed=completed@entry=0x0) at
../../libusb/io.c:2126
#4 0x00007ffff6dce46f in libusb_handle_events (ctx=<optimized out>) at
../../libusb/io.c:2202
#5 0x00007ffff6fe8118 in ?? () from
/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so
#6 0x00007ffff6fe2fc2 in ?? () from
/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so
#7 0x0000000000405eed in ?? ()
#8 0x00007ffff75a8e0e in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#9 0x00007ffff72dd93d in clone () from /lib/x86_64-linux-gnu/libc.so.6
Thread 3 (Thread 0x7ffff65c3700 (LWP 8124)):
#0 0x00007ffff72d219d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff6dd36f8 in poll (__timeout=-1, __nfds=2, __fds=0x7ffff65c2ec0)
at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#2 linux_udev_event_thread_main (arg=<optimized out>) at
../../libusb/os/linux_udev.c:175
#3 0x00007ffff75a8e0e in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#4 0x00007ffff72dd93d in clone () from /lib/x86_64-linux-gnu/libc.so.6
Thread 2 (Thread 0x7ffff6dc4700 (LWP 8123)):
#0 0x00007ffff72d219d in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff6dd36f8 in poll (__timeout=-1, __nfds=2, __fds=0x7ffff6dc3ec0)
at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#2 linux_udev_event_thread_main (arg=<optimized out>) at
../../libusb/os/linux_udev.c:175
#3 0x00007ffff75a8e0e in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#4 0x00007ffff72dd93d in clone () from /lib/x86_64-linux-gnu/libc.so.6
Thread 1 (Thread 0x7ffff7fdb700 (LWP 8119)):
#0 0x00007ffff72d6793 in select () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x0000000000410b70 in ?? ()
#2 0x00000000004035b0 in ?? ()
#3 0x00007ffff7216995 in __libc_start_main () from
/lib/x86_64-linux-gnu/libc.so.6
#4 0x00000000004038de in _start ()
The loop seems to happen in thread 2. With strace, I see an active
poll-recvmsg loop.
The thread 2 is doing the libudev management.
5. kill any running pcscd
6. run in a terminal "sudo pcscd -dfa"
7. send me the result
After resume, I get:
31404819 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x413C, PID: 0x8187, path: /dev/bus/usb/001/007
00002486 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x413C, PID: 0x8187, path: /dev/bus/usb/001/007
00003401 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x413C, PID: 0x8187, path: /dev/bus/usb/001/007
00000944 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x413C, PID: 0x8187, path: /dev/bus/usb/001/007
Then after a while, I get:
29258929 hotplug_libudev.c:587:HPEstablishUSBNotifications() Device removed
00000412 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000114 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000116 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x8087, PID: 0x0024, path: /dev/bus/usb/001/002
00000143 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
00000103 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
00000116 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x8087, PID: 0x0024, path: /dev/bus/usb/002/002
00000119 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x0A5C, PID: 0x5800, path: /dev/bus/usb/002/003
00000131 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x0A5C, PID: 0x5800, path: /dev/bus/usb/002/003
00000130 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x8087, PID: 0x0024, path: /dev/bus/usb/002/002
00000034 hotplug_libudev.c:587:HPEstablishUSBNotifications() Device removed
00000252 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000064 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000064 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x8087, PID: 0x0024, path: /dev/bus/usb/001/002
00000080 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
00000061 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
00000063 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x8087, PID: 0x0024, path: /dev/bus/usb/002/002
00000065 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x0A5C, PID: 0x5800, path: /dev/bus/usb/002/003
00000074 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x0A5C, PID: 0x5800, path: /dev/bus/usb/002/003
00000072 hotplug_libudev.c:260:get_driver() Looking for a driver for VID:
0x8087, PID: 0x0024, path: /dev/bus/usb/002/002
and so on...
What version of pcscd are you using?
Can you run: "udevadm monitor" in another terminal and then try to reproduce
the problem using the 4 steps?
Send me the output of the command.
Bye
--
Dr. Ludovic Rousseau
--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org