Menu

#11 Segfault/Memory corruption if USB device inaccessible

0.10
closed-fixed
UrJTAG (101)
5
2007-11-25
2007-11-22
No

Using libftdi.

For example if I try to use the ftdi-mpsse driver and a device exists, but permissions are insufficient, I get the following dump:

jtag> cable ftdi-mpsse 0d06:0382 ARM-USB-OCD
Initializing Olimex ARM-USB-OCD (FT2232) Cable on FTDI device 0d06:0382
Can't open ftdi device: inappropriate permissions on device!
Error: Cable initialization failed!
*** glibc detected *** jtag: double free or corruption (fasttop): 0x00000000006725c0 ***
======= Backtrace: =========
/lib/libc.so.6[0x2b77fffdeb0a]
/lib/libc.so.6(cfree+0x8c)[0x2b77fffe26fc]
/lib/libusb-0.1.so.4(usb_close+0x21)[0x2b77ffd668f1]
/usr/lib/libftdi.so.0(ftdi_usb_close+0x2c)[0x2b77ffb625cc]
jtag[0x40956d]
jtag[0x406049]
jtag[0x40ddbd]
jtag[0x40a966]
jtag[0x402b28]
jtag[0x402d8d]
/lib/libc.so.6(__libc_start_main+0xf4)[0x2b77fff8ab44]
jtag[0x402959]

A quick check whether it happens with the ftdi driver - yes:

jtag> cable ftdi 09fb:6001 UsbBlaster
Initializing Altera USB-Blaster Cable on FTDI device 09fb:6001
Segmentation fault (core dumped)

Discussion

  • Kolja Waschk

    Kolja Waschk - 2007-11-22

    Logged In: YES
    user_id=478715
    Originator: YES

    gdb backtrace:

    #0 0x00002b70160aa765 in raise () from /lib/libc.so.6
    #1 0x00002b70160ac1c0 in abort () from /lib/libc.so.6
    #2 0x00002b70160e360b in ?? () from /lib/libc.so.6
    #3 0x00002b70160ebdec in ?? () from /lib/libc.so.6
    #4 0x00002b70160ece23 in malloc () from /lib/libc.so.6
    #5 0x00002b7015e752ff in usb_os_find_devices () from /lib/libusb-0.1.so.4
    #6 0x00002b7015e72c22 in usb_find_devices () from /lib/libusb-0.1.so.4
    #7 0x00002b7015c6e7cb in ftdi_usb_open_desc () from /usr/lib/libftdi.so.0
    #8 0x0000000000408ced in ftdi_generic_open (parport=<value optimized out>) at parport/ftdi.c:243
    #9 0x0000000000409592 in ftdi_std_open (parport=0x1aff) at parport/ftdi.c:272
    #10 0x0000000000407552 in usbblaster_init (cable=0x65b6c0) at cable/usbblaster.c:48
    #11 0x000000000040dd26 in cmd_cable_run (params=0x65b580) at cable.c:68
    #12 0x000000000040a966 in cmd_run (params=0x65b580) at cmd/cmd.c:42
    #13 0x0000000000402b28 in jtag_parse_line (line=<value optimized out>) at jtag.c:177
    #14 0x0000000000402d8d in main (argc=1, argv=<value optimized out>) at jtag.c:203

     
  • Kolja Waschk

    Kolja Waschk - 2007-11-22

    Logged In: YES
    user_id=478715
    Originator: YES

    There actually seem to be TWO problems. The other backtrace was from a segfault. The following one is for the case that lack of permission is correctly detected, but then cleanup fails (that's the case for which I originally opened the bug):

    jtag> cable ftdi 09fb:6001 UsbBlaster
    Initializing Altera USB-Blaster Cable on FTDI device 09fb:6001
    Can't open ftdi device: inappropriate permissions on device!
    Error: Cable initialization failed!
    *** glibc detected *** /home/kawk/work/urjtag/trunk/owjtag/src/jtag: double free or corruption (fasttop):

    #0 0x00002b57978da765 in raise () from /lib/libc.so.6
    #1 0x00002b57978dc1c0 in abort () from /lib/libc.so.6
    #2 0x00002b579791360b in ?? () from /lib/libc.so.6
    #3 0x00002b579791ab0a in ?? () from /lib/libc.so.6
    #4 0x00002b579791e6fc in free () from /lib/libc.so.6
    #5 0x00002b57976a28f1 in usb_close () from /lib/libusb-0.1.so.4
    #6 0x00002b579749e5cc in ftdi_usb_close () from /usr/lib/libftdi.so.0
    #7 0x000000000040958d in ftdi_close (parport=<value optimized out>) at parport/ftdi.c:435
    #8 0x0000000000406049 in chain_disconnect (chain=0x645340) at chain.c:67
    #9 0x000000000040dddd in cmd_cable_run (params=0x65b540) at cable.c:70
    #10 0x000000000040a986 in cmd_run (params=0x65b540) at cmd/cmd.c:42
    #11 0x0000000000402b28 in jtag_parse_line (line=<value optimized out>) at jtag.c:177
    #12 0x0000000000402d8d in main (argc=1, argv=<value optimized out>) at jtag.c:203

     
  • Kolja Waschk

    Kolja Waschk - 2007-11-22

    Logged In: YES
    user_id=478715
    Originator: YES

    A plain segfault occurs if the device isn't there at all:

    jtag> cable ftdi 09fb:6001 UsbBlaster
    Initializing Altera USB-Blaster Cable on FTDI device 09fb:6001
    Can't open ftdi device: device not found
    Error: Cable initialization failed!

    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 47186968530848 (LWP 7877)]
    0x00002aea91c184a7 in usb_control_msg () from /lib/libusb-0.1.so.4
    (gdb) backtrace
    #0 0x00002aea91c184a7 in usb_control_msg () from /lib/libusb-0.1.so.4
    #1 0x00002aea91a119c1 in ftdi_disable_bitbang () from /usr/lib/libftdi.so.0
    #2 0x0000000000409584 in ftdi_close (parport=<value optimized out>) at parport/ftdi.c:434
    #3 0x0000000000406049 in chain_disconnect (chain=0x645340) at chain.c:67
    #4 0x000000000040dddd in cmd_cable_run (params=0x65b610) at cable.c:70
    #5 0x000000000040a986 in cmd_run (params=0x65b610) at cmd/cmd.c:42
    #6 0x0000000000402b28 in jtag_parse_line (line=<value optimized out>) at jtag.c:177
    #7 0x0000000000402d8d in main (argc=1, argv=<value optimized out>) at jtag.c:203

    BTW, I used libusb-0.1.12 and libftdi 0.10 (Ubuntu 7.10 standard)

     
  • Arnim Läuger

    Arnim Läuger - 2007-11-25

    Logged In: YES
    user_id=156321
    Originator: NO

    Problem addressed in revision 784. Please check whether this fixes the problem for you as well.

    Device not present case:
    jtag> cable ftdi 09fb:6001 UsbBlaster
    Initializing Altera USB-Blaster Cable on FTDI device 09fb:6001
    Can't open ftdi device: device not found
    Error: Cable initialization failed!
    jtag>

    Present but no permissions case:
    jtag> cable ftd2xx-mpsse 15ba:0003 ARM-USB-OCD
    Initializing Olimex ARM-USB-OCD (FT2232) Cable on FTDI device 15ba:0003
    Error: unable to open FTDI device: 3
    Error: Cable initialization failed!
    jtag>

     
  • Arnim Läuger

    Arnim Läuger - 2007-11-25
    • assigned_to: nobody --> arniml
    • status: open --> open-fixed
     
  • Kolja Waschk

    Kolja Waschk - 2007-11-25
    • status: open-fixed --> closed-fixed
     
  • Kolja Waschk

    Kolja Waschk - 2007-11-25

    Logged In: YES
    user_id=478715
    Originator: YES

    Works for me too, thanks!

     
  • Kolja Waschk

    Kolja Waschk - 2017-02-12
    • Group: 0.x --> 0.10
     

Log in to post a comment.