[PATCH] main: Print interface information after it has been filled in

Tormod Volden lists.tormod at gmail.com
Tue May 24 11:05:29 CEST 2011


On Mon, May 23, 2011 at 8:17 PM, Stefan Schmidt wrote:
>> Sadly a problem on the freerunner persists in the libusb-1.0 branch
>> even with this patch applied. Trying to donwload something just dies
>> without segfault and leaves the following in dmesg:
>>
>> [1285088.771326] dfu-util[18547] general protection ip:4027f6 sp:7fffc6d2a610 error:0 in dfu-util[400000+6000]
>>
>> I know you don't have an freerunner so I will try to chase this down
>> the next days. Its the last blocker for getting the libusb-1.0 branch
>> merged into master.
>
> I spent some time on this at the weekend. It actually did work before
> in the libusb-1.0 branch. Your commit that fixed your device broke it
> for the freerunner:
>
> commit 6329fc0886049e0eb50c51e88b7fc52f056b83d4
> Author: Tormod Volden <debian.tormod at gmail.com>
> Date:   Thu Feb 3 23:12:35 2011 +0100
>
>    main: Use the config descriptor value, not the index
>
> Its libusb_get_config_descriptor_by_value() in print_dfu_if thats
> failing and thus the cfg being not populated. As you observed
> yourself.

Yes, libusb_get_config_descriptor_by_value() was failing because it is
called with dfu_if->configuration and dfu_if was not fully populated
so the "configuration" member was wrong. Before my commit "Use the
config descriptor value, not the index" this happened to work anyway
because the uninitialized value (zero) in most cases was correct
(index 0, the first one). On the other hand, the correct /value/ is
most of the times 1, so passing 0 will fail. This was fixed by the
patch in this thread. You still haven't applied it to the libusb-1.0
branch though. I hope you are always merging in master before you
build from libusb-1.0?

Tormod



More information about the devel mailing list