> list_for_each_entry() uses next as it steps through the list.
> list_for_each_entry_safe() avoids the problem by getting and saving the
> next pointer in a temporary before the loop body.
Ah right. I misread what you wrote and thought there was another issue
at hand there. Your patch looks good to me too.
I looked to see if we needed to apply a similar fix elsewhere but it
looks like only thread_windows.c used a list_del() in list_for_each_entry().
I have now pushed the NULLing of prev/next on deletion along with the
thread_windows fix to the repo.
Sebastian,
can you try recompiling and installing libusbx from the latest git
version? Be mindful that after picking up the repo using it, you will
need to run autogen.sh to get configure and makefile created for you.
While this latest change will not fix the issue, the expectation is that
it will help make it manifest itself sooner and give us more explicit
hints as to where the cause lies.
If you do observe the crash again, and since you're recompiling the
library, I would also advise you to try changing line 1307 in
libusb/io.c from:
if (r) {
to
if (r && (r != LIBUSB_ERROR_BUSY)) {
As explained previously, I'm seeing a small chance that your crash is
caused by a double deletion in the list if the same transfer is
submitted twice, and this change could help fix it.
Regards,
/Pete
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
libusbx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libusbx-devel