Hello, I have same problem on laptop Dell Latitude E6440.
From package usbutils version 1:005-1, command lsusb -t goes into infinite loop. Here is output of lsusb $ lsusb Bus 002 Device 004: ID 0a5c:5800 Broadcom Corp. BCM5880 Secure Applications Processor Bus 002 Device 003: ID 8087:07da Intel Corp. Bus 002 Device 002: ID 8087:8000 Intel Corp. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0c45:649d Microdia Bus 001 Device 002: ID 8087:8008 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub When I run lsusb -t print these lines: 2-1.8:0.0: No such file or directory 2-1.8:0.1: No such file or directory and then enter infinite loop. I detected that infinite loop is in append_businterface function: code from lsusb-t.c file: while (i->next) i = i->next; Here is output from gdb which proves it: $ gdb --args lsusb -t GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". For bug reporting instructions, please see: <http://bugs.launchpad.net/gdb-linaro/>... Reading symbols from /usr/bin/lsusb...Reading symbols from /usr/lib/debug/usr/bin/lsusb...done. done. (gdb) r Starting program: /usr/bin/lsusb -t warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7ffff6fbb700 (LWP 9977)] 2-1.8:0.0: No such file or directory 2-1.8:0.1: No such file or directory ^C Program received signal SIGINT, Interrupt. 0x000000000040a8e7 in append_businterface (new=0x61c220, busnum=<optimized out>) at ../lsusb-t.c:279 279 while (i->next) (gdb) bt #0 0x000000000040a8e7 in append_businterface (new=0x61c220, busnum=<optimized out>) at ../lsusb-t.c:279 #1 assign_interface_to_parent (d=0x61f430, i=0x61c220) at ../lsusb-t.c:542 #2 0x000000000040b6bb in connect_devices () at ../lsusb-t.c:562 #3 lsusb_t () at ../lsusb-t.c:704 #4 0x0000000000401c9e in treedump () at ../lsusb.c:3912 #5 0x00000000004019ed in main (argc=2, argv=0x7fffffffdeb8) at ../lsusb.c:4039 (gdb) print i $1 = (struct usbinterface *) 0x61bfd0 (gdb) print *i $2 = {list = {next = 0x61c220, prev = 0x61bd80}, next = 0x61c220, parent = 0x0, configuration = 0, ifnum = 0, bAlternateSetting = 0, bInterfaceClass = 254, bInterfaceNumber = 0, bInterfaceProtocol = 0, bInterfaceSubClass = 0, bNumEndpoints = 3, name = "2-1.8:0.0", '\000' <repeats 245 times>, driver = '\000' <repeats 254 times>} (gdb) print *i->next $3 = {list = {next = 0x61c470, prev = 0x61bfd0}, next = 0x61bfd0, parent = 0x0, configuration = 0, ifnum = 1, bAlternateSetting = 0, bInterfaceClass = 11, bInterfaceNumber = 1, bInterfaceProtocol = 0, bInterfaceSubClass = 0, bNumEndpoints = 3, name = "2-1.8:0.1", '\000' <repeats 245 times>, driver = '\000' <repeats 254 times>} (gdb) print *i->next->next $4 = {list = {next = 0x61c220, prev = 0x61bd80}, next = 0x61c220, parent = 0x0, configuration = 0, ifnum = 0, bAlternateSetting = 0, bInterfaceClass = 254, bInterfaceNumber = 0, bInterfaceProtocol = 0, bInterfaceSubClass = 0, bNumEndpoints = 3, name = "2-1.8:0.0", '\000' <repeats 245 times>, driver = '\000' <repeats 254 times>} (gdb) print *i->next->next->next $5 = {list = {next = 0x61c470, prev = 0x61bfd0}, next = 0x61bfd0, parent = 0x0, configuration = 0, ifnum = 1, bAlternateSetting = 0, bInterfaceClass = 11, bInterfaceNumber = 1, bInterfaceProtocol = 0, bInterfaceSubClass = 0, bNumEndpoints = 3, name = "2-1.8:0.1", '\000' <repeats 245 times>, driver = '\000' <repeats 254 times>} (gdb) print *i->next->next->next->next $6 = {list = {next = 0x61c220, prev = 0x61bd80}, next = 0x61c220, parent = 0x0, configuration = 0, ifnum = 0, bAlternateSetting = 0, bInterfaceClass = 254, bInterfaceNumber = 0, bInterfaceProtocol = 0, bInterfaceSubClass = 0, bNumEndpoints = 3, name = "2-1.8:0.0", '\000' <repeats 245 times>, driver = '\000' <repeats 254 times>} (gdb) print *i->next->next->next->next->next $7 = {list = {next = 0x61c470, prev = 0x61bfd0}, next = 0x61bfd0, parent = 0x0, configuration = 0, ifnum = 1, bAlternateSetting = 0, bInterfaceClass = 11, bInterfaceNumber = 1, bInterfaceProtocol = 0, bInterfaceSubClass = 0, bNumEndpoints = 3, name = "2-1.8:0.1", '\000' <repeats 245 times>, driver = '\000' <repeats 254 times>} As you can see struct usbinterface *i has cyclic reference to itself. Aurelien Jarno, can you look at it? Or do you need some other tests/logs? -- Pali Rohár pali.ro...@gmail.com
signature.asc
Description: This is a digitally signed message part.