@murph:
can you try the patch here:
http://trac.xbmc.org/ticket/8680
Hoepfully it will REALLY get rid of the BACKEND_MESSAGE stuff
Additionally, can you add this:
Code:
Index: xbmc/lib/cmyth/libcmyth/proginfo.c
===================================================================
--- xbmc/lib/cmyth/libcmyth/proginfo.c (revision 34958)
+++ xbmc/lib/cmyth/libcmyth/proginfo.c (working copy)
@@ -1463,6 +1463,8 @@
length = prog->proginfo_Length;
if ((ret=fill_command(control, prog, "FILL_PROGRAM_INFO") != 0))
+ cmyth_dbg(CMYTH_DBG_ERROR, "%s: failed to send 'FILL_PROGRAM_INFO', received '%d'\n",
+ __FUNCTION__, ret);
goto out;
count = cmyth_rcv_length(control);
@@ -1490,6 +1492,8 @@
* number is still probably wrong, but it's better than 0.
*/
if (prog->proginfo_Length == 0) {
+ cmyth_dbg(CMYTH_DBG_ERROR, "%s: proginfo length was 0\n",
+ __FUNCTION__);
prog->proginfo_Length = length;
ret = -1;
goto out;
That should tell us why proginfo_fill is failing
The ulong -1 is still a mystery, but I've looked at all calls to cmyth_rcv_ulong
outside of proginfo_fill (which should not be the cause given the order of error messages), and excluding any cases that would thow a message we don't see, and only came up with 2 cases:
- cmyth_rcv_version
cmyth_conn_check_block
So here is a patch to check to see if either of those are giving us trouble:
Code:
Index: xbmc/lib/cmyth/libcmyth/connection.c
===================================================================
--- xbmc/lib/cmyth/libcmyth/connection.c (revision 34958)
+++ xbmc/lib/cmyth/libcmyth/connection.c (working copy)
@@ -888,6 +888,9 @@
}
cmyth_rcv_ulong(conn, &err, &sent, length);
if (err) {
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_ulong failed\n",
+ __FUNCTION__);
return -err;
}
if (sent == size) {
Index: xbmc/lib/cmyth/libcmyth/socket.c
===================================================================
--- xbmc/lib/cmyth/libcmyth/socket.c (revision 34958)
+++ xbmc/lib/cmyth/libcmyth/socket.c (working copy)
@@ -705,6 +705,10 @@
"%s: did not consume everything %d < %d\n",
__FUNCTION__, consumed, len);
}
+ if(err)
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_ulong() failed (%d)\n",
+ __FUNCTION__, consumed);
return -err;
}
If that doesn't help, the easiest thing to do is to use gdb as I asked of outleradam:
Code:
make clean
./configure -disable-optimizations
make
gdb <path to xbmc.bin>
break socket.c:484
run
(you probably need to setup xbmc to run in windowed mode, since once it hits that line of code, xbmc will hang)
then in gdb:
bt full (send this to me)
quit