Page 10 of 13

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Wed Feb 22, 2012 8:00 pm
by hasse69
Ok, your system looks fine. Actually it might be that the abort you get is because it is doing the *right* thing ;)
I actually was able to reproduce a similar scenario with a simple test application on another machine, using pthread_cancel but not pthread_exit.
The thread that dies and results in the abort should really have nothing to do with the C++ destructors etc that float around.
But for some reason the forced unwind of the stack cause problems, at least on your system. I attach a new version of rar2fs.c here.
I have removed what I think is the failing call to pthread_exit. This is the next release candidate. I will officially remove all but one
call to pthread_exit in the trunk since, obviously, I have no control over them :?

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Wed Feb 22, 2012 8:22 pm
by juusso
Just few seconds...

Code: Select all

# rar2fs --exclude=.lock --fake-iso --seek-length=2 -o allow_other ./Shrek.3D.rar ./test -f
rar2_init()
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_readdir2()   /
listrar()   /   arch=/dtv/usb/sda/TV/rar/Shrek.3D.rar
Looking up /Shrek.3D.avi in cache
Adding /Shrek.3D.avi to cache
rar2_getattr2()   /Shrek.3D.avi
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /Shrek.3D.avi
rar2_getattr2()   /Shrek.3D.trp
MISS    /Shrek.3D.trp   (collision: no)
rar2_open()   /Shrek.3D.avi
(00863) OPEN    /Shrek.3D.avi [0x0][called from 00288]
(00863) ALLOC   /Shrek.3D.avi [0xa86d0         ]
PIPE 0xa8740 created towards child 926
Reader thread started, fp=0xa8740
preload_index()   /Shrek.3D.avi
Preloading index for /dtv/usb/sda/TV/rar/Shrek.3D.r2i
Reader thread wakeup, select()=1
rar2_read()   /Shrek.3D.avi   size=16384, offset=0, fh=689872
PID 00863 calling lread_rar(), seq = 1, size=16384, offset=0/0
Reader thread wakeup, select()=1
Reader thread acknowledge
1083434128 thread wakeup (1, 1)
lread_rar: RETURN 16384
Reader thread wakeup, select()=1
rar2_flush()   /Shrek.3D.avi
(00863) FLUSH   /Shrek.3D.avi [0xa86d0         ][called from 00288]
lflush()   /Shrek.3D.avi
rar2_release()   /Shrek.3D.avi
(00863) RELEASE /Shrek.3D.avi [0xa86d0         ]
Reader thread wakeup, select()=1
Reader thread stopped
PIPE 0xa8740 closed towards child 00926
(00863) FREE    /Shrek.3D.avi [0xa86d0         ]
rar2_getattr2()   /Shrek.3D.smi
MISS    /Shrek.3D.smi   (collision: no)
rar2_getattr2()   /Shrek.3D.SMI
MISS    /Shrek.3D.SMI   (collision: no)
rar2_getattr2()   /Shrek.3D.srt
MISS    /Shrek.3D.srt   (collision: no)
rar2_getattr2()   /Shrek.3D.SRT
MISS    /Shrek.3D.SRT   (collision: no)
rar2_getattr2()   /Shrek.3D.sub
MISS    /Shrek.3D.sub   (collision: no)
rar2_getattr2()   /Shrek.3D.SUB
MISS    /Shrek.3D.SUB   (collision: no)
rar2_getattr2()   /Shrek.3D.ttxt
MISS    /Shrek.3D.ttxt   (collision: no)
rar2_getattr2()   /Shrek.3D.TTXT
MISS    /Shrek.3D.TTXT   (collision: no)
rar2_getattr2()   /Shrek.3D.txt
MISS    /Shrek.3D.txt   (collision: no)
rar2_getattr2()   /Shrek.3D.TXT
MISS    /Shrek.3D.TXT   (collision: no)
rar2_getattr2()   /Shrek.3D.avi
rar2_open()   /Shrek.3D.avi
(00863) OPEN    /Shrek.3D.avi [0x0][called from 00288]
(00863) ALLOC   /Shrek.3D.avi [0xa86d0         ]
PIPE 0xa8740 created towards child 929
Reader thread started, fp=0xa8740
preload_index()   /Shrek.3D.avi
Preloading index for /dtv/usb/sda/TV/rar/Shrek.3D.r2i
rar2_flush()   /Shrek.3D.avi
(00863) FLUSH   /Shrek.3D.avi [0xa86d0         ][called from 00288]
lflush()   /Shrek.3D.avi
rar2_release()   /Shrek.3D.avi
(00863) RELEASE /Shrek.3D.avi [0xa86d0         ]
Reader thread wakeup, select()=1
Reader thread stopped
PIPE 0xa8740 closed towards child 00929
(00863) FREE    /Shrek.3D.avi [0xa86d0         ]
rar2_open()   /Shrek.3D.avi
(00863) OPEN    /Shrek.3D.avi [0x0][called from 00288]
(00863) ALLOC   /Shrek.3D.avi [0xa86d0         ]
PIPE 0xa8740 created towards child 931
Reader thread started, fp=0xa8740
preload_index()   /Shrek.3D.avi
Preloading index for /dtv/usb/sda/TV/rar/Shrek.3D.r2i
rar2_read()   /Shrek.3D.avi   size=49152, offset=16384, fh=689872
PID 00863 calling lread_rar(), seq = 1, size=49152, offset=16384/0
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread acknowledge
1083434128 thread wakeup (1, 1)
lread_rar: RETURN 49152
rar2_getattr2()   /Shrek.3D.avi
rar2_read()   /Shrek.3D.avi   size=36864, offset=182042624, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=36864, offset=182042624/65536
lread_rar: RETURN 36864
rar2_read()   /Shrek.3D.avi   size=65536, offset=182079488, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=65536, offset=182079488/65536
lread_rar: RETURN 65536
rar2_read()   /Shrek.3D.avi   size=131072, offset=182145024, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=131072, offset=182145024/65536
lread_rar: RETURN 131072
Reader thread wakeup, select()=1
rar2_read()   /Shrek.3D.avi   size=131072, offset=182276096, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=131072, offset=182276096/65536
lread_rar: RETURN 131072
rar2_read()   /Shrek.3D.avi   size=131072, offset=182407168, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=131072, offset=182407168/65536
lread_rar: RETURN 131072
rar2_read()   /Shrek.3D.avi   size=131072, offset=182538240, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=131072, offset=182538240/65536
lread_rar: RETURN 131072
rar2_read()   /Shrek.3D.avi   size=131072, offset=182669312, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=131072, offset=182669312/65536
lread_rar: RETURN 131072
rar2_read()   /Shrek.3D.avi   size=131072, offset=182800384, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=131072, offset=182800384/65536
lread_rar: RETURN 131072
rar2_read()   /Shrek.3D.avi   size=73728, offset=182931456, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=73728, offset=182931456/65536
lread_rar: RETURN 73728
rar2_getattr2()   /Shrek.3D.avi
rar2_flush()   /Shrek.3D.avi
(00863) FLUSH   /Shrek.3D.avi [0xa86d0         ][called from 00288]
lflush()   /Shrek.3D.avi
rar2_release()   /Shrek.3D.avi
(00863) RELEASE /Shrek.3D.avi [0xa86d0         ]
Reader thread stopped
PIPE 0xa8740 closed towards child 00931
(00863) FREE    /Shrek.3D.avi [0xa86d0         ]
rar2_getattr2()   /Shrek.3D.avi
rar2_open()   /Shrek.3D.avi
(00863) OPEN    /Shrek.3D.avi [0x0][called from 00288]
(00863) ALLOC   /Shrek.3D.avi [0xa86d0         ]
PIPE 0xa8740 created towards child 937
Reader thread started, fp=0xa8740
preload_index()   /Shrek.3D.avi
Preloading index for /dtv/usb/sda/TV/rar/Shrek.3D.r2i
rar2_read()   /Shrek.3D.avi   size=4096, offset=0, fh=689872
PID 00863 calling lread_rar(), seq = 1, size=4096, offset=0/0
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread acknowledge
1083434128 thread wakeup (1, 1)
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=4096, fh=689872
PID 00863 calling lread_rar(), seq = 2, size=4096, offset=4096/4096
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=8192, fh=689872
PID 00863 calling lread_rar(), seq = 3, size=4096, offset=8192/8192
lread_rar: RETURN 4096
rar2_getattr2()   /Shrek.3D.avi
rar2_read()   /Shrek.3D.avi   size=4096, offset=0, fh=689872
PID 00863 calling lread_rar(), seq = 4, size=4096, offset=0/12288
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=8192, fh=689872
PID 00863 calling lread_rar(), seq = 5, size=4096, offset=8192/12288
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=182042624, fh=689872
PID 00863 calling lread_rar(), seq = 6, size=4096, offset=182042624/12288
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=0, fh=689872
PID 00863 calling lread_rar(), seq = 6, size=4096, offset=0/12288
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=8192, fh=689872
PID 00863 calling lread_rar(), seq = 7, size=4096, offset=8192/12288
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=12288, fh=689872
PID 00863 calling lread_rar(), seq = 8, size=4096, offset=12288/12288
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=8192, fh=689872
PID 00863 calling lread_rar(), seq = 9, size=4096, offset=8192/16384
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=12288, fh=689872
PID 00863 calling lread_rar(), seq = 10, size=4096, offset=12288/16384
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=16384, fh=689872
PID 00863 calling lread_rar(), seq = 11, size=4096, offset=16384/16384
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=12288, fh=689872
PID 00863 calling lread_rar(), seq = 12, size=4096, offset=12288/20480
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=16384, fh=689872
PID 00863 calling lread_rar(), seq = 13, size=4096, offset=16384/20480
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=20480, fh=689872
PID 00863 calling lread_rar(), seq = 14, size=4096, offset=20480/20480
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=16384, fh=689872
PID 00863 calling lread_rar(), seq = 15, size=4096, offset=16384/24576
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=20480, fh=689872
PID 00863 calling lread_rar(), seq = 16, size=4096, offset=20480/24576
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=24576, fh=689872
PID 00863 calling lread_rar(), seq = 17, size=4096, offset=24576/24576
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=20480, fh=689872
PID 00863 calling lread_rar(), seq = 18, size=4096, offset=20480/28672
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=24576, fh=689872
PID 00863 calling lread_rar(), seq = 19, size=4096, offset=24576/28672
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=28672, fh=689872
PID 00863 calling lread_rar(), seq = 20, size=4096, offset=28672/28672
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=24576, fh=689872
PID 00863 calling lread_rar(), seq = 21, size=4096, offset=24576/32768
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=28672, fh=689872
PID 00863 calling lread_rar(), seq = 22, size=4096, offset=28672/32768
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=32768, fh=689872
PID 00863 calling lread_rar(), seq = 23, size=4096, offset=32768/32768
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=28672, fh=689872
PID 00863 calling lread_rar(), seq = 24, size=4096, offset=28672/36864
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=32768, fh=689872
PID 00863 calling lread_rar(), seq = 25, size=4096, offset=32768/36864
lread_rar: RETURN 4096
Reader thread wakeup, select()=1
rar2_read()   /Shrek.3D.avi   size=4096, offset=36864, fh=689872
PID 00863 calling lread_rar(), seq = 26, size=4096, offset=36864/36864
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=32768, fh=689872
PID 00863 calling lread_rar(), seq = 27, size=4096, offset=32768/40960
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=36864, fh=689872
PID 00863 calling lread_rar(), seq = 28, size=4096, offset=36864/40960
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=40960, fh=689872
PID 00863 calling lread_rar(), seq = 29, size=4096, offset=40960/40960
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=36864, fh=689872
PID 00863 calling lread_rar(), seq = 30, size=4096, offset=36864/45056
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=40960, fh=689872
PID 00863 calling lread_rar(), seq = 31, size=4096, offset=40960/45056
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=45056, fh=689872
PID 00863 calling lread_rar(), seq = 32, size=4096, offset=45056/45056
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=40960, fh=689872
PID 00863 calling lread_rar(), seq = 33, size=4096, offset=40960/49152
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=45056, fh=689872
PID 00863 calling lread_rar(), seq = 34, size=4096, offset=45056/49152
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=49152, fh=689872
PID 00863 calling lread_rar(), seq = 35, size=4096, offset=49152/49152
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=45056, fh=689872
PID 00863 calling lread_rar(), seq = 36, size=4096, offset=45056/53248
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=49152, fh=689872
PID 00863 calling lread_rar(), seq = 37, size=4096, offset=49152/53248
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=53248, fh=689872
PID 00863 calling lread_rar(), seq = 38, size=4096, offset=53248/53248
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=49152, fh=689872
PID 00863 calling lread_rar(), seq = 39, size=4096, offset=49152/57344
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=53248, fh=689872
PID 00863 calling lread_rar(), seq = 40, size=4096, offset=53248/57344
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=57344, fh=689872
PID 00863 calling lread_rar(), seq = 41, size=4096, offset=57344/57344
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=53248, fh=689872
PID 00863 calling lread_rar(), seq = 42, size=4096, offset=53248/61440
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=57344, fh=689872
PID 00863 calling lread_rar(), seq = 43, size=4096, offset=57344/61440
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=61440, fh=689872
PID 00863 calling lread_rar(), seq = 44, size=4096, offset=61440/61440
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=57344, fh=689872
PID 00863 calling lread_rar(), seq = 45, size=4096, offset=57344/65536
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=61440, fh=689872
PID 00863 calling lread_rar(), seq = 46, size=4096, offset=61440/65536
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=65536, fh=689872
PID 00863 calling lread_rar(), seq = 47, size=4096, offset=65536/65536
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=61440, fh=689872
PID 00863 calling lread_rar(), seq = 48, size=4096, offset=61440/69632
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=65536, fh=689872
PID 00863 calling lread_rar(), seq = 49, size=4096, offset=65536/69632
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=69632, fh=689872
PID 00863 calling lread_rar(), seq = 50, size=4096, offset=69632/69632
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=65536, fh=689872
PID 00863 calling lread_rar(), seq = 51, size=4096, offset=65536/73728
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=69632, fh=689872
PID 00863 calling lread_rar(), seq = 52, size=4096, offset=69632/73728
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=73728, fh=689872
PID 00863 calling lread_rar(), seq = 53, size=4096, offset=73728/73728
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=69632, fh=689872
PID 00863 calling lread_rar(), seq = 54, size=4096, offset=69632/77824
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=73728, fh=689872
PID 00863 calling lread_rar(), seq = 55, size=4096, offset=73728/77824
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=77824, fh=689872
PID 00863 calling lread_rar(), seq = 56, size=4096, offset=77824/77824
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=73728, fh=689872
PID 00863 calling lread_rar(), seq = 57, size=4096, offset=73728/81920
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=77824, fh=689872
PID 00863 calling lread_rar(), seq = 58, size=4096, offset=77824/81920
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=90112, fh=689872
PID 00863 calling lread_rar(), seq = 59, size=4096, offset=90112/81920
lread_rar: RETURN 4096
rar2_read()   /Shrek.3D.avi   size=4096, offset=77824, fh=689872
PID 00863 calling lread_rar(), seq = 60, size=4096, offset=77824/94208
lread_rar: RETURN 4096
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
Reader thread wakeup, select()=1
rar2_flush()   /Shrek.3D.avi
(00863) FLUSH   /Shrek.3D.avi [0xa86d0         ][called from 00288]
lflush()   /Shrek.3D.avi
rar2_release()   /Shrek.3D.avi
(00863) RELEASE /Shrek.3D.avi [0xa86d0         ]
Reader thread wakeup, select()=1
Reader thread stopped
PIPE 0xa8740 closed towards child 00937
(00863) FREE    /Shrek.3D.avi [0xa86d0         ]

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Wed Feb 22, 2012 10:06 pm
by hasse69
juuso wrote:Just few seconds...
Yes. This was expected. Nothing I can do really about this particular file not being able to playback properly without the .r2i file :(
As I said before, playback of compressed archives is best-effort. There are no guarantees. But the application should never crash which I think is not the case anymore?

Can you also try this patch? If all is ok it should actually crash :)

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Thu Feb 23, 2012 5:23 am
by juusso
Yes, crashed. :roll:

Code: Select all

# rar2fs --exclude=.lock --fake-iso --seek-length=2 -o allow_other ./Shrek.3D.rar ./test -f
rar2_init()
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_readdir2()   /
listrar()   /   arch=/dtv/usb/sda/TV/rar/Shrek.3D.rar
Looking up /Shrek.3D.avi in cache
Adding /Shrek.3D.avi to cache
rar2_getattr2()   /Shrek.3D.avi
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /Shrek.3D.avi
rar2_getattr2()   /Shrek.3D.trp
MISS    /Shrek.3D.trp   (collision: no)
rar2_open()   /Shrek.3D.avi
(00674) OPEN    /Shrek.3D.avi [0x0][called from 00271]
(00674) ALLOC   /Shrek.3D.avi [0xa86d0         ]
PIPE 0xa8740 created towards child 712
Reader thread started, fp=0xa8740
preload_index()   /Shrek.3D.avi
Preloading index for /dtv/usb/sda/TV/rar/Shrek.3D.r2i
Reader thread wakeup, select()=1
rar2_read()   /Shrek.3D.avi   size=16384, offset=0, fh=689872
PID 00674 calling lread_rar(), seq = 1, size=16384, offset=0/0
Reader thread wakeup, select()=1
Reader thread acknowledge
1083434128 thread wakeup (1, 1)
lread_rar: RETURN 16384
rar2_flush()   /Shrek.3D.avi
(00674) FLUSH   /Shrek.3D.avi [0xa86d0         ][called from 00271]
lflush()   /Shrek.3D.avi
rar2_release()   /Shrek.3D.avi
(00674) RELEASE /Shrek.3D.avi [0xa86d0         ]
Reader thread stopped
terminate called without an active exception
Aborted (core dumped)
#

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Thu Feb 23, 2012 7:37 am
by hasse69
juuso wrote:Yes, crashed. :roll:
No problem. Also this was expected. Now I know exactly where the call to pthread_exit() is causing the crash.
Its annoying but I will remove this call in the next release of rar2fs. It is safe to do it and possible since I do
not expect any result code from this thread.
To better understand what is going on with your short playback time when you have no .r2i file it would
require that I can obtain the same rar file from somewhere :(
What I can test is if other media players also behave the same or if this is unique to your system.

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Thu Feb 23, 2012 8:21 am
by hasse69
Using the previous patch that crashed, can you also try this.
The file errhnd.hpp should go into the unrar folder. You need to rebuild libunrar.so and replace it on target.

EDIT: Question, do you observe this crash also when running rar2fs on your NAS or is it only on your target?

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Thu Feb 23, 2012 10:11 am
by juusso
All tests we have made these days - only on Samsung TV. I haven`t checked it on NAS.
Now i`m away from TV until tomorrow, so new tests are postponed. :roll:

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Fri Feb 24, 2012 9:29 am
by juusso
hasse69 wrote:Using the previous patch that crashed, can you also try this.
The file errhnd.hpp should go into the unrar folder. You need to rebuild libunrar.so and replace it on target.
Using same known shrek movie... (haven`t found any other...)

Code: Select all

# rar2fs --exclude=.lock --fake-iso --seek-length=2 -o allow_other ./Shrek.3D.rar ./test -f
rar2_init()
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_readdir2()   /
listrar()   /   arch=/dtv/usb/sda/TV/rar/Shrek.3D.rar
Looking up /Shrek.3D.avi in cache
Adding /Shrek.3D.avi to cache
rar2_getattr2()   /Shrek.3D.avi
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /
MISS    /   (collision: no)
STAT retrieved for /dtv/usb/sda/TV/rar/
rar2_getattr2()   /Shrek.3D.avi
rar2_getattr2()   /Shrek.3D.trp
MISS    /Shrek.3D.trp   (collision: no)
rar2_open()   /Shrek.3D.avi
(00573) OPEN    /Shrek.3D.avi [0x0][called from 00276]
(00573) ALLOC   /Shrek.3D.avi [0xa86d0         ]
PIPE 0xa8740 created towards child 610
Reader thread started, fp=0xa8740
preload_index()   /Shrek.3D.avi
Preloading index for /dtv/usb/sda/TV/rar/Shrek.3D.r2i
Reader thread wakeup, select()=1
rar2_read()   /Shrek.3D.avi   size=16384, offset=0, fh=689872
PID 00573 calling lread_rar(), seq = 1, size=16384, offset=0/0
Reader thread wakeup, select()=1
Reader thread acknowledge
1083434128 thread wakeup (1, 1)
lread_rar: RETURN 16384
Reader thread wakeup, select()=1
rar2_flush()   /Shrek.3D.avi
(00573) FLUSH   /Shrek.3D.avi [0xa86d0         ][called from 00276]
lflush()   /Shrek.3D.avi
rar2_release()   /Shrek.3D.avi
(00573) RELEASE /Shrek.3D.avi [0xa86d0         ]
Reader thread wakeup, select()=1
Reader thread stopped
terminate called without an active exception
Aborted (core dumped)

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Fri Feb 24, 2012 2:27 pm
by hasse69
Ok, so this was a run using a new version of libunrar.so that had a patched errhnd.hpp file?
Bummer! Well it was a long shot just disabling the exception handling in libunrar.

Re: Play RAR files without extract them on SMB/NFS (RAR2FS?)

Posted: Fri Feb 24, 2012 2:34 pm
by juusso
Yes, this was running patched libunrar.so and patch9.