[mythtv-users] Race condition

Kyle Rose krose+mythtv at krose.org
Wed Oct 6 05:09:27 UTC 2004


So, I got mythtv compiling with AMD64 tonight, but I am running into
some kind of race condition on playback.  Occasionally, everything
will work fine when I go to play back a recording; but about half the
time, I'll end up with

2004-10-06 01:04:15 mythfrontend version: 0.16.20040911-1 www.mythtv.org
2004-10-06 01:04:15 Enabled verbose msgs :all
2004-10-06 01:04:15 Registering Internal as a media playback plugin.
Error loading image file: /usr/local/share/mythtv/themes/default/NOTHING.png
2004-10-06 01:04:18 All Programs
2004-10-06 01:04:18 Connecting to backend server: 192.168.33.3:6543 (try 1 of 5)
2004-10-06 01:04:18 21      MYTH_PROTO_VERSION 13
2004-10-06 01:04:18 Using protocol version 13
2004-10-06 01:04:18 23      ANN Playback nausicaa 0
2004-10-06 01:04:18 21      QUERY_RECORDINGS Play
2004-10-06 01:04:18 21      MYTH_PROTO_VERSION 13
2004-10-06 01:04:18 Using protocol version 13
2004-10-06 01:04:18 23      ANN Playback nausicaa 1
2004-10-06 01:04:20 508     QUERY_CHECKFILE[]:[]4 WBZDT[]:[]2004-10-03 12:0...
2004-10-06 01:04:20 23      ANN Playback nausicaa 0
2004-10-06 01:04:20 69      ANN FileTransfer nausicaa[]:[]/3006_20041003120...
2004-10-06 01:04:20 Output filters for this channel are: 'kerneldeint,crop,'
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0
2004-10-06 01:04:20 50      QUERY_FILETRANSFER 25[]:[]REQUEST_BLOCK[]:[]128000
2004-10-06 01:04:20 Read(): reqd=128000, rcvd=128000, rept=128000, error=0

whereupon it blocks.  I don't have symbol information in the myth
modules since I can't compile the thing in debug mode (which I say
with a slight sneer), but if I break after waiting for a bit once the
log output stops, the top of the backtrace looks like this:

#0  0x0000002a97c2d0b5 in __nanosleep_nocancel () from /lib/libc.so.6
#1  0x0000002a97c4ea88 in usleep () from /lib/libc.so.6
#2  0x000000000043cfd7 in SelectSetting::~SelectSetting ()
#3  0x000000000043d947 in SelectSetting::~SelectSetting ()
#4  0x0000002a96d48d9c in QWidget::event () from /usr/lib/libqt-mt.so.3
#5  0x0000002a96cbe48d in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#6  0x0000002a96cbebb4 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#7  0x0000002a96c5c59d in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3
#8  0x0000002a96c62797 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
#9  0x0000002a96c7348b in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#10 0x0000002a96cd2415 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#11 0x0000002a963d16f6 in MythDialog::exec () from /usr/local/lib/libmyth-0.16.so.0
#12 0x0000000000424490 in ?? ()
#13 0x0000002a96380f6a in ThemedMenuPrivate::handleAction () from /usr/local/lib/libmyth-0.16.so.0
#14 0x0000002a963816d9 in ThemedMenuPrivate::keyPressHandler () from /usr/local/lib/libmyth-0.16.so.0
#15 0x0000002a9638183f in ThemedMenu::keyPressEvent () from /usr/local/lib/libmyth-0.16.so.0
#16 0x0000002a96d48d9c in QWidget::event () from /usr/lib/libqt-mt.so.3
#17 0x0000002a96cbe48d in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#18 0x0000002a96cbebb4 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#19 0x0000002a96d48d9c in QWidget::event () from /usr/lib/libqt-mt.so.3
#20 0x0000002a96cbe48d in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#21 0x0000002a96cbebb4 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#22 0x0000002a96c5c59d in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3
#23 0x0000002a96c62797 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
#24 0x0000002a96c7348b in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#25 0x0000002a96cd2415 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#26 0x0000002a963d16f6 in MythDialog::exec () from /usr/local/lib/libmyth-0.16.so.0
#27 0x000000000042199c in ?? ()
#29 0x0000002a97b9f3c1 in __libc_start_main () from /lib/libc.so.6

followed by lots of ?? () (342 total stack depth, to be exact).  I
notice that this problem becomes worse when I *remove* CPU-intensive
processing (e.g., removing denoise3d) which strongly suggests to me
that I'm running into some kind of race condition.

My system is a dual Opteron 244 with 4G RAM.  If I don't hear anything
back, I'll do some digging next week; but I'd be interested in knowing
if anyone else has any insight.  FWIW, when it works, it's SO much
faster than IA32 mode: I can't even watch HDTV in IA32 mode, but in
AMD64 mode I have about 34% idle CPU.

Cheers,
Kyle


More information about the mythtv-users mailing list