tags 745888 +upstream
thanks

Hi,

On 15:41 Mon 19 May     , Steve Graham wrote:
> Same behaviour as in previous report - jmtpfs returns with no error, 
> but any access to the
> supposedly mounted filesystem hangs until the jmtpfs process is 
> killed.
> 
> Replacing the file /usr/lib/x86_64-linux-gnu/libmtp.so.9.1.0 (400744 
> bytes) from the current version
> on unstable, AMD64, 1.1.6-51-g1a2669c~ds0-1, with 
> /usr/lib/x86_64-linux-gnu/libmtp.so.9.1.0 (388392
> bytes) from 1.1.6-20-g1b9f164-1~bpo70+1 seems to fix the problem. (I 
> downloaded the deb from
> wheezy-backports, and extracted and copied over the library as a quick test.)
> 
> Note that these two libraries with identical version numbers are 
> different files.

This is an upstream issue. Bisecting between upstream commits 1b9f164 
(good) and 1a2669c (bad) points out:

 b9a840c Async buffering for high-speed transfers.

as the culprit. Reverting this commit makes jmtpfs work again for me.

Now, this commit introduces a threaded bulk transfer worker for libusb 
1.x. A backtrace of the worker thread from a stuck jmtpfs process looks like
this:

Thread 3 (Thread 0x7f879a76c700 (LWP 22394)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:238
#1  0x00007f879ce75fe4 in libusb_wait_for_event (ctx=ctx@entry=0x1120b80, 
tv=tv@entry=0x7f879a76afa0)
    at ../../libusb/io.c:1832
#2  0x00007f879ce76487 in libusb_handle_events_timeout_completed 
(ctx=ctx@entry=0x1120b80, 
    tv=tv@entry=0x7f879a76afe0, completed=completed@entry=0x7f879a76b03c) at 
../../libusb/io.c:2159
#3  0x00007f879ce76540 in libusb_handle_events_completed 
(ctx=ctx@entry=0x1120b80, 
    completed=completed@entry=0x7f879a76b03c) at ../../libusb/io.c:2236
#4  0x00007f879ce76d91 in sync_transfer_wait_for_completion 
(transfer=transfer@entry=0x7f8794004c48)
    at ../../libusb/sync.c:50
#5  0x00007f879ce76e69 in do_sync_bulk_transfer (dev_handle=0x1130ec0, 
endpoint=<optimized out>, 
    buffer=buffer@entry=0x7f8794000be0 "\f", length=12, 
transferred=transferred@entry=0x7f879a76b0e4, 
    timeout=20000, type=type@entry=2 '\002') at ../../libusb/sync.c:179
#6  0x00007f879ce771f4 in libusb_bulk_transfer (dev_handle=<optimized out>, 
endpoint=<optimized out>, 
    data=data@entry=0x7f8794000be0 "\f", length=<optimized out>, 
    transferred=transferred@entry=0x7f879a76b0e4, timeout=<optimized out>) at 
../../libusb/sync.c:256
#7  0x00007f879d0bb35c in ptp_write_func (size=size@entry=12, data=0x1130c50, 
    written=written@entry=0x7f879a76b148, handler=0x7f879a76b150, 
handler=0x7f879a76b150)
    at libusb1-glue.c:1508
#8  0x00007f879d0bd92d in ptp_usb_sendreq (params=0x11232f0, 
req=0x7f879a76b770) at libusb1-glue.c:1700
#9  0x00007f879d0a9b6d in ptp_transaction_new (params=0x11232f0, 
ptp=0x7f879a76b770, 
    flags=<optimized out>, sendlen=0, handler=0x7f879a76b700) at ptp.c:156
#10 0x00007f879d0a9dc9 in ptp_transaction (params=params@entry=0x11232f0, 
    ptp=ptp@entry=0x7f879a76b770, flags=flags@entry=2, sendlen=sendlen@entry=0, 
    data=data@entry=0x7f879a76b768, recvlen=recvlen@entry=0x7f879a76b764) at 
ptp.c:404
#11 0x00007f879d0aacd4 in ptp_getstorageids (params=params@entry=0x11232f0, 
    storageids=storageids@entry=0x7f879a76b7e0) at ptp.c:1142
#12 0x00007f879d09f9f4 in LIBMTP_Get_Storage (device=0x11226f0, sortby=0) at 
libmtp.c:3999

It looks like it ends up in some kind of deadlock.

Regards,
Apollon


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to