[mythtv] [mythtv-commits] Ticket #9196: Unable to play recordings on win32 build 0.24rc2

Jeff Lu jll544 at yahoo.com
Sun Nov 28 07:33:45 UTC 2010


>ASSERT failure in QReadWriteLock::unlock(): "Cannot unlock an unlocked lock"

This assert probably would show up on any platform when using debug Qt 
libraries. The problem is in the start-playback optimization of 
RingBuffer::Seek().  Lines 1989-1990 (RingBuffer.cpp, 0.24-fixes) attempt to 
unlock rbwlock and rbrlock, but the preceding code doesn't leave them in a 
locked state.

Ticket is locked, so I've copied below the relevant snippets of the log (-v 
file) and backtrace.  I can supply full versions if needed.

Jeff

---

FE Log:
2010-11-27 22:05:24.318 
RingBuf(myth://192.168.1.254:6543/1000_20101127154921.mpg): Initial 
readblocksize 128K & fill_min 32K
2010-11-27 22:05:24.584 
RingBuf(myth://192.168.1.254:6543/1000_20101127154921.mpg): 
Seek(468163656,SEEK_SET,unlocked)
2010-11-27 22:05:24.646 
RingBuf(myth://192.168.1.254:6543/1000_20101127154921.mpg): Seek(): rbrpos: 
196608 rbwpos: 655360
            readpos: 196608 internalreadpos: 655360
2010-11-27 22:05:24.646 
RingBuf(myth://192.168.1.254:6543/1000_20101127154921.mpg): Seek(): offset from 
end: 250000
             -- ignoring read ahead thread until next seek.
ASSERT failure in QReadWriteLock::unlock(): "Cannot unlock an unlocked lock", 
file thread\qreadwritelock.cpp, line 405


BT:
#0  qt_assert_x (where=0x6a2d7bbb "QReadWriteLock::unlock()",
    what=0x6a2d7b9c "Cannot unlock an unlocked lock",
    file=0x6a2d7ae3 "thread\\qreadwritelock.cpp", line=405)
    at global\qglobal.cpp:2019
No locals.
#1  0x6a111fbe in QReadWriteLock::unlock (this=0x257a3020)
    at thread\qreadwritelock.cpp:405
        lock = {val = 629648585}
        unlocked = 27
#2  0x148c63df in _fu1800__verbose_mutex () at RingBuffer.cpp:1989
        ret = 2704320080547676160
        off_end = 2704320080547676160
        ret = 468163656
        new_pos = 468163656
#3  0x148d9efe in AVF_Seek (h=0x262c6320, offset=468163656, whence=629648585)
    at avfringbuffer.cpp:45
        avfr = <value optimized out>
#4  0x18664c35 in url_fseek (s=0x262bcae0, offset=468163656,
    whence=<value optimized out>) at libavformat/aviobuf.c:183
        res = 2704320080547676160
        offset1 = <value optimized out>
        pos = 163841
#5  0x186cf3be in av_estimate_timings_from_pts (ic=0x262bcc30,
    old_offset=<value optimized out>) at libavformat/utils.c:1967
#6  0x186cf84a in av_estimate_timings (ic=0x262bcc30, old_offset=0)
    at libavformat/utils.c:2041
        file_size = <value optimized out>
#7  0x14c28717 in _fu3950__verbose_mutex () at avformatdecoder.cpp:925



      


More information about the mythtv-dev mailing list